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

Reply via email to