Author: kwall
Date: Mon Sep 28 17:57:23 2015
New Revision: 1705735

URL: http://svn.apache.org/viewvc?rev=1705735&view=rev
Log:
QPID-6760: [Java Client] Make connection metadata provide useful version 
information

Modified:
    
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnection.java
    
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/QpidConnectionMetaData.java
    
qpid/java/trunk/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java
    
qpid/java/trunk/jca/src/main/java/org/apache/qpid/ra/QpidRAConnectionMetaData.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java

Modified: 
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnection.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnection.java?rev=1705735&r1=1705734&r2=1705735&view=diff
==============================================================================
--- 
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnection.java 
(original)
+++ 
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnection.java 
Mon Sep 28 17:57:23 2015
@@ -474,7 +474,7 @@ public class AMQConnection extends Close
             makeConnection();
         }
 
-        _connectionMetaData = new QpidConnectionMetaData(this);
+        _connectionMetaData = new QpidConnectionMetaData();
     }
 
     private void makeConnection() throws QpidException

Modified: 
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/QpidConnectionMetaData.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/QpidConnectionMetaData.java?rev=1705735&r1=1705734&r2=1705735&view=diff
==============================================================================
--- 
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/QpidConnectionMetaData.java
 (original)
+++ 
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/QpidConnectionMetaData.java
 Mon Sep 28 17:57:23 2015
