summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2011-08-26 14:34:03 +0000
committerRobert Gemmell <robbie@apache.org>2011-08-26 14:34:03 +0000
commit2f82e1f8e614a7a1a3faf4d56e1bf2c95341ff17 (patch)
tree063670efd5ac5a70d8970f6ee40c66c5d8cd5916
parentacad4c42dc8d81ecc6fdef635e14332636e7ba26 (diff)
downloadqpid-python-2f82e1f8e614a7a1a3faf4d56e1bf2c95341ff17.tar.gz
QPID-2720: prevent NPE's in event we didnt fully set up the PluginManager
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1162128 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java21
1 files changed, 12 insertions, 9 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java
index 43c4fa26b7..dab6c3b231 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java
@@ -92,6 +92,7 @@ public class PluginManager implements Closeable
private Activator _activator;
+ private final List<ServiceTracker> _trackers = new ArrayList<ServiceTracker>();
private Map<String, SecurityPluginFactory> _securityPlugins = new HashMap<String, SecurityPluginFactory>();
private Map<List<String>, ConfigurationPluginFactory> _configPlugins = new IdentityHashMap<List<String>, ConfigurationPluginFactory>();
private Map<String, VirtualHostPluginFactory> _vhostPlugins = new HashMap<String, VirtualHostPluginFactory>();
@@ -253,25 +254,29 @@ public class PluginManager implements Closeable
_logger.info("Using the specified external BundleContext");
}
- // TODO save trackers in a map, keyed by class name
-
_exchangeTracker = new ServiceTracker(bundleContext, ExchangeType.class.getName(), null);
_exchangeTracker.open();
+ _trackers.add(_exchangeTracker);
_securityTracker = new ServiceTracker(bundleContext, SecurityPluginFactory.class.getName(), null);
_securityTracker.open();
+ _trackers.add(_securityTracker);
_configTracker = new ServiceTracker(bundleContext, ConfigurationPluginFactory.class.getName(), null);
_configTracker.open();
+ _trackers.add(_configTracker);
_virtualHostTracker = new ServiceTracker(bundleContext, VirtualHostPluginFactory.class.getName(), null);
_virtualHostTracker.open();
+ _trackers.add(_virtualHostTracker);
_policyTracker = new ServiceTracker(bundleContext, SlowConsumerPolicyPluginFactory.class.getName(), null);
_policyTracker.open();
-
+ _trackers.add(_policyTracker);
+
_authenticationManagerTracker = new ServiceTracker(bundleContext, AuthenticationManagerPluginFactory.class.getName(), null);
_authenticationManagerTracker.open();
+ _trackers.add(_authenticationManagerTracker);
_logger.info("Opened service trackers");
}
@@ -353,12 +358,10 @@ public class PluginManager implements Closeable
try
{
// Close all bundle trackers
- _exchangeTracker.close();
- _securityTracker.close();
- _configTracker.close();
- _virtualHostTracker.close();
- _policyTracker.close();
- _authenticationManagerTracker.close();
+ for(ServiceTracker tracker : _trackers)
+ {
+ tracker.close();
+ }
}
finally
{