summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2013-05-14 21:50:33 +0000
committerRobert Godfrey <rgodfrey@apache.org>2013-05-14 21:50:33 +0000
commitb817022602f3dc25c94fbbb67969f42522a286f0 (patch)
treeeba040297d2c847e28d781c7a290f48feac6a1f9 /java
parent15c5e37cbe099fceb62222de1d1494254129bcca (diff)
downloadqpid-python-b817022602f3dc25c94fbbb67969f42522a286f0.tar.gz
QPID-4844 : [JMS AMQP 1.0] Allow option to use String rather than Binary values for generated message-ids
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1482609 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java52
-rw-r--r--java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java13
-rw-r--r--java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java7
3 files changed, 51 insertions, 21 deletions
diff --git a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
index 4856a7c491..96788ecd27 100644
--- a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
+++ b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
@@ -45,6 +45,7 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection
private String _queuePrefix;
private String _topicPrefix;
+ private boolean _useBinaryMessageId;
public ConnectionFactoryImpl(final String host,
final int port,
@@ -100,6 +101,7 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection
ConnectionImpl connection = new ConnectionImpl(_host, _port, username, password, _clientId, _remoteHost, _ssl);
connection.setQueuePrefix(_queuePrefix);
connection.setTopicPrefix(_topicPrefix);
+ connection.setUseBinaryMessageId(_useBinaryMessageId);
return connection;
}
@@ -149,6 +151,9 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection
String password = null;
String clientId = null;
String remoteHost = null;
+
+ boolean binaryMessageId = true;
+
if(userInfo != null)
{
String[] components = userInfo.split(":",2);
@@ -161,22 +166,26 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection
String query = url.getQuery();
if(query != null)
{
- for(String param : query.split("&"))
- {
- String[] keyValuePair = param.split("=",2);
- if(keyValuePair[0].equalsIgnoreCase("clientid"))
- {
- clientId = keyValuePair[1];
- }
- else if(keyValuePair[0].equalsIgnoreCase("ssl"))
- {
- ssl = Boolean.valueOf(keyValuePair[1]);
- }
- else if(keyValuePair[0].equalsIgnoreCase("remote-host"))
- {
- remoteHost = keyValuePair[1];
- }
- }
+ for(String param : query.split("&"))
+ {
+ String[] keyValuePair = param.split("=",2);
+ if(keyValuePair[0].equalsIgnoreCase("clientid"))
+ {
+ clientId = keyValuePair[1];
+ }
+ else if(keyValuePair[0].equalsIgnoreCase("ssl"))
+ {
+ ssl = Boolean.valueOf(keyValuePair[1]);
+ }
+ else if(keyValuePair[0].equalsIgnoreCase("remote-host"))
+ {
+ remoteHost = keyValuePair[1];
+ }
+ else if (keyValuePair[0].equalsIgnoreCase("binary-messageid"))
+ {
+ binaryMessageId = Boolean.parseBoolean(keyValuePair[1]);
+ }
+ }
}
if(remoteHost == null)
@@ -184,7 +193,11 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection
remoteHost = host;
}
- return new ConnectionFactoryImpl(host, port, username, password, clientId, remoteHost, ssl);
+ ConnectionFactoryImpl connectionFactory =
+ new ConnectionFactoryImpl(host, port, username, password, clientId, remoteHost, ssl);
+ connectionFactory.setUseBinaryMessageId(binaryMessageId);
+
+ return connectionFactory;
}
@@ -235,4 +248,9 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection
{
_queuePrefix = queuePrefix;
}
+
+ public void setUseBinaryMessageId(boolean useBinaryMessageId)
+ {
+ _useBinaryMessageId = useBinaryMessageId;
+ }
}
diff --git a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java
index 4028d32e15..0ad62fd730 100644
--- a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java
+++ b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java
@@ -56,7 +56,7 @@ public class ConnectionImpl implements Connection, QueueConnection, TopicConnect
private String _clientId;
private String _queuePrefix;
private String _topicPrefix;
-
+ private boolean _useBinaryMessageId = Boolean.parseBoolean(System.getProperty("qpid.use_binary_message_id", "true"));
private static enum State
{
@@ -510,4 +510,15 @@ public class ConnectionImpl implements Connection, QueueConnection, TopicConnect
return new DecodedDestination(address, kind);
}
+ void setUseBinaryMessageId(boolean useBinaryMessageId)
+ {
+ _useBinaryMessageId = useBinaryMessageId;
+ }
+
+ boolean useBinaryMessageId()
+ {
+ return _useBinaryMessageId;
+ }
+
+
}
diff --git a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
index 3b44bae84b..07a134f756 100644
--- a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
+++ b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
@@ -240,7 +240,7 @@ public class MessageProducerImpl implements MessageProducer, QueueSender, TopicP
if(!getDisableMessageID() && msg.getMessageId() == null)
{
- final Binary messageId = generateMessageId();
+ final Object messageId = generateMessageId();
msg.setMessageId(messageId);
}
@@ -297,10 +297,11 @@ public class MessageProducerImpl implements MessageProducer, QueueSender, TopicP
send((Destination)queue, message, deliveryMode, priority, ttl);
}
- private Binary generateMessageId()
+ private Object generateMessageId()
{
UUID uuid = UUID.randomUUID();
- return new Binary(uuid.toString().getBytes());
+ final String messageIdString = uuid.toString();
+ return _session.getConnection().useBinaryMessageId() ? new Binary(messageIdString.getBytes()) : messageIdString;
}
public void send(final Destination destination, final Message message) throws JMSException