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();
+ }
+
}
}