summaryrefslogtreecommitdiff
path: root/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java32
1 files changed, 18 insertions, 14 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java b/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
index 48331843e5..0630d4f39f 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
@@ -23,6 +23,7 @@ package org.apache.qpid.server.registry;
import org.apache.commons.configuration.Configuration;
import org.apache.log4j.Logger;
import org.apache.qpid.server.configuration.Configurator;
+import org.apache.qpid.server.virtualhost.VirtualHost;
import java.util.HashMap;
import java.util.Iterator;
@@ -38,7 +39,7 @@ public abstract class ApplicationRegistry implements IApplicationRegistry
{
private static final Logger _logger = Logger.getLogger(ApplicationRegistry.class);
- private static Map _instanceMap = new HashMap();
+ private static Map<Integer, IApplicationRegistry> _instanceMap = new HashMap<Integer, IApplicationRegistry>();
private final Map<Class<?>, Object> _configuredObjects = new HashMap<Class<?>, Object>();
@@ -62,20 +63,13 @@ public abstract class ApplicationRegistry implements IApplicationRegistry
{
synchronized (ApplicationRegistry.class)
{
- Iterator keyIterator = _instanceMap.keySet().iterator();
+ Iterator<IApplicationRegistry> keyIterator = _instanceMap.values().iterator();
while (keyIterator.hasNext())
{
- int key = (Integer) keyIterator.next();
- IApplicationRegistry instance = (IApplicationRegistry) _instanceMap.get(key);
-
- if ((instance != null))
- {
- if (instance.getMessageStore() != null)
- {
- instance.getMessageStore().close();
- }
- }
+ IApplicationRegistry instance = keyIterator.next();
+
+ instance.close();
}
}
}
@@ -118,7 +112,7 @@ public abstract class ApplicationRegistry implements IApplicationRegistry
{
try
{
- ((IApplicationRegistry) _instanceMap.get(instanceID)).getMessageStore().close();
+ _instanceMap.get(instanceID).close();
}
catch (Exception e)
{
@@ -143,7 +137,7 @@ public abstract class ApplicationRegistry implements IApplicationRegistry
public static IApplicationRegistry getInstance(int instanceID)
{
- IApplicationRegistry instance = (IApplicationRegistry) _instanceMap.get(instanceID);
+ IApplicationRegistry instance = _instanceMap.get(instanceID);
if (instance == null)
{
@@ -168,6 +162,14 @@ public abstract class ApplicationRegistry implements IApplicationRegistry
}
}
+ public void close() throws Exception
+ {
+ for(VirtualHost virtualHost : getVirtualHostRegistry().getVirtualHosts())
+ {
+ virtualHost.close();
+ }
+ }
+
public Configuration getConfiguration()
{
return _configuration;
@@ -193,6 +195,8 @@ public abstract class ApplicationRegistry implements IApplicationRegistry
return instance;
}
+
+
public static void setDefaultApplicationRegistry(String clazz)
{
_APPLICATION_REGISTRY = clazz;