You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2009/07/17 15:54:59 UTC

svn commit: r795084 - in /qpid/trunk/qpid/java/management/eclipse-plugin/src: main/java/org/apache/qpid/management/ui/ main/java/org/apache/qpid/management/ui/actions/ main/java/org/apache/qpid/management/ui/jmx/ main/java/org/apache/qpid/management/ui...

Author: robbie
Date: Fri Jul 17 13:54:59 2009
New Revision: 795084

URL: http://svn.apache.org/viewvc?rev=795084&view=rev
Log:
QPID-1946: support server management API checking in the console.

Use the API versioning to prevent the console working with future brokers using a major new management API.
Provide message upon connection if the server supports a minor new API the console doesnt, directing user to upgrade.
Add a test to check console supported API is kept in sync with server API for new releases.

Added:
    qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApiVersion.java
    qpid/trunk/qpid/java/management/eclipse-plugin/src/test/java/org/apache/qpid/management/ui/ApiVersionTest.java
    qpid/trunk/qpid/java/management/eclipse-plugin/src/test/java/org/apache/qpid/management/ui/ApplicationRegistryTest.java
Modified:
    qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java
    qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java
    qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AbstractAction.java
    qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
    qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java
    qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java

Added: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApiVersion.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApiVersion.java?rev=795084&view=auto
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApiVersion.java (added)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApiVersion.java Fri Jul 17 13:54:59 2009
@@ -0,0 +1,110 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.management.ui;
+
+public class ApiVersion
+{
+    private int major;
+    private int minor;
+
+    public ApiVersion(int major, int minor)
+    {
+        this.major = major;
+        this.minor = minor;
+    }
+
+    public int getMajor()
+    {
+        return major;
+    }
+
+    public int getMinor()
+    {
+        return minor;
+    }
+
+    public boolean greaterThanOrEqualTo(int major, int minor)
+    {
+        if((this.major == major) && (this.minor >= minor))
+        {
+            return true;
+        }
+        else if (this.major > major)
+        {
+            return true;
+        }
+
+        return false;
+    }
+
+    public boolean lessThanOrEqualTo(int major, int minor)
+    {
+        if((this.major == major) && (this.minor <= minor))
+        {
+            return true;
+        }
+        else if (this.major < major)
+        {
+            return true;
+        }
+
+        return false;
+    }
+
+    public boolean greaterThan(int major, int minor)
+    {
+        if(this.major > major)
+        {
+            return true;
+        }
+        else if ((this.major == major) && (this.minor > minor))
+        {
+            return true;
+        }
+
+        return false;
+    }
+
+    public boolean lessThan(int major, int minor)
+    {
+        if(this.major < major)
+        {
+            return true;
+        }
+        else if ((this.major == major) && (this.minor < minor))
+        {
+            return true;
+        }
+
+        return false;
+    }
+
+    public boolean equals(int major, int minor)
+    {
+        return (this.major == major) && (this.minor == minor);
+    }
+
+    public String toString()
+    {
+        return new String("major=" + major + ",minor=" + minor);
+    }
+
+}

Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java?rev=795084&r1=795083&r2=795084&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java (original)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java Fri Jul 17 13:54:59 2009
@@ -43,6 +43,10 @@
     private static FontRegistry fontRegistry = new FontRegistry();
     public static final boolean debug = Boolean.getBoolean("eclipse.consoleLog");
     public static final long timeout = Long.parseLong(System.getProperty("timeout", "5000"));
