You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2015/09/28 19:19:12 UTC

svn commit: r1705725 - /felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java

Author: cziegeler
Date: Mon Sep 28 17:19:11 2015
New Revision: 1705725

URL: http://svn.apache.org/viewvc?rev=1705725&view=rev
Log:
FELIX-5057 : Race condition between getService and stopping the http service

Modified:
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java?rev=1705725&r1=1705724&r2=1705725&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java Mon Sep 28 17:19:11 2015
@@ -115,13 +115,13 @@ public final class HttpServiceFactory
 
     public void stop()
     {
-        this.context = null;
         if ( this.httpServiceReg != null )
         {
             this.httpServiceReg.unregister();
             this.httpServiceReg = null;
         }
 
+        this.context = null;
         this.sharedHttpService = null;
 
         this.contextAttributeListenerManager.close();
@@ -134,13 +134,17 @@ public final class HttpServiceFactory
     @Override
     public HttpService getService(final Bundle bundle, final ServiceRegistration<HttpService> reg)
     {
-        return new PerBundleHttpServiceImpl(bundle,
-                this.sharedHttpService,
-                this.context,
-                this.contextAttributeListenerManager,
-                this.sharedContextAttributes,
-                this.requestListenerManager,
-                this.requestAttributeListenerManager);
+        final ServletContext servletContext = this.context;
+        if ( servletContext != null ) {
+            return new PerBundleHttpServiceImpl(bundle,
+                    this.sharedHttpService,
+                    this.context,
+                    this.contextAttributeListenerManager,
+                    this.sharedContextAttributes,
+                    this.requestListenerManager,
+                    this.requestAttributeListenerManager);
+        }
+        return null;
     }
 
     @Override