1
14
15 package com.liferay.portlet;
16
17 import com.liferay.portal.kernel.log.Log;
18 import com.liferay.portal.kernel.log.LogFactoryUtil;
19 import com.liferay.portal.util.PropsValues;
20
21 import javax.servlet.http.HttpServletResponse;
22
23 import org.apache.commons.pool.BasePoolableObjectFactory;
24 import org.apache.commons.pool.ObjectPool;
25 import org.apache.commons.pool.impl.StackObjectPool;
26
27
32 public class RenderResponseFactory {
33
34 public static RenderResponseImpl create(
35 RenderRequestImpl renderRequestImpl, HttpServletResponse response,
36 String portletName, long companyId)
37 throws Exception {
38
39 return create(renderRequestImpl, response, portletName, companyId, 0);
40 }
41
42 public static RenderResponseImpl create(
43 RenderRequestImpl renderRequestImpl, HttpServletResponse response,
44 String portletName, long companyId, long plid)
45 throws Exception {
46
47 if (PropsValues.COMMONS_POOL_ENABLED) {
48 if (_log.isDebugEnabled()) {
49 _log.debug(
50 "Borrowing:\t" + _instance._pool.getNumIdle() + "\t" +
51 _instance._pool.getNumActive());
52 }
53 }
54
55 RenderResponseImpl renderResponseImpl = null;
56
57 if (PropsValues.COMMONS_POOL_ENABLED) {
58 renderResponseImpl =
59 (RenderResponseImpl)_instance._pool.borrowObject();
60 }
61 else {
62 renderResponseImpl = new RenderResponseImpl();
63 }
64
65 renderResponseImpl.init(
66 renderRequestImpl, response, portletName, companyId, plid);
67
68 return renderResponseImpl;
69 }
70
71 public static void recycle(RenderResponseImpl renderResponseImpl)
72 throws Exception {
73
74 if (PropsValues.COMMONS_POOL_ENABLED) {
75 if (_log.isDebugEnabled()) {
76 _log.debug(
77 "Recycling:\t" + _instance._pool.getNumIdle() + "\t" +
78 _instance._pool.getNumActive());
79 }
80
81 _instance._pool.returnObject(renderResponseImpl);
82 }
83 else if (renderResponseImpl != null) {
84 renderResponseImpl.recycle();
85 }
86 }
87
88 private RenderResponseFactory() {
89 _pool = new StackObjectPool(new Factory());
90 }
91
92 private static Log _log = LogFactoryUtil.getLog(
93 RenderResponseFactory.class);
94
95 private static RenderResponseFactory _instance =
96 new RenderResponseFactory();
97
98 private ObjectPool _pool;
99
100 private class Factory extends BasePoolableObjectFactory {
101
102 public Object makeObject() {
103 return new RenderResponseImpl();
104 }
105
106 public void passivateObject(Object obj) {
107 RenderResponseImpl renderResponseImpl = (RenderResponseImpl)obj;
108
109 renderResponseImpl.recycle();
110 }
111
112 }
113
114 }