001
014
015 package com.liferay.portal.kernel.servlet;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.util.InstanceFactory;
020 import com.liferay.portal.kernel.util.StringUtil;
021
022 import java.util.List;
023 import java.util.concurrent.CopyOnWriteArrayList;
024
025 import javax.servlet.ServletContextEvent;
026 import javax.servlet.ServletContextListener;
027 import javax.servlet.ServletRequestAttributeEvent;
028 import javax.servlet.ServletRequestAttributeListener;
029 import javax.servlet.ServletRequestEvent;
030 import javax.servlet.ServletRequestListener;
031 import javax.servlet.http.HttpSessionActivationListener;
032 import javax.servlet.http.HttpSessionAttributeListener;
033 import javax.servlet.http.HttpSessionBindingEvent;
034 import javax.servlet.http.HttpSessionBindingListener;
035 import javax.servlet.http.HttpSessionEvent;
036 import javax.servlet.http.HttpSessionListener;
037
038
041 public class SecurePluginContextListener
042 extends PluginContextListener
043 implements HttpSessionActivationListener, HttpSessionAttributeListener,
044 HttpSessionBindingListener, HttpSessionListener,
045 ServletRequestAttributeListener, ServletRequestListener {
046
047 public void attributeAdded(
048 HttpSessionBindingEvent httpSessionBindingEvent) {
049
050 if (_httpSessionAttributeListeners == null) {
051 return;
052 }
053
054 for (HttpSessionAttributeListener httpSessionAttributeListener :
055 _httpSessionAttributeListeners) {
056
057 httpSessionAttributeListener.attributeAdded(
058 httpSessionBindingEvent);
059 }
060 }
061
062 public void attributeAdded(
063 ServletRequestAttributeEvent servletRequestAttributeEvent) {
064
065 if (_servletRequestAttributeListeners == null) {
066 return;
067 }
068
069 for (ServletRequestAttributeListener servletRequestAttributeListener :
070 _servletRequestAttributeListeners) {
071
072 servletRequestAttributeListener.attributeAdded(
073 servletRequestAttributeEvent);
074 }
075 }
076
077 public void attributeRemoved(
078 HttpSessionBindingEvent httpSessionBindingEvent) {
079
080 if (_httpSessionAttributeListeners == null) {
081 return;
082 }
083
084 for (HttpSessionAttributeListener httpSessionAttributeListener :
085 _httpSessionAttributeListeners) {
086
087 httpSessionAttributeListener.attributeRemoved(
088 httpSessionBindingEvent);
089 }
090
091 }
092
093 public void attributeRemoved(
094 ServletRequestAttributeEvent servletRequestAttributeEvent) {
095
096 if (_servletRequestAttributeListeners == null) {
097 return;
098 }
099
100 for (ServletRequestAttributeListener servletRequestAttributeListener :
101 _servletRequestAttributeListeners) {
102
103 servletRequestAttributeListener.attributeRemoved(
104 servletRequestAttributeEvent);
105 }
106 }
107
108 public void attributeReplaced(
109 HttpSessionBindingEvent httpSessionBindingEvent) {
110
111 if (_httpSessionAttributeListeners == null) {
112 return;
113 }
114
115 for (HttpSessionAttributeListener httpSessionAttributeListener :
116 _httpSessionAttributeListeners) {
117
118 httpSessionAttributeListener.attributeReplaced(
119 httpSessionBindingEvent);
120 }
121 }
122
123 public void attributeReplaced(
124 ServletRequestAttributeEvent servletRequestAttributeEvent) {
125
126 if (_servletRequestAttributeListeners == null) {
127 return;
128 }
129
130 for (ServletRequestAttributeListener servletRequestAttributeListener :
131 _servletRequestAttributeListeners) {
132
133 servletRequestAttributeListener.attributeReplaced(
134 servletRequestAttributeEvent);
135 }
136 }
137
138 public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
139 if (_servletRequestListeners == null) {
140 return;
141 }
142
143 for (ServletRequestListener servletRequestListener :
144 _servletRequestListeners) {
145
146 servletRequestListener.requestDestroyed(servletRequestEvent);
147 }
148 }
149
150 public void requestInitialized(ServletRequestEvent servletRequestEvent) {
151 if (_servletRequestListeners == null) {
152 return;
153 }
154
155 for (ServletRequestListener servletRequestListener :
156 _servletRequestListeners) {
157
158 servletRequestListener.requestInitialized(servletRequestEvent);
159 }
160 }
161
162 public void sessionCreated(HttpSessionEvent httpSessionEvent) {
163 if (_httpSessionListeners == null) {
164 return;
165 }
166
167 for (HttpSessionListener httpSessionListener : _httpSessionListeners) {
168 httpSessionListener.sessionCreated(httpSessionEvent);
169 }
170 }
171
172 public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
173 if (_httpSessionListeners == null) {
174 return;
175 }
176
177 for (HttpSessionListener httpSessionListener : _httpSessionListeners) {
178 httpSessionListener.sessionDestroyed(httpSessionEvent);
179 }
180 }
181
182 public void sessionDidActivate(HttpSessionEvent httpSessionEvent) {
183 if (_httpSessionActivationListeners == null) {
184 return;
185 }
186
187 for (HttpSessionActivationListener httpSessionActivationListener :
188 _httpSessionActivationListeners) {
189
190 httpSessionActivationListener.sessionDidActivate(httpSessionEvent);
191 }
192 }
193
194 public void sessionWillPassivate(HttpSessionEvent httpSessionEvent) {
195 if (_httpSessionActivationListeners == null) {
196 return;
197 }
198
199 for (HttpSessionActivationListener httpSessionActivationListener :
200 _httpSessionActivationListeners) {
201
202 httpSessionActivationListener.sessionWillPassivate(
203 httpSessionEvent);
204 }
205 }
206
207 public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
208 if (_httpSessionBindingListeners == null) {
209 return;
210 }
211
212 for (HttpSessionBindingListener httpSessionBindingListener :
213 _httpSessionBindingListeners) {
214
215 httpSessionBindingListener.valueBound(httpSessionBindingEvent);
216 }
217 }
218
219 public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
220 if (_httpSessionBindingListeners == null) {
221 return;
222 }
223
224 for (HttpSessionBindingListener httpSessionBindingListener :
225 _httpSessionBindingListeners) {
226
227 httpSessionBindingListener.valueUnbound(httpSessionBindingEvent);
228 }
229 }
230
231 @Override
232 protected void fireDeployEvent() {
233 super.fireDeployEvent();
234
235 if (_servletContextListeners != null) {
236 ServletContextEvent servletContextEvent = new ServletContextEvent(
237 servletContext);
238
239 for (ServletContextListener servletContextListener :
240 _servletContextListeners) {
241
242 servletContextListener.contextInitialized(servletContextEvent);
243 }
244 }
245 }
246
247 @Override
248 protected void fireUndeployEvent() {
249 if (_servletContextListeners != null) {
250 ServletContextEvent servletContextEvent = new ServletContextEvent(
251 servletContext);
252
253 for (ServletContextListener servletContextListener :
254 _servletContextListeners) {
255
256 servletContextListener.contextDestroyed(servletContextEvent);
257 }
258 }
259
260 super.fireUndeployEvent();
261 }
262
263 protected void instantiatingListener(String listenerClassName)
264 throws Exception {
265
266 if (_log.isDebugEnabled()) {
267 _log.debug("Instantiating " + listenerClassName);
268 }
269
270 Object listener = InstanceFactory.newInstance(
271 pluginClassLoader, listenerClassName);
272
273 if (listener instanceof HttpSessionActivationListener) {
274 if (_httpSessionActivationListeners == null) {
275 _httpSessionActivationListeners =
276 new CopyOnWriteArrayList<HttpSessionActivationListener>();
277 }
278
279 _httpSessionActivationListeners.add(
280 (HttpSessionActivationListener)listener);
281 }
282
283 if (listener instanceof HttpSessionAttributeListener) {
284 if (_httpSessionAttributeListeners == null) {
285 _httpSessionAttributeListeners =
286 new CopyOnWriteArrayList<HttpSessionAttributeListener>();
287 }
288
289 _httpSessionAttributeListeners.add(
290 (HttpSessionAttributeListener)listener);
291 }
292
293 if (listener instanceof HttpSessionBindingListener) {
294 if (_httpSessionBindingListeners == null) {
295 _httpSessionBindingListeners =
296 new CopyOnWriteArrayList<HttpSessionBindingListener>();
297 }
298
299 _httpSessionBindingListeners.add(
300 (HttpSessionBindingListener)listener);
301 }
302
303 if (listener instanceof HttpSessionListener) {
304 if (_httpSessionListeners == null) {
305 _httpSessionListeners =
306 new CopyOnWriteArrayList<HttpSessionListener>();
307 }
308
309 _httpSessionListeners.add((HttpSessionListener)listener);
310 }
311
312 if (listener instanceof ServletContextListener) {
313 if (_servletContextListeners == null) {
314 _servletContextListeners =
315 new CopyOnWriteArrayList<ServletContextListener>();
316 }
317
318 _servletContextListeners.add((ServletContextListener)listener);
319 }
320
321 if (listener instanceof ServletRequestAttributeListener) {
322 if (_servletRequestAttributeListeners == null) {
323 _servletRequestAttributeListeners =
324 new CopyOnWriteArrayList<ServletRequestAttributeListener>();
325 }
326
327 _servletRequestAttributeListeners.add(
328 (ServletRequestAttributeListener)listener);
329 }
330
331 if (listener instanceof ServletRequestListener) {
332 if (_servletRequestListeners == null) {
333 _servletRequestListeners =
334 new CopyOnWriteArrayList<ServletRequestListener>();
335 }
336
337 _servletRequestListeners.add((ServletRequestListener)listener);
338 }
339 }
340
341 protected void instantiatingListeners() throws Exception {
342 String[] listenerClassNames = StringUtil.split(
343 servletContext.getInitParameter("portalListenerClasses"));
344
345 for (String listenerClassName : listenerClassNames) {
346 instantiatingListener(listenerClassName);
347 }
348 }
349
350 private static Log _log = LogFactoryUtil.getLog(
351 SecurePluginContextListener.class);
352
353 private List<HttpSessionActivationListener> _httpSessionActivationListeners;
354 private List<HttpSessionAttributeListener> _httpSessionAttributeListeners;
355 private List<HttpSessionBindingListener> _httpSessionBindingListeners;
356 private List<HttpSessionListener> _httpSessionListeners;
357 private List<ServletContextListener> _servletContextListeners;
358 private List<ServletRequestAttributeListener>
359 _servletRequestAttributeListeners;
360 private List<ServletRequestListener> _servletRequestListeners;
361
362 }