+
+    //max supported broker management interface supported by this release of the management console
+    public static final int SUPPORTED_QPID_JMX_API_MAJOR_VERSION = 1;
+    public static final int SUPPORTED_QPID_JMX_API_MINOR_VERSION = 3;
     
     static
     {

Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java?rev=795084&r1=795083&r2=795084&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java (original)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java Fri Jul 17 13:54:59 2009
@@ -35,6 +35,9 @@
 {
     private ManagedServer _managedServer = null;
     
+    // API version for the management interface on the broker
+    private ApiVersion _managementApiVersion = new ApiVersion(0,0);
+    
     // list of virtual hosts for this server
     private List<String> _virtualHosts = new ArrayList<String>();
     // map of all Connection mbeans
@@ -54,6 +57,16 @@
         _managedServer = server;
     }
     
+    public void setManagementApiVersion(ApiVersion mgmtApiVersion)
+    {
+        _managementApiVersion = mgmtApiVersion;  
+    }
+    
+    public ApiVersion getManagementApiVersion()
+    {
+        return _managementApiVersion;  
+    }
+    
     public ManagedServer getManagedServer()
     {
         return _managedServer;

Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AbstractAction.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AbstractAction.java?rev=795084&r1=795083&r2=795084&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AbstractAction.java (original)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AbstractAction.java Fri Jul 17 13:54:59 2009
@@ -32,6 +32,7 @@
 import org.apache.qpid.management.ui.ApplicationRegistry;
 import org.apache.qpid.management.ui.ApplicationWorkbenchAdvisor;
 import org.apache.qpid.management.ui.Constants;
+import org.apache.qpid.management.ui.exceptions.ManagementConsoleException;
 import org.apache.qpid.management.ui.jmx.MBeanUtility;
 import org.apache.qpid.management.ui.views.NavigationView;
 import org.eclipse.core.runtime.IStatus;
@@ -168,6 +169,12 @@
                 displayErrorDialogue(msg, title);
                 return;
             }
+            else if (ex instanceof ManagementConsoleException)
+            {
+                msg = ex.getMessage();
+                displayErrorDialogue(msg, title);
+                return;
+            }
             else
             {
                 //Unknown exception type/reason. 

Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java?rev=795084&r1=795083&r2=795084&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java (original)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java Fri Jul 17 13:54:59 2009
@@ -20,9 +20,9 @@
  */
 package org.apache.qpid.management.ui.jmx;
 
+import java.io.IOException;
 import java.math.BigInteger;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -37,10 +37,15 @@
 import javax.management.MBeanNotificationInfo;
 import javax.management.MBeanOperationInfo;
 import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.MalformedObjectNameException;
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
 import javax.management.ReflectionException;
 
+import org.apache.qpid.management.common.mbeans.ServerInformation;
+import org.apache.qpid.management.common.mbeans.UserManagement;
+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.ManagedServer;
@@ -440,6 +445,71 @@
         return mbeans;
     }
     
+    /**
+     * Classifies the management API version of the given server
+     * @return list of ManagedBeans
+     * @throws NullPointerException 
+     * @throws ManagementConsoleException
+     * @throws MalformedObjectNameException 
+     * @throws IOException 
+     */
+    public static void classifyManagementApiVersion(ManagedServer server, JMXServerRegistry serverRegistry) 
+         throws ManagementConsoleException, MalformedObjectNameException, NullPointerException, IOException
+    {
+        MBeanServerConnection mbsc = serverRegistry.getServerConnection();
+        
+        //Detect if the ServerInformation MBean is present, and use it to retrieve the API version.
+        ObjectName objName = new ObjectName(server.getDomain() + ":type="+ ServerInformation.TYPE + ",*");
+        Set<ObjectName> objectInstances = mbsc.queryNames(objName, null);
+        
+        if(objectInstances.size() != 0)
+        {
+            for (Iterator<ObjectName> itr = objectInstances.iterator(); itr.hasNext();)
+            {
+                ObjectName instance = (ObjectName)itr.next();
+                ServerInformation simb = (ServerInformation)
+                                         MBeanServerInvocationHandler.newProxyInstance(mbsc, 
+                                                     instance, ServerInformation.class, false);
+
+                    int major = simb.getManagementApiMajorVersion();
+                    int minor = simb.getManagementApiMinorVersion();
+                    
+                    serverRegistry.setManagementApiVersion(new ApiVersion(major, minor));
+            }
+            
+            return;
+        }
+        
+        //ServerInformation mbean was not present, so this is a older pre-v1.3 API server.
+        
+        //Detect the value of the 'version' key property on the UserManagement MBean ObjectName.
+        //If present, we have a v1.2 API server. If null, we have a v1.1 API server.
+        objName = new ObjectName(server.getDomain() + ":type="+ UserManagement.TYPE + ",*");
+        objectInstances = mbsc.queryNames(objName, null);
+        
+        if(objectInstances.size() != 0)
+        {
+            for (Iterator<ObjectName> itr = objectInstances.iterator(); itr.hasNext();)
+            {
+                ObjectName instance = (ObjectName)itr.next();
+                String version = instance.getKeyProperty("version");
+                
+                if(version != null)
+                {
+                    serverRegistry.setManagementApiVersion(new ApiVersion(1, 2));
+                }
+                else
+                {
+                    serverRegistry.setManagementApiVersion(new ApiVersion(1, 1));
+                }
+            }
+            
+            return;
+        }
+        
+        throw new ManagementConsoleException("Unable to classify the server management API version");
+    }
+    
     public static void printOutput(String statement)
     {
         if (ApplicationRegistry.debug)

Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java?rev=795084&r1=795083&r2=795084&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java (original)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java Fri Jul 17 13:54:59 2009
@@ -23,9 +23,12 @@
 import javax.management.MBeanServerConnection;
 
 import static org.apache.qpid.management.ui.Constants.*;
+
+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.ManagedServer;
+import org.apache.qpid.management.ui.ServerRegistry;
 import org.apache.qpid.management.ui.jmx.JMXManagedObject;
 import org.apache.qpid.management.ui.jmx.JMXServerRegistry;
 import org.apache.qpid.management.ui.jmx.MBeanUtility;
@@ -95,8 +98,14 @@
             }
             
             setServer();
+            
+            if (MBEAN.equals(_selectedNode.getType()))
+            {
+                _mbean = (ManagedBean)_selectedNode.getManagedObject();
+            }
+            
+            setFormTitle();                
             showRelevantTabView();
-            setFormTitle();
         }
     }
     
