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