Author: robbie Date: Wed Jul 22 13:09:44 2009 New Revision: 796693 URL: http://svn.apache.org/viewvc?rev=796693&view=rev Log: QPID-1967: collect possible Exchange Type values from the broker instead of relying on default set within the management console
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java?rev=796693&r1=796692&r2=796693&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java (original) +++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java Wed Jul 22 13:09:44 2009 @@ -37,6 +37,9 @@ */ package org.apache.qpid.server; +import java.io.IOException; +import java.util.ArrayList; + import javax.management.JMException; import javax.management.MBeanException; import javax.management.MalformedObjectNameException; @@ -50,6 +53,7 @@ import org.apache.qpid.server.exchange.Exchange; import org.apache.qpid.server.exchange.ExchangeFactory; import org.apache.qpid.server.exchange.ExchangeRegistry; +import org.apache.qpid.server.exchange.ExchangeType; import org.apache.qpid.server.management.AMQManagedObject; import org.apache.qpid.server.management.ManagedObject; import org.apache.qpid.server.queue.AMQQueue; @@ -92,6 +96,22 @@ } /** + * Returns an array of the exchange types available for creation. + * @since Qpid JMX API 1.3 + * @throws IOException + */ + public String[] getExchangeTypes() throws IOException + { + ArrayList<String> exchangeTypes = new ArrayList<String>(); + for(ExchangeType<? extends Exchange> ex : _exchangeFactory.getRegisteredTypes()) + { + exchangeTypes.add(ex.getName().toString()); + } + + return exchangeTypes.toArray(new String[0]); + } + + /** * Creates new exchange and registers it with the registry. * * @param exchangeName Modified: qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java?rev=796693&r1=796692&r2=796693&view=diff ============================================================================== --- qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java (original) +++ qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java Wed Jul 22 13:09:44 2009 @@ -26,6 +26,7 @@ import javax.management.JMException; import javax.management.MBeanOperationInfo; +import org.apache.qpid.management.common.mbeans.annotations.MBeanAttribute; import org.apache.qpid.management.common.mbeans.annotations.MBeanOperation; import org.apache.qpid.management.common.mbeans.annotations.MBeanOperationParameter; @@ -43,6 +44,14 @@ static final int VERSION = 1 ; /** + * Returns an array of the exchange types available for creation. + * @since Qpid JMX API 1.3 + * @throws IOException + */ + @MBeanAttribute(name="ExchangeTypes", description = "The types of Exchange available for creation.") + String[] getExchangeTypes() throws IOException; + + /** * Creates a new Exchange. * @param name * @param type Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java?rev=796693&r1=796692&r2=796693&view=diff ============================================================================== --- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java (original) +++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java Wed Jul 22 13:09:44 2009 @@ -78,7 +78,7 @@ public final static String CONNECTION ="Connection"; public final static String EXCHANGE = "Exchange"; public final static String EXCHANGE_TYPE = "ExchangeType"; - public final static String[] EXCHANGE_TYPE_VALUES = {"direct", "fanout", "headers", "topic"}; + public final static String[] DEFAULT_EXCHANGE_TYPE_VALUES = {"direct", "fanout", "headers", "topic"}; public final static String[] BOOLEAN_TYPE_VALUES = {"false", "true"}; public final static String[] ATTRIBUTE_TABLE_TITLES = {"Attribute Name", "Value"}; Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java?rev=796693&r1=796692&r2=796693&view=diff ============================================================================== --- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java (original) +++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java Wed Jul 22 13:09:44 2009 @@ -221,7 +221,7 @@ // Customised parameter widgets if (_mbean.isExchange() && - EXCHANGE_TYPE_VALUES[2].equals(_mbean.getProperty(EXCHANGE_TYPE)) && + DEFAULT_EXCHANGE_TYPE_VALUES[2].equals(_mbean.getProperty(EXCHANGE_TYPE)) && _opData.getName().equalsIgnoreCase(OPERATION_CREATE_BINDING)) { customCreateNewBinding(); @@ -274,7 +274,7 @@ } else if (param.getName().equals(EXCHANGE_TYPE)) { - items = EXCHANGE_TYPE_VALUES; + items = DEFAULT_EXCHANGE_TYPE_VALUES; } else if (isUserListParameter(param)) { Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java?rev=796693&r1=796692&r2=796693&view=diff ============================================================================== --- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java (original) +++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java Wed Jul 22 13:09:44 2009 @@ -20,13 +20,15 @@ */ package org.apache.qpid.management.ui.views.vhost; -import static org.apache.qpid.management.ui.Constants.EXCHANGE_TYPE_VALUES; +import static org.apache.qpid.management.ui.Constants.DEFAULT_EXCHANGE_TYPE_VALUES; +import java.io.IOException; import java.util.List; import javax.management.MBeanServerConnection; import javax.management.MBeanServerInvocationHandler; +import org.apache.qpid.management.ui.ApiVersion; import org.apache.qpid.management.ui.ApplicationRegistry; import org.apache.qpid.management.ui.ManagedBean; import org.apache.qpid.management.ui.ServerRegistry; @@ -78,11 +80,13 @@ private Composite _paramsComposite = null; private ManagedBroker _vhmb; + private ApiVersion _ApiVersion; public VHostTabControl(TabFolder tabFolder, JMXManagedObject mbean, MBeanServerConnection mbsc) { super(tabFolder); _mbean = mbean; + _ApiVersion = ApplicationRegistry.getServerRegistry(mbean).getManagementApiVersion(); _vhmb = (ManagedBroker) MBeanServerInvocationHandler.newProxyInstance(mbsc, mbean.getObjectName(), ManagedBroker.class, false); _toolkit = new FormToolkit(_tabFolder.getDisplay()); @@ -620,11 +624,27 @@ typeComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); typeComposite.setLayout(new GridLayout(2,false)); - //TODO: get exchange types from broker instead of hardcoded + String[] exchangeTypes; + if(_ApiVersion.greaterThanOrEqualTo(1, 3))//if the server supports Qpid JMX API 1.3 + {//request the current exchange types from the broker + try + { + exchangeTypes = _vhmb.getExchangeTypes(); + } + catch (IOException e1) + { + exchangeTypes = DEFAULT_EXCHANGE_TYPE_VALUES; + } + } + else //use the fallback defaults. + { + exchangeTypes = DEFAULT_EXCHANGE_TYPE_VALUES; + } + _toolkit.createLabel(typeComposite,"Type:").setBackground(shell.getBackground()); final org.eclipse.swt.widgets.List typeList = new org.eclipse.swt.widgets.List(typeComposite, SWT.SINGLE | SWT.BORDER); typeList.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); - typeList.setItems(EXCHANGE_TYPE_VALUES); + typeList.setItems(exchangeTypes); Composite durableComposite = _toolkit.createComposite(shell, SWT.NONE); durableComposite.setBackground(shell.getBackground()); --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org