@@ -154,7 +163,7 @@
     {
         try
         {
-            if (_selectedNode == null || NODE_TYPE_SERVER.equals(_selectedNode.getType()))
+            if (_selectedNode == null)
             {
                 return;
             }
@@ -176,9 +185,33 @@
             }
             else if (MBEAN.equals(mbeanType))
             {
-                _mbean = (ManagedBean)_selectedNode.getManagedObject(); 
                 showMBean(_mbean);
             }
+            else if(NODE_TYPE_SERVER.equals(mbeanType))
+            {
+                ServerRegistry serverReg = ApplicationRegistry.getServerRegistry(_server);
+                
+                //check the server is connected
+                if(serverReg != null)
+                {
+                    //post a message if the server supports a newer API version.
+                    ApiVersion serverAPI = serverReg.getManagementApiVersion();
+                    int supportedMajor = ApplicationRegistry.SUPPORTED_QPID_JMX_API_MAJOR_VERSION;
+                    int supportedMinor = ApplicationRegistry.SUPPORTED_QPID_JMX_API_MINOR_VERSION;
+                    
+                    if(serverAPI.greaterThan(supportedMajor, supportedMinor))
+                    {
+                        _form.setText("The server supports an updated management API and may offer " +
+                        		"functionality not available with this console. " +
+                        		"Please check for an updated console release.");
+                    }
+                    
+                }
+            }
+            else
+            {
+                return;
+            }
             
             _form.layout(true);
             _form.getBody().layout(true, true);

Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java?rev=795084&r1=795083&r2=795084&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java (original)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java Fri Jul 17 13:54:59 2009
@@ -33,11 +33,13 @@
 import org.apache.qpid.management.common.mbeans.LoggingManagement;
 import org.apache.qpid.management.common.mbeans.ServerInformation;
 import org.apache.qpid.management.common.mbeans.UserManagement;
+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.ManagedServer;
 import org.apache.qpid.management.ui.ServerRegistry;
 import org.apache.qpid.management.ui.exceptions.InfoRequiredException;
+import org.apache.qpid.management.ui.exceptions.ManagementConsoleException;
 import org.apache.qpid.management.ui.jmx.JMXServerRegistry;
 import org.apache.qpid.management.ui.jmx.MBeanUtility;
 import org.eclipse.jface.preference.PreferenceStore;
@@ -234,7 +236,34 @@
     private void createJMXServerConnection(ManagedServer server) throws Exception
     {
         // Currently Qpid Management Console only supports JMX MBeanServer
-        ServerRegistry serverRegistry = new JMXServerRegistry(server);
+        JMXServerRegistry serverRegistry = new JMXServerRegistry(server);
+        
+        try
+        {
+          //determine the management API version of the server just connected to
+            MBeanUtility.classifyManagementApiVersion(server, serverRegistry);
+        }
+        catch (Exception e)
+        {
+            //Exception classifying the server API, clean up the connection and rethrow
+            serverRegistry.closeServerConnection();
+            throw e;
+        }
+        
+        //check that the console supports the API major version encountered, otherwise abort.
+        ApiVersion serverAPI = serverRegistry.getManagementApiVersion();
+        
+        int serverMajor = serverAPI.getMajor();
+        int supportedMajor = ApplicationRegistry.SUPPORTED_QPID_JMX_API_MAJOR_VERSION;
+        
+        if(serverMajor > supportedMajor)
+        {
+            serverRegistry.closeServerConnection();
+            throw new ManagementConsoleException("The server management API version encountered is not supported"
+            		+ " by this console release. Please check for an updated console release.");
+        }
+
+        //connection succeeded, add the ServerRegistry to the ApplicationRegistry
         ApplicationRegistry.addServer(server, serverRegistry);
     }
 
@@ -294,6 +323,8 @@
 
         expandInitialMBeanView(serverNode);
         
+        //(re)select the server node now that it is connected to force a selectionEvent
+        _treeViewer.setSelection(new StructuredSelection(serverNode));
         _treeViewer.refresh();
 
         // save server address in file
@@ -777,7 +808,7 @@
         managedServer.setUser(user);
         managedServer.setPassword(password);
         createJMXServerConnection(managedServer);
-
+        
         // put the server in the managed server map
         _managedServerMap.put(managedServer, selectedNode);
 
@@ -798,6 +829,8 @@
 
         expandInitialMBeanView(selectedNode);
         
+        //(re)select the server node now that it is connected to force a selectionEvent
+        _treeViewer.setSelection(new StructuredSelection(selectedNode));
         _treeViewer.refresh();
     }
     

