diff options
Diffstat (limited to 'java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java')
-rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java | 53 |
1 files changed, 48 insertions, 5 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java b/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java index a5fa9f014e..bf4184bf0b 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java +++ b/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java @@ -21,7 +21,6 @@ package org.apache.qpid.server.exchange; import org.apache.log4j.Logger; - import org.apache.qpid.AMQException; import org.apache.qpid.AMQSecurityException; import org.apache.qpid.exchange.ExchangeDefaults; @@ -31,12 +30,13 @@ import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.virtualhost.VirtualHost; import java.util.Collection; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; public class DefaultExchangeRegistry implements ExchangeRegistry { - private static final Logger _log = Logger.getLogger(DefaultExchangeRegistry.class); + private static final Logger LOGGER = Logger.getLogger(DefaultExchangeRegistry.class); /** * Maps from exchange name to exchange instance @@ -59,11 +59,9 @@ public class DefaultExchangeRegistry implements ExchangeRegistry new ExchangeInitialiser().initialise(_host.getExchangeFactory(), this, getDurableConfigurationStore()); } - - public DurableConfigurationStore getDurableConfigurationStore() { - return _host.getDurableConfigurationStore(); + return _host.getMessageStore(); } public void registerExchange(Exchange exchange) throws AMQException @@ -153,4 +151,49 @@ public class DefaultExchangeRegistry implements ExchangeRegistry } } + @Override + public void clearAndUnregisterMbeans() + { + for (final AMQShortString exchangeName : getExchangeNames()) + { + final Exchange exchange = getExchange(exchangeName); + + if (exchange instanceof AbstractExchange) + { + AbstractExchange abstractExchange = (AbstractExchange) exchange; + try + { + abstractExchange.getManagedObject().unregister(); + } + catch (AMQException e) + { + LOGGER.warn("Failed to unregister mbean", e); + } + } + } + _exchangeMap.clear(); + _exchangeMapStr.clear(); + } + + @Override + public synchronized Exchange getExchange(UUID exchangeId) + { + if (exchangeId == null) + { + return getDefaultExchange(); + } + else + { + Collection<Exchange> exchanges = _exchangeMap.values(); + for (Exchange exchange : exchanges) + { + if (exchange.getId().equals(exchangeId)) + { + return exchange; + } + } + return null; + } + } + } |