Author: cziegeler
Date: Thu Jul 15 06:50:49 2010
New Revision: 964317
URL: http://svn.apache.org/viewvc?rev=964317&view=rev
Log:
Correct usage of servlet context and create event object only if listeners are
available
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/helper/RequestListenerManager.java
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java?rev=964317&r1=964316&r2=964317&view=diff
==============================================================================
---
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
(original)
+++
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
Thu Jul 15 06:50:49 2010
@@ -190,8 +190,7 @@ public class SlingMainServlet extends Ge
HttpServletRequest request = (HttpServletRequest) req;
- requestListenerManager.sendEvent( new SlingRequestEvent(
getServletContext(),
- request, SlingRequestEvent.EventType.EVENT_INIT
) );
+ requestListenerManager.sendEvent( request,
SlingRequestEvent.EventType.EVENT_INIT );
// set the thread name according to the request
String threadName = setThreadName(request);
@@ -245,8 +244,7 @@ public class SlingMainServlet extends Ge
} finally {
- requestListenerManager.sendEvent( new SlingRequestEvent(
getServletContext(),
- request,
SlingRequestEvent.EventType.EVENT_DESTROY ) );
+ requestListenerManager.sendEvent( request,
SlingRequestEvent.EventType.EVENT_DESTROY );
// reset the thread name
if (threadName != null) {
Thread.currentThread().setName(threadName);
@@ -632,7 +630,7 @@ public class SlingMainServlet extends Ge
}
// initialize requestListenerManager
- requestListenerManager = new RequestListenerManager( bundleContext );
+ requestListenerManager = new RequestListenerManager( bundleContext,
slingServletContext );
// try to setup configuration printer
try {
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/helper/RequestListenerManager.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/helper/RequestListenerManager.java?rev=964317&r1=964316&r2=964317&view=diff
==============================================================================
---
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/helper/RequestListenerManager.java
(original)
+++
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/helper/RequestListenerManager.java
Thu Jul 15 06:50:49 2010
@@ -18,6 +18,9 @@
*/
package org.apache.sling.engine.impl.helper;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+
import org.apache.sling.api.request.SlingRequestEvent;
import org.apache.sling.api.request.SlingRequestListener;
import org.osgi.framework.BundleContext;
@@ -27,14 +30,19 @@ public class RequestListenerManager {
private final ServiceTracker serviceTracker;
- public RequestListenerManager( final BundleContext context ) {
+ private final ServletContext servletContext;
+
+ public RequestListenerManager( final BundleContext context, final
ServletContext servletContext ) {
serviceTracker = new ServiceTracker( context,
SlingRequestListener.SERVICE_NAME, null );
serviceTracker.open();
+ this.servletContext = servletContext;
}
- public void sendEvent ( final SlingRequestEvent event ) {
+ public void sendEvent ( final HttpServletRequest request,
+ final SlingRequestEvent.EventType type) {
final Object[] services = serviceTracker.getServices();
- if ( services != null ) {
+ if ( services != null && services.length > 0 ) {
+ final SlingRequestEvent event = new
SlingRequestEvent(this.servletContext, request, type);
for ( final Object service : services ) {
( (SlingRequestListener) service ).onEvent(
event );
}