diff options
| author | Bhupendra Bhusman Bhardwaj <bhupendrab@apache.org> | 2007-03-15 10:42:24 +0000 |
|---|---|---|
| committer | Bhupendra Bhusman Bhardwaj <bhupendrab@apache.org> | 2007-03-15 10:42:24 +0000 |
| commit | bbc2f087fb974cd976c423bdbdd9ca6123d06ccb (patch) | |
| tree | 4c9c688f2e0b14eb6fda6767406ed4f4127021a8 /java | |
| parent | b62a0b64225fc5a8654c246c4f143d534b016848 (diff) | |
| download | qpid-python-bbc2f087fb974cd976c423bdbdd9ca6123d06ccb.tar.gz | |
QPID-415
Default configuration for queues in virtualHost.xml doesn't get applied to the queue created after broker startup
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@518570 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
3 files changed, 39 insertions, 1 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java b/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java index adb2630bcf..386b0e6c45 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java +++ b/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java @@ -36,6 +36,9 @@ import org.apache.qpid.server.queue.AMQQueue; import org.apache.qpid.server.queue.QueueRegistry; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.virtualhost.VirtualHost; +import org.apache.qpid.server.configuration.Configurator; +import org.apache.qpid.server.configuration.VirtualHostConfiguration; +import org.apache.commons.configuration.Configuration; /** * This MBean implements the broker management interface and exposes the @@ -158,6 +161,12 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr { _messageStore.createQueue(queue); } + + Configuration virtualHostDefaultQueueConfiguration = VirtualHostConfiguration.getDefaultQueueConfiguration(queue); + if (virtualHostDefaultQueueConfiguration != null) + { + Configurator.configure(queue, virtualHostDefaultQueueConfiguration); + } _queueRegistry.registerQueue(queue); } catch (AMQException ex) diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java index a35a46f305..8573902af4 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java @@ -43,7 +43,7 @@ public class VirtualHostConfiguration { private static final Logger _logger = Logger.getLogger(VirtualHostConfiguration.class); - XMLConfiguration _config; + private static XMLConfiguration _config; private static final String VIRTUALHOST_PROPERTY_BASE = "virtualhost."; @@ -128,6 +128,27 @@ public class VirtualHostConfiguration } } + public static CompositeConfiguration getDefaultQueueConfiguration(AMQQueue queue) + { + CompositeConfiguration queueConfiguration = null; + if (_config == null) + return null; + + Configuration vHostConfiguration = _config.subset(VIRTUALHOST_PROPERTY_BASE + queue.getVirtualHost().getName()); + + if (vHostConfiguration == null) + return null; + + Configuration defaultQueueConfiguration = vHostConfiguration.subset("queues"); + if (defaultQueueConfiguration != null) + { + queueConfiguration = new CompositeConfiguration(); + queueConfiguration.addConfiguration(defaultQueueConfiguration); + } + + return queueConfiguration; + } + private void configureQueue(VirtualHost virtualHost, String queueNameString, Configuration configuration) throws AMQException, ConfigurationException { CompositeConfiguration queueConfiguration = new CompositeConfiguration(); diff --git a/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java b/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java index 8b2467f47d..9e0a1019f2 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java +++ b/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java @@ -34,6 +34,7 @@ import org.apache.qpid.framing.QueueDeclareOkBody; import org.apache.qpid.protocol.AMQConstant; import org.apache.qpid.protocol.AMQMethodEvent; import org.apache.qpid.server.configuration.Configurator; +import org.apache.qpid.server.configuration.VirtualHostConfiguration; import org.apache.qpid.server.exchange.Exchange; import org.apache.qpid.server.exchange.ExchangeRegistry; import org.apache.qpid.server.protocol.AMQProtocolSession; @@ -44,6 +45,7 @@ import org.apache.qpid.server.state.StateAwareMethodListener; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.virtualhost.VirtualHost; import org.apache.qpid.server.AMQChannel; +import org.apache.commons.configuration.Configuration; public class QueueDeclareHandler implements StateAwareMethodListener<QueueDeclareBody> { @@ -192,6 +194,12 @@ public class QueueDeclareHandler implements StateAwareMethodListener<QueueDeclar } + Configuration virtualHostDefaultQueueConfiguration = VirtualHostConfiguration.getDefaultQueueConfiguration(queue); + if (virtualHostDefaultQueueConfiguration != null) + { + Configurator.configure(queue, virtualHostDefaultQueueConfiguration); + } + return queue; } } |
