QPID-4900: Add the server properties to the AMQP 1.0 SASL ProtocolEngine as well. Use the same base property names for all protocol versions, using the standard 'version' and 'product' property names from AMQP 0-x specs.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1490260 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
index 54ac966..3274cff 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
@@ -46,6 +46,7 @@
import org.apache.qpid.AMQSecurityException;
import org.apache.qpid.codec.AMQCodecFactory;
import org.apache.qpid.common.QpidProperties;
+import org.apache.qpid.common.ServerPropertyNames;
import org.apache.qpid.framing.*;
import org.apache.qpid.properties.ConnectionStartProperties;
import org.apache.qpid.protocol.AMQConstant;
@@ -391,14 +392,15 @@
FieldTable serverProperties = FieldTableFactory.newFieldTable();
- serverProperties.setString(ConnectionStartProperties.PRODUCT,
+ serverProperties.setString(ServerPropertyNames.PRODUCT,
QpidProperties.getProductName());
- serverProperties.setString(ConnectionStartProperties.VERSION_0_8,
+ serverProperties.setString(ServerPropertyNames.VERSION,
QpidProperties.getReleaseVersion());
- serverProperties.setString(ConnectionStartProperties.CLIENT_ID_0_8,
+ serverProperties.setString(ServerPropertyNames.QPID_BUILD,
+ QpidProperties.getBuildVersion());
+ serverProperties.setString(ServerPropertyNames.QPID_INSTANCE_NAME,
_broker.getName());
-
AMQMethodBody responseBody = getMethodRegistry().createConnectionStartBody((short) getProtocolMajorVersion(),
(short) pv.getActualMinorVersion(),
serverProperties,
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
index 597ae9b..7d5459d 100755
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
@@ -42,7 +42,7 @@
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.common.ServerPropertyNames;
import org.apache.qpid.protocol.ServerProtocolEngine;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.Port;
@@ -169,10 +169,10 @@
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());
+ serverProperties.put(Symbol.valueOf(ServerPropertyNames.PRODUCT), QpidProperties.getProductName());
+ serverProperties.put(Symbol.valueOf(ServerPropertyNames.VERSION), QpidProperties.getReleaseVersion());
+ serverProperties.put(Symbol.valueOf(ServerPropertyNames.QPID_BUILD), QpidProperties.getBuildVersion());
+ serverProperties.put(Symbol.valueOf(ServerPropertyNames.QPID_INSTANCE_NAME), _broker.getName());
_conn.setProperties(serverProperties);
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0_SASL.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0_SASL.java
index 8e64ca7..9472e08 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0_SASL.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0_SASL.java
@@ -24,6 +24,8 @@
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.security.Principal;
+import java.util.LinkedHashMap;
+import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.security.sasl.SaslException;
@@ -39,6 +41,9 @@
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.common.ServerPropertyNames;
import org.apache.qpid.protocol.ServerProtocolEngine;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.Port;
@@ -172,6 +177,15 @@
VirtualHost virtualHost = _broker.getVirtualHostRegistry().getVirtualHost((String)_broker.getAttribute(Broker.DEFAULT_VIRTUAL_HOST));
SubjectCreator subjectCreator = _broker.getSubjectCreator(getLocalAddress());
_conn = new ConnectionEndpoint(container, asSaslServerProvider(subjectCreator));
+
+ Map<Symbol,Object> serverProperties = new LinkedHashMap<Symbol, Object>();
+ serverProperties.put(Symbol.valueOf(ServerPropertyNames.PRODUCT), QpidProperties.getProductName());
+ serverProperties.put(Symbol.valueOf(ServerPropertyNames.VERSION), QpidProperties.getReleaseVersion());
+ serverProperties.put(Symbol.valueOf(ServerPropertyNames.QPID_BUILD), QpidProperties.getBuildVersion());
+ serverProperties.put(Symbol.valueOf(ServerPropertyNames.QPID_INSTANCE_NAME), _broker.getName());
+
+ _conn.setProperties(serverProperties);
+
_conn.setRemoteAddress(getRemoteAddress());
_conn.setConnectionEventListener(new Connection_1_0(virtualHost, _conn, _connectionId, _port, _transport));
_conn.setFrameOutputHandler(this);
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
index e8053e7..9e25182 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
@@ -103,10 +103,10 @@
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());
+ map.put(ServerPropertyNames.PRODUCT, QpidProperties.getProductName());
+ map.put(ServerPropertyNames.VERSION, QpidProperties.getReleaseVersion());
+ map.put(ServerPropertyNames.QPID_BUILD, QpidProperties.getBuildVersion());
+ map.put(ServerPropertyNames.QPID_INSTANCE_NAME, broker.getName());
return map;
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java b/qpid/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java
index 5b73b26..3d79245 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/common/ServerPropertyNames.java
@@ -22,7 +22,7 @@
/**
* Keys names used within the serverProperties argument of the ConnectionStart
- * method. These property names are Qpid specific.
+ * method. Property names which start with "qpid." are Qpid specific.
*/
public final class ServerPropertyNames
{
@@ -45,10 +45,16 @@
*/
public static final String FEATURE_QPID_JMS_SELECTOR = "qpid.jms-selector";
+ /**
+ * Server property: 'name' attribute of the server instance.
+ */
+ public static final String QPID_INSTANCE_NAME = "qpid.instance_name";
- 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";
+ /**
+ * Server property: build number.
+ */
+ public static final String QPID_BUILD = "qpid.build";
+ public static final String PRODUCT = "product";
+ public static final String VERSION = "version";
}