From 2a1d7b329c709940ec121b7685c8f167c5d7ac47 Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Mon, 19 Apr 2010 08:34:36 +0000 Subject: QPID-2379 / QPID-2400: Unregister event listeners during QMFService shutdown to prevent fielding object removal events that cant be actioned anymore. Add null check to the QMFClass retrieval during the unmanage process. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@935474 13f79535-47bb-0310-9956-ffa450edef68 --- java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'java/broker') diff --git a/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java b/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java index 1a9766c5b2..b3be6d77e3 100644 --- a/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java +++ b/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java @@ -359,6 +359,12 @@ public class QMFService implements ConfigStore.ConfigEventListener public void close() { + for(ConfigObjectType v : _qmfClassMapping.values()) + { + _configStore.removeConfigEventListener(v, this); + } + _listeners.clear(); + _managedObjects.clear(); _managedObjectsById.clear(); _classMap.clear(); @@ -414,6 +420,11 @@ public class QMFService implements ConfigStore.ConfigEventListener private void unmanageObject(final ConfiguredObject object) { final QMFClass qmfClass = _classMap.get(object.getConfigType()); + + if(qmfClass == null) + { + return; + } ConcurrentHashMap classObjects = _managedObjects.get(qmfClass); if(classObjects != null) -- cgit v1.2.1