activemq git commit: AMQ-6871 - By default only send generic platform details

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

activemq git commit: AMQ-6871 - By default only send generic platform details

cshannon
Repository: activemq
Updated Branches:
  refs/heads/activemq-5.14.x 42e4a6cd9 -> 8ff18c5e2


AMQ-6871 - By default only send generic platform details

The default behavior by the OpenWire client will be to send generic
platform details to the server with a new flag to send more specific
information.

(cherry picked from commit 5fa0bbd5156f29d97dcf48fd9fdb6a0488a8df1a)


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/8ff18c5e
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/8ff18c5e
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/8ff18c5e

Branch: refs/heads/activemq-5.14.x
Commit: 8ff18c5e254bf43395f2e0d7e3a1092b33ec6462
Parents: 42e4a6c
Author: Christopher L. Shannon (cshannon) <[hidden email]>
Authored: Wed Nov 29 12:43:20 2017 -0500
Committer: Christopher L. Shannon (cshannon) <[hidden email]>
Committed: Wed Dec 6 08:42:46 2017 -0500

----------------------------------------------------------------------
 .../activemq/ActiveMQConnectionMetaData.java    |   1 +
 .../openwire/OpenWireFormatFactory.java         |  17 +++-
 .../openwire/WireFormatInfoPropertiesTest.java  | 101 ++++++++++---------
 3 files changed, 69 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/8ff18c5e/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnectionMetaData.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnectionMetaData.java b/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnectionMetaData.java
