Author: rgodfrey
Date: Tue May 14 21:50:33 2013
New Revision: 1482609

URL: http://svn.apache.org/r1482609
Log:
QPID-4844 : [JMS AMQP 1.0] Allow option to use String rather than Binary values 
for generated message-ids

Modified:
    
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
    
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java
    
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java

Modified: 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java?rev=1482609&r1=1482608&r2=1482609&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
 Tue May 14 21:50:33 2013
@@ -45,6 +45,7 @@ public class ConnectionFactoryImpl imple
 
     private String _queuePrefix;
     private String _topicPrefix;
+    private boolean _useBinaryMessageId;
 
     public ConnectionFactoryImpl(final String host,
                                  final int port,
@@ -100,6 +101,7 @@ public class ConnectionFactoryImpl imple
         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 imple
         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 imple
         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 imple
             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 imple
     {
         _queuePrefix = queuePrefix;
     }
+
+    public void setUseBinaryMessageId(boolean useBinaryMessageId)
+    {
+        _useBinaryMessageId = useBinaryMessageId;
+    }
 }

Modified: 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java?rev=1482609&r1=1482608&r2=1482609&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java
 Tue May 14 21:50:33 2013
@@ -56,7 +56,7 @@ public class ConnectionImpl implements C
     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 C
         return new DecodedDestination(address, kind);
     }
 
+    void setUseBinaryMessageId(boolean useBinaryMessageId)
+    {
+        _useBinaryMessageId = useBinaryMessageId;
+    }
+
+    boolean useBinaryMessageId()
+    {
+        return _useBinaryMessageId;
+    }
+
+
 }

Modified: 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java?rev=1482609&r1=1482608&r2=1482609&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
 Tue May 14 21:50:33 2013
@@ -240,7 +240,7 @@ public class MessageProducerImpl impleme
 
         if(!getDisableMessageID() && msg.getMessageId() == null)
         {
-            final Binary messageId = generateMessageId();
+            final Object messageId = generateMessageId();
             msg.setMessageId(messageId);
 
         }
@@ -297,10 +297,11 @@ public class MessageProducerImpl impleme
         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



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

Reply via email to