Author: rgodfrey
Date: Sun Jun  2 09:36:53 2013
New Revision: 1488655

URL: http://svn.apache.org/r1488655
Log:
QPID-4900 : [Java Broker] Broker should return its version to the client as 
informational property in connection initiation

Modified:
    
qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
    
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java

Modified: 
qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java?rev=1488655&r1=1488654&r2=1488655&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java
 (original)
+++ 
qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java
 Sun Jun  2 09:36:53 2013
@@ -22,6 +22,7 @@
 package org.apache.qpid.amqp_1_0.transport;
 
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 import org.apache.qpid.amqp_1_0.codec.DescribedTypeConstructorRegistry;
 import org.apache.qpid.amqp_1_0.codec.ValueWriter;
@@ -119,6 +120,8 @@ public class ConnectionEndpoint implemen
     private String _remoteHostname;
     private Error _remoteError;
 
+    private Map _properties;
+
     public ConnectionEndpoint(Container container, SaslServerProvider cbs)
     {
         _container = container;
@@ -172,6 +175,11 @@ public class ConnectionEndpoint implemen
         _frameOutputHandler = frameOutputHandler;
     }
 
+    public void setProperties(Map<Symbol,Object> properties)
+    {
+        _properties = properties;
+    }
+
     public synchronized SessionEndpoint createSession(String name)
     {
         // todo assert connection state
@@ -231,7 +239,10 @@ public class ConnectionEndpoint implemen
         open.setContainerId(_container.getId());
         open.setMaxFrameSize(getDesiredMaxFrameSize());
         open.setHostname(getRemoteHostname());
-
+        if(_properties != null)
+        {
+            open.setProperties(_properties);
+        }
 
         send(CONNECTION_CONTROL_CHANNEL, open);
     }

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java?rev=1488655&r1=1488654&r2=1488655&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
 Sun Jun  2 09:36:53 2013
@@ -45,6 +45,7 @@ import org.apache.qpid.AMQConnectionExce
 import org.apache.qpid.AMQException;
 import org.apache.qpid.AMQSecurityException;
 import org.apache.qpid.codec.AMQCodecFactory;
+import org.apache.qpid.common.QpidProperties;
 import org.apache.qpid.framing.*;
 import org.apache.qpid.properties.ConnectionStartProperties;
 import org.apache.qpid.protocol.AMQConstant;
@@ -387,9 +388,20 @@ public class AMQProtocolEngine implement
 
             String locales = "en_US";
 
+
+            FieldTable serverProperties = FieldTableFactory.newFieldTable();
+
+            serverProperties.setString(ConnectionStartProperties.PRODUCT,
+                    QpidProperties.getProductName());
+            serverProperties.setString(ConnectionStartProperties.VERSION_0_8,
+                    QpidProperties.getReleaseVersion());
+            serverProperties.setString(ConnectionStartProperties.CLIENT_ID_0_8,
+                    _broker.getName());
+
+
             AMQMethodBody responseBody = 
getMethodRegistry().createConnectionStartBody((short) getProtocolMajorVersion(),
                                                                                
        (short) pv.getActualMinorVersion(),
-                                                                               
        null,
+                                                                               
        serverProperties,
                                                                                
        mechanisms.getBytes(),
                                                                                
        locales.getBytes());
             _sender.send(asByteBuffer(responseBody.generateFrame(0)));

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java?rev=1488655&r1=1488654&r2=1488655&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
 Sun Jun  2 09:36:53 2013
@@ -23,6 +23,8 @@ package org.apache.qpid.server.protocol;
 import java.net.SocketAddress;
 import java.nio.ByteBuffer;
 import java.security.Principal;
+import java.util.LinkedHashMap;
+import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -38,6 +40,9 @@ import org.apache.qpid.amqp_1_0.transpor
 import org.apache.qpid.amqp_1_0.transport.FrameOutputHandler;
 import org.apache.qpid.amqp_1_0.type.Binary;
 import org.apache.qpid.amqp_1_0.type.FrameBody;
