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 ResourceResponseFactory {
42
43 public static ResourceResponseImpl create(
44 ResourceRequestImpl resourceRequestImpl,
45 HttpServletResponse response, String portletName, long companyId)
46 throws Exception {
47
48 return create(resourceRequestImpl, response, portletName, companyId, 0);
49 }
50
51 public static ResourceResponseImpl create(
52 ResourceRequestImpl resourceRequestImpl,
53 HttpServletResponse response, String portletName, long companyId,
54 long plid)
55 throws Exception {
56
57 if (PropsValues.COMMONS_POOL_ENABLED) {
58 if (_log.isDebugEnabled()) {
59 _log.debug(
60 "Borrowing:\t" + _instance._pool.getNumIdle() + "\t" +
61 _instance._pool.getNumActive());
62 }
63 }
64
65 ResourceResponseImpl resourceResponseImpl = null;
66
67 if (PropsValues.COMMONS_POOL_ENABLED) {
68 resourceResponseImpl =
69 (ResourceResponseImpl)_instance._pool.borrowObject();
70 }
71 else {
72 resourceResponseImpl = new ResourceResponseImpl();
73 }
74
75 resourceResponseImpl.init(
76 resourceRequestImpl, response, portletName, companyId, plid);
77
78 return resourceResponseImpl;
79 }
80
81 public static void recycle(ResourceResponseImpl resourceResponseImpl)
82 throws Exception {
83
84 if (PropsValues.COMMONS_POOL_ENABLED) {
85 if (_log.isDebugEnabled()) {
86 _log.debug(
87 "Recycling:\t" + _instance._pool.getNumIdle() + "\t" +
88 _instance._pool.getNumActive());
89 }
90
91 _instance._pool.returnObject(resourceResponseImpl);
92 }
93 else if (resourceResponseImpl != null) {
94 resourceResponseImpl.recycle();
95 }
96 }
97
98 private ResourceResponseFactory() {
99 _pool = new StackObjectPool(new Factory());
100 }
101
102 private static Log _log = LogFactory.getLog(ResourceResponseFactory.class);
103
104 private static ResourceResponseFactory _instance =
105 new ResourceResponseFactory();
106
107 private ObjectPool _pool;
108
109 private class Factory extends BasePoolableObjectFactory {
110
111 public Object makeObject() {
112 return new ResourceResponseImpl();
113 }
114
115 public void passivateObject(Object obj) {
116 ResourceResponseImpl resourceResponseImpl =
117 (ResourceResponseImpl)obj;
118
119 resourceResponseImpl.recycle();
120 }
121
122 }
123
124 }