From ffd2710f78ab58291f9b2e282875eb67626982c2 Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Thu, 2 Jul 2009 19:51:33 +0000 Subject: QPID-1943: expose exchange mbeans tabular/composite key values through the management interface git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/jmx_mc_gsoc09@790723 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/qpid/server/exchange/AbstractExchange.java | 11 +++-------- .../java/org/apache/qpid/server/exchange/DirectExchange.java | 2 +- .../java/org/apache/qpid/server/exchange/FanoutExchange.java | 2 +- .../org/apache/qpid/server/exchange/HeadersExchange.java | 10 +++------- .../java/org/apache/qpid/server/exchange/TopicExchange.java | 2 +- .../qpid/management/common/mbeans/ManagedExchange.java | 12 ++++++++++++ 6 files changed, 21 insertions(+), 18 deletions(-) diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java index 393822790a..247558bb34 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java @@ -69,8 +69,6 @@ public abstract class AbstractExchange implements Exchange, Managable protected abstract class ExchangeMBean extends AMQManagedObject implements ManagedExchange { // open mbean data types for representing exchange bindings - protected String[] _bindingItemNames; - protected String[] _bindingItemIndexNames; protected OpenType[] _bindingItemTypes; protected CompositeType _bindingDataType; protected TabularType _bindinglistDataType; @@ -82,17 +80,14 @@ public abstract class AbstractExchange implements Exchange, Managable } protected void init() throws OpenDataException - { - _bindingItemNames = new String[]{"Binding Key", "Queue Names"}; - _bindingItemIndexNames = new String[]{_bindingItemNames[0]}; - + { _bindingItemTypes = new OpenType[2]; _bindingItemTypes[0] = SimpleType.STRING; _bindingItemTypes[1] = new ArrayType(1, SimpleType.STRING); _bindingDataType = new CompositeType("Exchange Binding", "Binding key and Queue names", - _bindingItemNames, _bindingItemNames, _bindingItemTypes); + COMPOSITE_ITEM_NAMES, COMPOSITE_ITEM_DESCRIPTIONS, _bindingItemTypes); _bindinglistDataType = new TabularType("Exchange Bindings", "Exchange Bindings for " + getName(), - _bindingDataType, _bindingItemIndexNames); + _bindingDataType, TABULAR_UNIQUE_INDEX); } public ManagedObject getParentObject() diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java index 8eba14d8b6..4b609f592b 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java @@ -114,7 +114,7 @@ public class DirectExchange extends AbstractExchange } Object[] bindingItemValues = {key.toString(), queueList.toArray(new String[0])}; - CompositeData bindingData = new CompositeDataSupport(_bindingDataType, _bindingItemNames, bindingItemValues); + CompositeData bindingData = new CompositeDataSupport(_bindingDataType, COMPOSITE_ITEM_NAMES, bindingItemValues); _bindingList.put(bindingData); } 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 35a7dfa1d9..23c716a0db 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 @@ -77,7 +77,7 @@ public class FanoutExchange extends AbstractExchange String queueName = queue.getName().toString(); Object[] bindingItemValues = {queueName, new String[]{queueName}}; - CompositeData bindingData = new CompositeDataSupport(_bindingDataType, _bindingItemNames, bindingItemValues); + CompositeData bindingData = new CompositeDataSupport(_bindingDataType, COMPOSITE_ITEM_NAMES, bindingItemValues); _bindingList.put(bindingData); } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java index f66e041f13..fc667db17b 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java @@ -84,8 +84,6 @@ public class HeadersExchange extends AbstractExchange { private static final Logger _logger = Logger.getLogger(HeadersExchange.class); - - public static final ExchangeType TYPE = new ExchangeType() { @@ -137,17 +135,15 @@ public class HeadersExchange extends AbstractExchange */ protected void init() throws OpenDataException { - _bindingItemNames = new String[]{"Binding No", "Queue Name", "Queue Bindings"}; - _bindingItemIndexNames = new String[]{_bindingItemNames[0]}; _bindingItemTypes = new OpenType[3]; _bindingItemTypes[0] = SimpleType.INTEGER; _bindingItemTypes[1] = SimpleType.STRING; _bindingItemTypes[2] = new ArrayType(1, SimpleType.STRING); _bindingDataType = new CompositeType("Exchange Binding", "Queue name and header bindings", - _bindingItemNames, _bindingItemNames, _bindingItemTypes); + HEADERS_COMPOSITE_ITEM_NAMES, HEADERS_COMPOSITE_ITEM_DESC, _bindingItemTypes); _bindinglistDataType = new TabularType("Exchange Bindings", "List of exchange bindings for " + getName(), - _bindingDataType, _bindingItemIndexNames); + _bindingDataType, HEADERS_TABULAR_UNIQUE_INDEX); } public TabularData bindings() throws OpenDataException @@ -180,7 +176,7 @@ public class HeadersExchange extends AbstractExchange Object[] bindingItemValues = {count++, queueName, mappingList.toArray(new String[0])}; - CompositeData bindingData = new CompositeDataSupport(_bindingDataType, _bindingItemNames, bindingItemValues); + CompositeData bindingData = new CompositeDataSupport(_bindingDataType, HEADERS_COMPOSITE_ITEM_NAMES, bindingItemValues); _bindingList.put(bindingData); } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java index aaf3bbdcaa..be7a1dc196 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java @@ -336,7 +336,7 @@ public class TopicExchange extends AbstractExchange for(Map.Entry> entry : bindingData.entrySet()) { Object[] bindingItemValues = {entry.getKey(), entry.getValue().toArray(new String[entry.getValue().size()]) }; - CompositeData bindingCompositeData = new CompositeDataSupport(_bindingDataType, _bindingItemNames, bindingItemValues); + CompositeData bindingCompositeData = new CompositeDataSupport(_bindingDataType, COMPOSITE_ITEM_NAMES, bindingItemValues); _bindingList.put(bindingCompositeData); } diff --git a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java index cb3baf6ae0..c8df64549e 100644 --- a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java +++ b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java @@ -40,6 +40,18 @@ public interface ManagedExchange { static final String TYPE = "Exchange"; static final int VERSION = 1; + + //TabularType and contained CompositeType key/description info for DIRECT/TOPIC/FANOUT exchanges. + //For compatibility reasons, DONT MODIFY the existing key values if expanding the set. + String[] COMPOSITE_ITEM_NAMES = {"Binding Key", "Queue Names"}; + String[] COMPOSITE_ITEM_DESCRIPTIONS = {"Binding Key", "Queue Names"}; + String[] TABULAR_UNIQUE_INDEX = {COMPOSITE_ITEM_NAMES[0]}; + + //TabularType and contained CompositeType key/description info for HEADERS exchange only. + //For compatibility reasons, DONT MODIFY the existing key values if expanding the set. + String[] HEADERS_COMPOSITE_ITEM_NAMES = new String[]{"Binding No", "Queue Name", "Queue Bindings"}; + String[] HEADERS_COMPOSITE_ITEM_DESC = new String[]{"Binding No", "Queue Name", "Queue Bindings"}; + String[] HEADERS_TABULAR_UNIQUE_INDEX = new String[]{HEADERS_COMPOSITE_ITEM_NAMES[0]}; /** * Returns the name of the managed exchange. -- cgit v1.2.1