You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ri...@apache.org on 2009/10/01 15:49:34 UTC

svn commit: r820657 - /incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintEventDispatcher.java

Author: rickmcguire
Date: Thu Oct  1 13:49:34 2009
New Revision: 820657

URL: http://svn.apache.org/viewvc?rev=820657&view=rev
Log:
ARIES-13 EventAdmin tracker not closed at blueprint bundle shutdown. 


Modified:
    incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintEventDispatcher.java

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintEventDispatcher.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintEventDispatcher.java?rev=820657&r1=820656&r2=820657&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintEventDispatcher.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintEventDispatcher.java Thu Oct  1 13:49:34 2009
@@ -52,7 +52,7 @@
 
     private static final Logger LOGGER = LoggerFactory.getLogger(BlueprintEventDispatcher.class);
 
-    private final BlueprintListener eventAdminListener;
+    private final EventAdminListener eventAdminListener;
     private final ServiceTracker containerListenerTracker;
     private final Map<Bundle, BlueprintEvent> states;
     private final ExecutorService executor;
@@ -60,7 +60,7 @@
     public BlueprintEventDispatcher(final BundleContext bundleContext) {
         this.states = new ConcurrentHashMap<Bundle, BlueprintEvent>();
         this.executor = Executors.newSingleThreadExecutor();
-        BlueprintListener listener = null;
+        EventAdminListener listener = null;
         try {
             getClass().getClassLoader().loadClass("org.osgi.service.event.EventAdmin");
             listener = new EventAdminListener(bundleContext);
@@ -161,6 +161,10 @@
             // ignore
         }
         this.containerListenerTracker.close();
+        // clean up the EventAdmin tracker if we're using that
+        if (this.eventAdminListener != null) {
+            eventAdminListener.destroy();
+        }
     }
 
     static class EventAdminListener implements BlueprintListener {
@@ -226,6 +230,13 @@
             eventAdmin.postEvent(new Event(topic, props));
         }
 
+        /**
+         * Perform cleanup at Blueprint extender shutdown.
+         */
+        public void destroy() {
+            tracker.close();
+        }
+
     }
 
 }