Author: cziegeler
Date: Tue Jul 21 16:08:32 2015
New Revision: 1692158

URL: http://svn.apache.org/r1692158
Log:
Fix resource unregistration problem2

Modified:
    
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ResourceInfo.java
    
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
    
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/WhiteboardServiceTracker.java

Modified: 
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ResourceInfo.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ResourceInfo.java?rev=1692158&r1=1692157&r2=1692158&view=diff
==============================================================================
--- 
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ResourceInfo.java
 (original)
+++ 
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ResourceInfo.java
 Tue Jul 21 16:08:32 2015
@@ -37,11 +37,14 @@ public final class ResourceInfo extends
      */
     private final String prefix;
 
+    private final ServletInfo servletInfo;
+
     public ResourceInfo(final ServiceReference<Object> ref)
     {
         super(ref);
         this.patterns = getStringArrayProperty(ref, 
HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PATTERN);
         this.prefix = getStringProperty(ref, 
HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PREFIX);
+        this.servletInfo = new ServletInfo(this);
     }
 
     @Override
@@ -71,4 +74,9 @@ public final class ResourceInfo extends
     {
         return patterns;
     }
+
+    public ServletInfo getServletInfo()
+    {
+        return this.servletInfo;
+    }
 }

Modified: 
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java?rev=1692158&r1=1692157&r2=1692158&view=diff
==============================================================================
--- 
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
 (original)
+++ 
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
 Tue Jul 21 16:08:32 2015
@@ -692,7 +692,7 @@ public final class WhiteboardManager
             }
             else if ( info instanceof ResourceInfo )
             {
-                final ServletInfo servletInfo = new 
ServletInfo((ResourceInfo)info);
+                final ServletInfo servletInfo = 
((ResourceInfo)info).getServletInfo();
                 final ExtServletContext servletContext = 
handler.getServletContext(info.getServiceReference().getBundle());
                 if ( servletContext == null )
                 {
@@ -766,7 +766,7 @@ public final class WhiteboardManager
             }
             else if ( info instanceof ResourceInfo )
             {
-                handler.getRegistry().unregisterServlet(new 
ServletInfo((ResourceInfo)info), true);
+                
handler.getRegistry().unregisterServlet(((ResourceInfo)info).getServletInfo(), 
true);
                 
handler.ungetServletContext(info.getServiceReference().getBundle());
             }
 

Modified: 
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/WhiteboardServiceTracker.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/WhiteboardServiceTracker.java?rev=1692158&r1=1692157&r2=1692158&view=diff
==============================================================================
--- 
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/WhiteboardServiceTracker.java
 (original)
+++ 
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/WhiteboardServiceTracker.java
 Tue Jul 21 16:08:32 2015
@@ -109,7 +109,7 @@ public abstract class WhiteboardServiceT
 
     private void removed(final ServiceReference<T> ref)
     {
-        final WhiteboardServiceInfo<T> info = 
this.allInfos.get(ref.getProperty(Constants.SERVICE_ID));
+        final WhiteboardServiceInfo<T> info = 
this.allInfos.remove(ref.getProperty(Constants.SERVICE_ID));
         if ( info != null )
         {
             this.contextManager.removeWhiteboardService(info);


Reply via email to