diff options
| author | Robert Gemmell <robbie@apache.org> | 2009-07-24 09:32:11 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2009-07-24 09:32:11 +0000 |
| commit | e72790686cd57c7c069ca5e3a9807681f9e987cb (patch) | |
| tree | be21832c1221396fbd596deabd3e0390cef0dedb /qpid/java/broker/src/main | |
| parent | 3b2bba5c270839ccc91836fde3f2ba0481b3ba74 (diff) | |
| download | qpid-python-e72790686cd57c7c069ca5e3a9807681f9e987cb.tar.gz | |
QPID-2005: make the fanout exchange mbean return a single wildcard binding entry with all queues listed.
Modify the management console to auto-select the wildcard binding when the exchange is viewed. Also, suppress the warning on entering no binding key when creating a fanout exchange binding, but auto-fill the field with the wildcard for clarity.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@797387 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker/src/main')
| -rw-r--r-- | qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java index 23c716a0db..fcaec8bdd0 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java @@ -59,6 +59,8 @@ public class FanoutExchange extends AbstractExchange @MBeanDescription("Management Bean for Fanout Exchange") private final class FanoutExchangeMBean extends ExchangeMBean { + private static final String BINDING_KEY_SUBSTITUTE = "*"; + @MBeanConstructor("Creates an MBean for AMQ fanout exchange") public FanoutExchangeMBean() throws JMException { @@ -71,15 +73,23 @@ public class FanoutExchange extends AbstractExchange { _bindingList = new TabularDataSupport(_bindinglistDataType); + + if(_queues.isEmpty()) + { + return _bindingList; + } + + ArrayList<String> queueNames = new ArrayList<String>(); for (AMQQueue queue : _queues) { String queueName = queue.getName().toString(); - - Object[] bindingItemValues = {queueName, new String[]{queueName}}; - CompositeData bindingData = new CompositeDataSupport(_bindingDataType, COMPOSITE_ITEM_NAMES, bindingItemValues); - _bindingList.put(bindingData); + queueNames.add(queueName); } + + Object[] bindingItemValues = {BINDING_KEY_SUBSTITUTE, queueNames.toArray(new String[0])}; + CompositeData bindingData = new CompositeDataSupport(_bindingDataType, COMPOSITE_ITEM_NAMES, bindingItemValues); + _bindingList.put(bindingData); return _bindingList; } @@ -94,7 +104,7 @@ public class FanoutExchange extends AbstractExchange try { - queue.bind(FanoutExchange.this, new AMQShortString(binding), null); + queue.bind(FanoutExchange.this, new AMQShortString(BINDING_KEY_SUBSTITUTE), null); } catch (AMQException ex) { |
