You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2011/01/09 04:18:39 UTC

svn commit: r1056877 - in /felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal: handler/HandlerRegistry.java service/HttpServiceImpl.java

Author: fmeschbe
Date: Sun Jan  9 03:18:29 2011
New Revision: 1056877

URL: http://svn.apache.org/viewvc?rev=1056877&view=rev
Log:
FELIX-2394 Do not destroy any filters and servlets still registered with the HttpService when the service is ungotten before the servlets/filters have been unregistered.

Modified:
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceImpl.java

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java?rev=1056877&r1=1056876&r2=1056877&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java Sun Jan  9 03:18:29 2011
@@ -80,22 +80,28 @@ public final class HandlerRegistry
         updateFilterArray();
     }
 
-    public synchronized void removeServlet(Servlet servlet)
+    public synchronized void removeServlet(Servlet servlet, final boolean destroy)
     {
         ServletHandler handler = this.servletMap.remove(servlet);
         if (handler != null) {
             updateServletArray();
             this.aliasMap.remove(handler.getAlias());
-            handler.destroy();
+            if (destroy)
+            {
+                handler.destroy();
+            }
         }
     }
 
-    public synchronized void removeFilter(Filter filter)
+    public synchronized void removeFilter(Filter filter, final boolean destroy)
     {
         FilterHandler handler = this.filterMap.remove(filter);
         if (handler != null) {
             updateFilterArray();
-            handler.destroy();
+            if (destroy)
+            {
+                handler.destroy();
+            }
         }
     }
 

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceImpl.java?rev=1056877&r1=1056876&r2=1056877&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceImpl.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceImpl.java Sun Jan  9 03:18:29 2011
@@ -71,18 +71,12 @@ public final class HttpServiceImpl
 
     public void unregisterFilter(Filter filter)
     {
-        if (filter != null) {
-            this.handlerRegistry.removeFilter(filter);
-            this.localFilters.remove(filter);
-        }
+        unregisterFilter(filter, true);
     }
 
     public void unregisterServlet(Servlet servlet)
     {
-        if (servlet != null) {
-            this.handlerRegistry.removeServlet(servlet);
-            this.localServlets.remove(servlet);
-        }
+        unregisterServlet(servlet, true);
     }
 
     public void registerServlet(String alias, Servlet servlet, Dictionary initParams, HttpContext context)
@@ -129,12 +123,28 @@ public final class HttpServiceImpl
     {
         HashSet<Servlet> servlets = new HashSet<Servlet>(this.localServlets);
         for (Servlet servlet : servlets) {
-            unregisterServlet(servlet);
+            unregisterServlet(servlet, false);
         }
 
         HashSet<Filter> filters = new HashSet<Filter>(this.localFilters);
         for (Filter fiter : filters) {
-            unregisterFilter(fiter);
+            unregisterFilter(fiter, false);
+        }
+    }
+
+    private void unregisterFilter(Filter filter, final boolean destroy)
+    {
+        if (filter != null) {
+            this.handlerRegistry.removeFilter(filter, destroy);
+            this.localFilters.remove(filter);
+        }
+    }
+
+    private void unregisterServlet(Servlet servlet, final boolean destroy)
+    {
+        if (servlet != null) {
+            this.handlerRegistry.removeServlet(servlet, destroy);
+            this.localServlets.remove(servlet);
         }
     }