index ff6c38f..38c9761 100755
--- a/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnectionMetaData.java
+++ b/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnectionMetaData.java
@@ -33,6 +33,7 @@ public final class ActiveMQConnectionMetaData implements ConnectionMetaData {
     public static final int PROVIDER_MAJOR_VERSION;
     public static final int PROVIDER_MINOR_VERSION;
     public static final String PROVIDER_NAME = "ActiveMQ";
+    public static final String DEFAULT_PLATFORM_DETAILS = "Java";
     public static final String PLATFORM_DETAILS;
 
     public static final ActiveMQConnectionMetaData INSTANCE = new ActiveMQConnectionMetaData();

http://git-wip-us.apache.org/repos/asf/activemq/blob/8ff18c5e/activemq-client/src/main/java/org/apache/activemq/openwire/OpenWireFormatFactory.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/openwire/OpenWireFormatFactory.java b/activemq-client/src/main/java/org/apache/activemq/openwire/OpenWireFormatFactory.java
index ba6d643..2614ad7 100755
--- a/activemq-client/src/main/java/org/apache/activemq/openwire/OpenWireFormatFactory.java
+++ b/activemq-client/src/main/java/org/apache/activemq/openwire/OpenWireFormatFactory.java
@@ -22,7 +22,7 @@ import org.apache.activemq.wireformat.WireFormat;
 import org.apache.activemq.wireformat.WireFormatFactory;
 
 /**
- *
+ *
  */
 public class OpenWireFormatFactory implements WireFormatFactory {
 
@@ -44,8 +44,10 @@ public class OpenWireFormatFactory implements WireFormatFactory {
     private String host=null;
     private String providerName = ActiveMQConnectionMetaData.PROVIDER_NAME;
     private String providerVersion = ActiveMQConnectionMetaData.PROVIDER_VERSION;
-    private String platformDetails = ActiveMQConnectionMetaData.PLATFORM_DETAILS;
+    private String platformDetails = ActiveMQConnectionMetaData.DEFAULT_PLATFORM_DETAILS;
+    private boolean includePlatformDetails = false;
 
+    @Override
     public WireFormat createWireFormat() {
         WireFormatInfo info = new WireFormatInfo();
         info.setVersion(version);
@@ -65,6 +67,9 @@ public class OpenWireFormatFactory implements WireFormatFactory {
             }
             info.setProviderName(providerName);
             info.setProviderVersion(providerVersion);
+            if (includePlatformDetails) {
+                platformDetails = ActiveMQConnectionMetaData.PLATFORM_DETAILS;
+            }
             info.setPlatformDetails(platformDetails);
         } catch (Exception e) {
             IllegalStateException ise = new IllegalStateException("Could not configure WireFormatInfo");
@@ -190,4 +195,12 @@ public class OpenWireFormatFactory implements WireFormatFactory {
     public void setPlatformDetails(String platformDetails) {
         this.platformDetails = platformDetails;
     }
+
+    public boolean isIncludePlatformDetails() {
+        return includePlatformDetails;
+    }
+
+    public void setIncludePlatformDetails(boolean includePlatformDetails) {
+        this.includePlatformDetails = includePlatformDetails;
+    }
 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/8ff18c5e/activemq-unit-tests/src/test/java/org/apache/activemq/openwire/WireFormatInfoPropertiesTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/openwire/WireFormatInfoPropertiesTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/openwire/WireFormatInfoPropertiesTest.java
index 5c0608d..2eedd65 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/openwire/WireFormatInfoPropertiesTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/openwire/WireFormatInfoPropertiesTest.java
@@ -25,7 +25,6 @@ import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.net.URI;
-import java.util.concurrent.atomic.AtomicReference;
 
 import org.apache.activemq.ActiveMQConnection;
 import org.apache.activemq.ActiveMQConnectionFactory;
@@ -33,7 +32,8 @@ import org.apache.activemq.ActiveMQConnectionMetaData;
 import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.broker.TransportConnector;
 import org.apache.activemq.command.WireFormatInfo;
-import org.apache.activemq.transport.DefaultTransportListener;
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,36 +42,60 @@ public class WireFormatInfoPropertiesTest {
 
     static final Logger LOG = LoggerFactory.getLogger(WireFormatInfoPropertiesTest.class);
 
-    protected BrokerService master;
-    protected String brokerUri;
+    private BrokerService service;
+    private String brokerUri;
+    private TransportConnector connector;
+
+    @Before
+    public void before() throws Exception {
+        service = new BrokerService();
+        connector = service.addConnector("tcp://localhost:0");
+        brokerUri = connector.getPublishableConnectString();
+        service.setPersistent(false);
+        service.setUseJmx(false);
+        service.setBrokerName("Master");
+        service.start();
+        service.waitUntilStarted();
+    }
+
+    @After
+    public void after() throws Exception {
+        if (service != null) {
+            service.stop();
+            service.waitUntilStopped();
+        }
+    }
 
     @Test
-    public void testClientProperties() throws Exception{
-        BrokerService service = createBrokerService();
-        try {
-            ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(new URI(brokerUri));
-            ActiveMQConnection conn = (ActiveMQConnection)factory.createConnection();
-            final AtomicReference<WireFormatInfo> clientWf = new AtomicReference<WireFormatInfo>();
-            conn.addTransportListener(new DefaultTransportListener() {
-                @Override
-                public void onCommand(Object command) {
-                    if (command instanceof WireFormatInfo) {
-                        clientWf.set((WireFormatInfo)command);
-                    }
-                }
-            });
-            conn.start();
-            if (clientWf.get() == null) {
-                fail("Wire format info is null");
-            }
-            assertTrue(clientWf.get().getProperties().containsKey("ProviderName"));
-            assertTrue(clientWf.get().getProperties().containsKey("ProviderVersion"));
-            assertTrue(clientWf.get().getProperties().containsKey("PlatformDetails"));
-            assertTrue(clientWf.get().getProviderName().equals(ActiveMQConnectionMetaData.PROVIDER_NAME));
-            assertTrue(clientWf.get().getPlatformDetails().equals(ActiveMQConnectionMetaData.PLATFORM_DETAILS));
-        } finally {
-            stopBroker(service);
+    public void testClientPropertiesWithDefaultPlatformDetails() throws Exception{
+        WireFormatInfo clientWf = testClientProperties(brokerUri);
+        assertTrue(clientWf.getPlatformDetails().equals(ActiveMQConnectionMetaData.DEFAULT_PLATFORM_DETAILS));
+    }
+
+    @Test
+    public void testClientPropertiesWithPlatformDetails() throws Exception{
+        WireFormatInfo clientWf = testClientProperties(brokerUri + "?wireFormat.includePlatformDetails=true");
+        assertTrue(clientWf.getPlatformDetails().equals(ActiveMQConnectionMetaData.PLATFORM_DETAILS));
+    }
+
+    private WireFormatInfo testClientProperties(String brokerUri) throws Exception {
+        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(new URI(brokerUri));
+        ActiveMQConnection conn = (ActiveMQConnection)factory.createConnection();
+        conn.start();
+
+        assertTrue(connector.getConnections().size() == 1);
+        final WireFormatInfo clientWf = connector.getConnections().get(0).getRemoteWireFormatInfo();
+        if (clientWf == null) {
+            fail("Wire format info is null");
         }
+
+        //verify properties that the client sends to the broker
+        assertTrue(clientWf.getProperties().containsKey("ProviderName"));
+        assertTrue(clientWf.getProperties().containsKey("ProviderVersion"));
+        assertTrue(clientWf.getProperties().containsKey("PlatformDetails"));
+        assertTrue(clientWf.getProviderName().equals(ActiveMQConnectionMetaData.PROVIDER_NAME));
+
+        return clientWf;
     }
 
     @Test
@@ -100,23 +124,4 @@ public class WireFormatInfoPropertiesTest {
         assertTrue(result.getPlatformDetails().equals(orig.getPlatformDetails()));
     }
 
-    private BrokerService createBrokerService() throws Exception {
-        BrokerService service = new BrokerService();
-        TransportConnector connector = service.addConnector("tcp://localhost:0");
-        brokerUri = connector.getPublishableConnectString();
-        service.setPersistent(false);
-        service.setUseJmx(false);
-        service.setBrokerName("Master");
-        service.start();
-        service.waitUntilStarted();
-        return service;
-    }
-
-    private void stopBroker(BrokerService service) throws Exception {
-        if (service != null) {
-            service.stop();
-            service.waitUntilStopped();
-        }
-    }
-
 }