@@ -28,14 +28,6 @@ import java.util.Enumeration;
 
 public class QpidConnectionMetaData implements ConnectionMetaData
 {
-
-    private AMQConnection con;
-
-    QpidConnectionMetaData(AMQConnection conn)
-    {
-        this.con = conn;
-    }
-
     public int getJMSMajorVersion() throws JMSException
     {
         return 1;
@@ -63,34 +55,28 @@ public class QpidConnectionMetaData impl
 
     public int getProviderMajorVersion() throws JMSException
     {
-        return con.getProtocolVersion().getMajorVersion();
+        return CommonProperties.getReleaseVersionMajor();
     }
 
     public int getProviderMinorVersion() throws JMSException
     {
-        return con.getProtocolVersion().getMinorVersion();
+        return CommonProperties.getReleaseVersionMinor();
     }
 
     public String getProviderVersion() throws JMSException
     {
-        return CommonProperties.getProductName() + " (Client: [" + 
getClientVersion() + "] ; Broker [" + getBrokerVersion() + "] ; Protocol: [ "
-               + getProtocolVersion() + "] )";
-    }
-
-    private String getProtocolVersion()
-    {
-        return con.getProtocolVersion().toString();
+        return CommonProperties.getProductName()
+               + " (Client: [" + CommonProperties.getReleaseVersion() + "])";
     }
 
     public String getBrokerVersion()
     {
-        // TODO - get broker version
-        return "<unkown>";
+        return "<unknown>";
     }
 
     public String getClientVersion()
     {
-        return CommonProperties.getBuildVersion();
+        return CommonProperties.getReleaseVersion();
     }
 
 

Modified: 
qpid/java/trunk/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java?rev=1705735&r1=1705734&r2=1705735&view=diff
==============================================================================
--- 
qpid/java/trunk/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java
 (original)
+++ 
qpid/java/trunk/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java
 Mon Sep 28 17:57:23 2015
@@ -28,6 +28,8 @@ import java.net.URL;
 import java.util.HashSet;
 import java.util.Properties;
 import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -77,6 +79,12 @@ public class CommonProperties
     /** Holds the product version. */
     private static final String releaseVersion;
 
+    /** Holds the product major version - derived from the releaseVersion */
+    private static final int releaseVersionMajor;
+
+    /** Holds the product minor version - derived from the releaseVersion */
+    private static final int releaseVersionMinor;
+
     /** Holds the source code revision. */
     private static final String buildVersion;
 
@@ -92,6 +100,19 @@ public class CommonProperties
         productName = properties.getProperty(PRODUCT_NAME_PROPERTY, DEFAULT);
 
         String version = properties.getProperty(RELEASE_VERSION_PROPERTY, 
DEFAULT);
+        Pattern pattern = Pattern.compile("(\\d+)\\.(\\d+).*");
+        Matcher m = pattern.matcher(version);
+        if (m.matches())
+        {
+            releaseVersionMajor = Integer.parseInt(m.group(1));
+            releaseVersionMinor = Integer.parseInt(m.group(2));
+        }
+        else
+        {
+            LOGGER.warn("Failed to parse major and minor release number from 
'{}')", version);
+            releaseVersionMajor = -1;
+            releaseVersionMinor = -1;
+        }
 
         boolean loadFromFile = true;
         String initialProperties = 
System.getProperty("qpid.common_properties_file");
@@ -146,6 +167,26 @@ public class CommonProperties
     }
 
     /**
+     * Gets the product major version.
+     *
+     * @return The product major version.
+     */
+    public static int getReleaseVersionMajor()
+    {
+        return releaseVersionMajor;
+    }
+
+    /**
+     * Gets the product minor version.
+     *
+     * @return The product version.
+     */
+    public static int getReleaseVersionMinor()
+    {
+        return releaseVersionMinor;
+    }
+
+    /**
      * Gets the source code revision.
      *
      * @return The source code revision.
@@ -195,13 +236,13 @@ public class CommonProperties
                 }
                 catch (IOException e)
                 {
-                    LOGGER.warn("Could not load properties file '" + 
resourceLocation + "'.", e);
+                    LOGGER.warn("Could not load properties file '{}'.", 
resourceLocation, e);
                 }
             }
         }
         catch (MalformedURLException e)
         {
-            LOGGER.warn("Could not open properties file '" + resourceLocation 
+ "'.", e);
+            LOGGER.warn("Could not open properties file '{}'.", 
resourceLocation, e);
         }
     }
 

Modified: 
qpid/java/trunk/jca/src/main/java/org/apache/qpid/ra/QpidRAConnectionMetaData.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/jca/src/main/java/org/apache/qpid/ra/QpidRAConnectionMetaData.java?rev=1705735&r1=1705734&r2=1705735&view=diff
==============================================================================
--- 
qpid/java/trunk/jca/src/main/java/org/apache/qpid/ra/QpidRAConnectionMetaData.java
 (original)
+++ 
qpid/java/trunk/jca/src/main/java/org/apache/qpid/ra/QpidRAConnectionMetaData.java
 Mon Sep 28 17:57:23 2015
@@ -41,9 +41,6 @@ public class QpidRAConnectionMetaData im
    /** The logger */
    private static final Logger _log = 
LoggerFactory.getLogger(QpidRAConnectionMetaData.class);
 
-   private static final String PROVIDER_VERSION ;
-   private static final int PROVIDER_MAJOR ;
-   private static final int PROVIDER_MINOR ;
    private static final String[] JMSX_PROPERTY_NAMES ;
 
    /**
@@ -124,7 +121,7 @@ public class QpidRAConnectionMetaData im
          _log.trace("getProviderVersion()");
       }
 
-      return PROVIDER_VERSION ;
+      return CommonProperties.getReleaseVersion() ;
    }
 
    /**
@@ -138,7 +135,7 @@ public class QpidRAConnectionMetaData im
          _log.trace("getProviderMajorVersion()");
       }
 
-      return PROVIDER_MAJOR ;
+      return CommonProperties.getReleaseVersionMajor() ;
    }
 
    /**
@@ -152,7 +149,7 @@ public class QpidRAConnectionMetaData im
          _log.trace("getProviderMinorVersion()");
       }
 
-      return PROVIDER_MINOR ;
+      return CommonProperties.getReleaseVersionMinor() ;
    }
 
    /**
@@ -167,22 +164,6 @@ public class QpidRAConnectionMetaData im
 
    static
    {
-          final String version = CommonProperties.getReleaseVersion() ;
-          int major = -1 ;
-          int minor = -1 ;
-          if (version != null)
-          {
-                  final int separator = version.indexOf('.') ;
-                  if (separator != -1)
-                  {
-                          major = parseInt(version.substring(0, separator), 
"major") ;
-                          minor = parseInt(version.substring(separator+1, 
version.length()), "minor") ;
-                  }
-          }
-          PROVIDER_VERSION = version ;
-          PROVIDER_MAJOR = major ;
-          PROVIDER_MINOR = minor ;
-
       final CustomJMSXProperty[] properties = CustomJMSXProperty.values();
       final String[] names = new String[properties.length] ;
       int count = 0 ;
@@ -192,17 +173,4 @@ public class QpidRAConnectionMetaData im
       }
           JMSX_PROPERTY_NAMES = names ;
    }
-
-   private static int parseInt(final String value, final String name)
-   {
-          try
-          {
-                  return Integer.parseInt(value) ;
-          }
-          catch (final NumberFormatException nfe)
-          {
-                  _log.warn("Failed to parse " + name + ": " + value) ;
-                  return -1 ;
-          }
-   }
 }

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java?rev=1705735&r1=1705734&r2=1705735&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java
 Mon Sep 28 17:57:23 2015
@@ -20,7 +20,10 @@
  */
 package org.apache.qpid.test.unit.client.connection;
 
+import java.util.Enumeration;
+
 import javax.jms.Connection;
+import javax.jms.ConnectionMetaData;
 import javax.jms.QueueSession;
 import javax.jms.TopicSession;
 
@@ -189,7 +192,7 @@ public class ConnectionTest extends Qpid
         {
             if (!(amqe instanceof AMQUnresolvedAddressException))
             {
-                fail("Correct exception not thrown. Excpected 
'AMQUnresolvedAddressException' got: " + amqe);
+                fail("Correct exception not thrown. Expected 
'AMQUnresolvedAddressException' got: " + amqe);
             }
         }
         finally
@@ -216,7 +219,7 @@ public class ConnectionTest extends Qpid
         {
             if (!(amqe instanceof AMQConnectionFailureException))
             {
-                fail("Correct exception not thrown. Excpected 
'AMQConnectionFailureException' got: " + amqe);
+                fail("Correct exception not thrown. Expected 
'AMQConnectionFailureException' got: " + amqe);
             }
         }
         finally
@@ -337,7 +340,8 @@ public class ConnectionTest extends Qpid
         }
         catch (Exception e)
         {
-            fail("Unexpected exception thrown, client id was not unique but 
usernames were different! " + e.getMessage());
+            fail("Unexpected exception thrown, client id was not unique but 
usernames were different! "
+                 + e.getMessage());
         }
     }
 
@@ -369,4 +373,21 @@ public class ConnectionTest extends Qpid
             }
         }
     }
+
+    public void testConnectionMetadata() throws Exception
+    {
+        Connection con = getConnection();
+        ConnectionMetaData metaData = con.getMetaData();
+        assertNotNull(metaData);
+
+        assertNotNull("Provider version unexpectedly null", 
metaData.getProviderVersion());
+        assertTrue("Provider version unexpectedly empty", 
metaData.getProviderVersion().length() > 0);
+
+        assertTrue("Provider major version has unexpected value", 
metaData.getProviderMajorVersion() > -1);
+        assertTrue("Provider minor version has unexpected value", 
metaData.getProviderMinorVersion() > -1);
+
+        Enumeration names = metaData.getJMSXPropertyNames();
+        assertNotNull("JMSXPropertyNames unexpectedly null", names);
+        assertTrue("JMSXPropertyNames should have at least one name", 
names.hasMoreElements());
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to