diff options
author | Robert Gemmell <robbie@apache.org> | 2011-08-26 14:34:03 +0000 |
---|---|---|
committer | Robert Gemmell <robbie@apache.org> | 2011-08-26 14:34:03 +0000 |
commit | 2f82e1f8e614a7a1a3faf4d56e1bf2c95341ff17 (patch) | |
tree | 063670efd5ac5a70d8970f6ee40c66c5d8cd5916 | |
parent | acad4c42dc8d81ecc6fdef635e14332636e7ba26 (diff) | |
download | qpid-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.java | 21 |
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 { |