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]