Added: qpid/trunk/qpid/java/management/eclipse-plugin/src/test/java/org/apache/qpid/management/ui/ApiVersionTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/test/java/org/apache/qpid/management/ui/ApiVersionTest.java?rev=795084&view=auto
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/test/java/org/apache/qpid/management/ui/ApiVersionTest.java (added)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/test/java/org/apache/qpid/management/ui/ApiVersionTest.java Fri Jul 17 13:54:59 2009
@@ -0,0 +1,177 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.management.ui;
+
+import junit.framework.TestCase;
+
+public class ApiVersionTest extends TestCase
+{
+
+    public void testGetMajor()
+    {
+        ApiVersion ver = new ApiVersion(1,3);
+        assertEquals(1, ver.getMajor());
+    }
+
+    public void testGetMinor()
+    {
+        ApiVersion ver = new ApiVersion(1,3);
+        assertEquals(3, ver.getMinor());
+    }
+
+    public void testGreaterThanOrEqualTo()
+    {
+        ApiVersion ver = new ApiVersion(1,3);
+        
+        //equal
+        assertTrue(ver.greaterThanOrEqualTo(1, 3));
+        //same major, higher minor
+        assertFalse(ver.greaterThanOrEqualTo(1, 4));
+        //same major, lower minor
+        assertTrue(ver.greaterThanOrEqualTo(1, 2));
+        
+        //higher major, lower minor
+        assertFalse(ver.greaterThanOrEqualTo(2, 0));
+        //higher major, same minor
+        assertFalse(ver.greaterThanOrEqualTo(2, 3));
+        //higher major, higher minor
+        assertFalse(ver.greaterThanOrEqualTo(2, 4));
+        
+        //lower major, higher minor
+        assertTrue(ver.greaterThanOrEqualTo(0, 9));
+        //lower major, lower minor
+        assertTrue(ver.greaterThanOrEqualTo(0, 2));
+        //lower major, same minor
+        assertTrue(ver.greaterThanOrEqualTo(0, 3));
+    }
+
+    public void testLessThanOrEqualTo()
+    {
+        ApiVersion ver = new ApiVersion(1,3);
+        
+        //equal
+        assertTrue(ver.lessThanOrEqualTo(1, 3));
+        //same major, higher minor
+        assertTrue(ver.lessThanOrEqualTo(1, 4));
+        //same major, lower minor
+        assertFalse(ver.lessThanOrEqualTo(1, 2));
+        
+        //higher major, lower minor
+        assertTrue(ver.lessThanOrEqualTo(2, 0));
+        //higher major, same minor
+        assertTrue(ver.lessThanOrEqualTo(2, 3));
+        //higher major, higher minor
+        assertTrue(ver.lessThanOrEqualTo(2, 4));
+        
+        //lower major, higher minor
+        assertFalse(ver.lessThanOrEqualTo(0, 9));
+        //lower major, lower minor
+        assertFalse(ver.lessThanOrEqualTo(0, 2));
+        //lower major, same minor
+        assertFalse(ver.lessThanOrEqualTo(0, 3));
+    }
+
+    public void testGreaterThan()
+    {
+        ApiVersion ver = new ApiVersion(1,3);
+        
+        //equal
+        assertFalse(ver.greaterThan(1, 3));
+        //same major, higher minor
+        assertFalse(ver.greaterThan(1, 4));
+        //same major, lower minor
+        assertTrue(ver.greaterThan(1, 2));
+        
+        //higher major, lower minor
+        assertFalse(ver.greaterThan(2, 0));
+        //higher major, same minor
+        assertFalse(ver.greaterThan(2, 3));
+        //higher major, higher minor
+        assertFalse(ver.greaterThan(2, 4));
+        
+        //lower major, higher minor
+        assertTrue(ver.greaterThan(0, 9));
+        //lower major, lower minor
+        assertTrue(ver.greaterThan(0, 2));
+        //lower major, same minor
+        assertTrue(ver.greaterThan(0, 3));
+    }
+
+    public void testLessThan()
+    {
+        ApiVersion ver = new ApiVersion(1,3);
+        
+        //equal
+        assertFalse(ver.lessThan(1, 3));
+        //same major, higher minor
+        assertTrue(ver.lessThan(1, 4));
+        //same major, lower minor
+        assertFalse(ver.lessThan(1, 2));
+        
+        //higher major, lower minor
+        assertTrue(ver.lessThan(2, 0));
+        //higher major, same minor
+        assertTrue(ver.lessThan(2, 3));
+        //higher major, higher minor
+        assertTrue(ver.lessThan(2, 4));
+        
+        //lower major, higher minor
+        assertFalse(ver.lessThan(0, 9));
+        //lower major, lower minor
+        assertFalse(ver.lessThan(0, 2));
+        //lower major, same minor
+        assertFalse(ver.lessThan(0, 3));
+    }
+
+    public void testEqualsIntInt()
+    {
+        ApiVersion ver = new ApiVersion(1,3);
+        
+        //equal
+        assertTrue(ver.equals(1, 3));
+        //same major, higher minor
+        assertFalse(ver.equals(1, 4));
+        //same major, lower minor
+        assertFalse(ver.equals(1, 2));
+        
+        //higher major, lower minor
+        assertFalse(ver.equals(2, 0));
+        //higher major, same minor
+        assertFalse(ver.equals(2, 3));
+        //higher major, higher minor
+        assertFalse(ver.equals(2, 4));
+        
+        //lower major, higher minor
+        assertFalse(ver.equals(0, 9));
+        //lower major, lower minor
+        assertFalse(ver.equals(0, 2));
+        //lower major, same minor
+        assertFalse(ver.equals(0, 3));
+    }
+
+    public void testToString()
+    {
+        ApiVersion ver = new ApiVersion(1,3);
+
+        assertEquals("major=1,minor=3", ver.toString());
+    }
+
+}

