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