summaryrefslogtreecommitdiff
path: root/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2011-11-11 09:45:26 +0000
committerKeith Wall <kwall@apache.org>2011-11-11 09:45:26 +0000
commit9da016b7e810e054bb2b0cf21bf1ad5573c97d4b (patch)
tree2d55c2b8e944eb0ae7661a2c4c92e9af3fa9f83c /java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
parented1d246c2913d2d9993d440637c970e6f845a24a (diff)
downloadqpid-python-9da016b7e810e054bb2b0cf21bf1ad5573c97d4b.tar.gz
QPID-3490: creating queue via JMX now binds the queue to the default exchange; prevented unregistration of the default exchange.
Applied patch from Oleksandr Rudyy<orudyy@gmail.com> and myself. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1200790 13f79535-47bb-0310-9956-ffa450edef68
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.java18
1 files changed, 15 insertions, 3 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 0e7459498a..8d2dee5aaa 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
@@ -27,7 +27,9 @@ import java.util.concurrent.ConcurrentMap;
import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.AMQSecurityException;
+import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.server.queue.IncomingMessage;
import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -87,12 +89,22 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
public void unregisterExchange(AMQShortString name, boolean inUse) throws AMQException
{
- // Check access
- if (!_host.getSecurityManager().authoriseDelete(_exchangeMap.get(name)))
+ final Exchange exchange = _exchangeMap.get(name);
+ if (exchange == null)
+ {
+ throw new AMQException(AMQConstant.NOT_FOUND, "Unknown exchange " + name, null);
+ }
+
+ if (ExchangeDefaults.DEFAULT_EXCHANGE_NAME.equals(name))
+ {
+ throw new AMQException(AMQConstant.NOT_ALLOWED, "Cannot unregister the default exchange", null);
+ }
+
+ if (!_host.getSecurityManager().authoriseDelete(exchange))
{
throw new AMQSecurityException();
}
-
+
// TODO: check inUse argument
Exchange e = _exchangeMap.remove(name);