Added: qpid/trunk/qpid/java/management/eclipse-plugin/src/test/java/org/apache/qpid/management/ui/ApplicationRegistryTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/test/java/org/apache/qpid/management/ui/ApplicationRegistryTest.java?rev=795084&view=auto
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/test/java/org/apache/qpid/management/ui/ApplicationRegistryTest.java (added)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/test/java/org/apache/qpid/management/ui/ApplicationRegistryTest.java Fri Jul 17 13:54:59 2009
@@ -0,0 +1,43 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.management.ui;
+
+import org.apache.qpid.management.common.mbeans.ServerInformation;
+
+import junit.framework.TestCase;
+
+public class ApplicationRegistryTest extends TestCase
+{
+    public void testSupportedManagementApiVersion()
+    {
+        //ensure that the console supported API version is kept in sync with the broker
+        
+        assertEquals("The management console does not support the same major version of management API as the broker. " +
+                    "Make any required changes and update the supported value.",
+        	     ServerInformation.QPID_JMX_API_MAJOR_VERSION,
+                     ApplicationRegistry.SUPPORTED_QPID_JMX_API_MAJOR_VERSION);
+        
+        assertEquals("The management console does not support the same minor version of management API as the broker. " +
+                    "Make any required changes and update the supported value.",
+                    ServerInformation.QPID_JMX_API_MINOR_VERSION,
+                    ApplicationRegistry.SUPPORTED_QPID_JMX_API_MINOR_VERSION);
+    }
+}



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org