summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java13
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java14
-rwxr-xr-xjava/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java14
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java9
-rw-r--r--java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java7
5 files changed, 54 insertions, 3 deletions
diff --git a/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java b/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java
index 0ef286e89e..ea3ad7606e 100644
--- a/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java
+++ b/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java
@@ -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 implements DescribedTypeConstructorRegistry.Sour
private String _remoteHostname;
private Error _remoteError;
+ private Map _properties;
+
public ConnectionEndpoint(Container container, SaslServerProvider cbs)
{
_container = container;
@@ -172,6 +175,11 @@ public class ConnectionEndpoint implements DescribedTypeConstructorRegistry.Sour
_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 implements DescribedTypeConstructorRegistry.Sour
open.setContainerId(_container.getId());
open.setMaxFrameSize(getDesiredMaxFrameSize());
open.setHostname(getRemoteHostname());
-
+ if(_properties != null)
+ {
+ open.setProperties(_properties);
+ }
send(CONNECTION_CONTROL_CHANNEL, open);
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java b/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
index 4574f87b54..54ac966898 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
@@ -45,6 +45,7 @@ import org.apache.qpid.AMQConnectionException;
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 implements ServerProtocolEngine, AMQProtocolSessi
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)));
diff --git a/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java b/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
index c2210be935..597ae9b020 100755
--- a/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
@@ -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.transport.Container;
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 implements ServerProtocolEngine, FrameOutputHa
_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);
diff --git a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
index 747a2dce43..e8053e735f 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
@@ -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 extends ServerDelegate
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 extends ServerDelegate
{
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;
}
diff --git a/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java b/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java
index dd94f8251b..5b73b26af3 100644
--- a/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java
+++ b/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java
@@ -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";
+
}