+import org.apache.qpid.amqp_1_0.type.Symbol;
+import org.apache.qpid.common.QpidProperties;
+import org.apache.qpid.properties.ConnectionStartProperties;
 import org.apache.qpid.protocol.ServerProtocolEngine;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.Port;
@@ -162,6 +167,15 @@ public class ProtocolEngine_1_0_0 implem
 
         _conn = new ConnectionEndpoint(container, 
asSaslServerProvider(_broker.getSubjectCreator(
                 getLocalAddress())));
+
+        Map<Symbol,Object> serverProperties = new LinkedHashMap<Symbol, 
Object>();
+        serverProperties.put(Symbol.valueOf("qpid.product"), 
QpidProperties.getProductName());
+        serverProperties.put(Symbol.valueOf("qpid.version"), 
QpidProperties.getReleaseVersion());
+        serverProperties.put(Symbol.valueOf("qpid.build"), 
QpidProperties.getBuildVersion());
+        serverProperties.put(Symbol.valueOf("qpid.instanceName"), 
_broker.getName());
+
+        _conn.setProperties(serverProperties);
+
         _conn.setRemoteAddress(_network.getRemoteAddress());
         _conn.setConnectionEventListener(new Connection_1_0(virtualHost, 
_conn, _connectionId, _port, _transport));
         _conn.setFrameOutputHandler(this);

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java?rev=1488655&r1=1488654&r2=1488655&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
 Sun Jun  2 09:36:53 2013
@@ -30,6 +30,7 @@ import java.util.Map;
 import java.util.StringTokenizer;
 import javax.security.sasl.SaslException;
 import javax.security.sasl.SaslServer;
+import org.apache.qpid.common.QpidProperties;
 import org.apache.qpid.common.ServerPropertyNames;
 import org.apache.qpid.properties.ConnectionStartProperties;
 import org.apache.qpid.server.configuration.BrokerProperties;
@@ -93,7 +94,7 @@ public class ServerConnectionDelegate ex
 
     private static Map<String, Object> createConnectionProperties(final Broker 
broker)
     {
-        final Map<String,Object> map = new HashMap<String,Object>(2);
+        final Map<String,Object> map = new HashMap<String,Object>();
         // Federation tag is used by the client to identify the broker instance
         map.put(ServerPropertyNames.FEDERATION_TAG, broker.getId().toString());
         final List<String> features = getFeatures(broker);
@@ -101,6 +102,12 @@ public class ServerConnectionDelegate ex
         {
             map.put(ServerPropertyNames.QPID_FEATURES, features);
         }
+
+        map.put(ServerPropertyNames.QPID_PRODUCT, 
QpidProperties.getProductName());
+        map.put(ServerPropertyNames.QPID_SERVER_VERSION, 
QpidProperties.getReleaseVersion());
+        map.put(ServerPropertyNames.QPID_SERVER_BUILD_VERSION, 
QpidProperties.getBuildVersion());
+        map.put(ServerPropertyNames.QPID_SERVER_NAME, broker.getName());
+
         return map;
     }
 

Modified: 
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java?rev=1488655&r1=1488654&r2=1488655&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java
 (original)
+++ 
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java
 Sun Jun  2 09:36:53 2013
@@ -44,4 +44,11 @@ public final class ServerPropertyNames
      * Feature: Signifies that a server supports JMS selectors.
      */
     public static final String FEATURE_QPID_JMS_SELECTOR = "qpid.jms-selector";
+
+
+    public static final String QPID_PRODUCT = "qpid.product";
+    public static final String QPID_SERVER_VERSION = "qpid.server_version";
+    public static final String QPID_SERVER_NAME = "qpid.server_name";
+    public static final String QPID_SERVER_BUILD_VERSION = 
"qpid.server_build_version";
+
 }



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

Reply via email to