You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2014/09/25 17:54:52 UTC

git commit: update set/getCorrelationIDAsBytes methods to use Binary objects

Repository: qpid-jms
Updated Branches:
  refs/heads/master 36a012c1a -> 2c6e26d9f


update set/getCorrelationIDAsBytes methods to use Binary objects


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/2c6e26d9
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/2c6e26d9
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/2c6e26d9

Branch: refs/heads/master
Commit: 2c6e26d9f70dd581b30ba1afea6ade19c268d7eb
Parents: 36a012c
Author: Robert Gemmell <ro...@apache.org>
Authored: Thu Sep 25 16:47:28 2014 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Thu Sep 25 16:50:09 2014 +0100

----------------------------------------------------------------------
 .../amqp/message/AmqpJmsMessageFacade.java      |  7 ++--
 .../amqp/message/AmqpJmsMessageFacadeTest.java  | 43 ++++++++++++++++++++
 2 files changed, 47 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/2c6e26d9/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
index 8afb6db..82dd1c4 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
@@ -38,6 +38,7 @@ import org.apache.qpid.jms.message.facade.JmsMessageFacade;
 import org.apache.qpid.jms.provider.amqp.AmqpConnection;
 import org.apache.qpid.jms.provider.amqp.AmqpConsumer;
 import org.apache.qpid.proton.Proton;
+import org.apache.qpid.proton.amqp.Binary;
 import org.apache.qpid.proton.amqp.Symbol;
 import org.apache.qpid.proton.amqp.UnsignedByte;
 import org.apache.qpid.proton.amqp.UnsignedInteger;
@@ -395,8 +396,8 @@ public class AmqpJmsMessageFacade implements JmsMessageFacade {
         Object correlationId = message.getCorrelationId();
         if (correlationId == null) {
             return null;
-        } else if (correlationId instanceof ByteBuffer) {
-            ByteBuffer dup = ((ByteBuffer) correlationId).duplicate();
+        } else if (correlationId instanceof Binary) {
+            ByteBuffer dup = ((Binary) correlationId).asByteBuffer();
             byte[] bytes = new byte[dup.remaining()];
             dup.get(bytes);
             return bytes;
@@ -415,7 +416,7 @@ public class AmqpJmsMessageFacade implements JmsMessageFacade {
             message.setCorrelationId(correlationId);
         } else {
             byte[] bytes = Arrays.copyOf(correlationId, correlationId.length);
-            message.setCorrelationId(ByteBuffer.wrap(bytes));
+            message.setCorrelationId(new Binary(bytes));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/2c6e26d9/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
index 5a14699..1bb94c8 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.jms.provider.amqp.message;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
@@ -34,12 +35,14 @@ import org.apache.qpid.jms.JmsDestination;
 import org.apache.qpid.jms.JmsTopic;
 import org.apache.qpid.jms.provider.amqp.AmqpConnection;
 import org.apache.qpid.jms.provider.amqp.AmqpConsumer;
+import org.apache.qpid.jms.test.testpeer.describedtypes.sections.PropertiesDescribedType;
 import org.apache.qpid.proton.Proton;
 import org.apache.qpid.proton.amqp.Binary;
 import org.apache.qpid.proton.amqp.Symbol;
 import org.apache.qpid.proton.amqp.UnsignedLong;
 import org.apache.qpid.proton.amqp.messaging.MessageAnnotations;
 import org.apache.qpid.proton.amqp.messaging.Properties;
+import org.apache.qpid.proton.codec.impl.DataImpl;
 import org.apache.qpid.proton.message.Message;
 import org.junit.Test;
 import org.mockito.Mockito;
@@ -206,6 +209,46 @@ public class AmqpJmsMessageFacadeTest {
     }
 
     /**
+     * Test that setting then getting bytes as the correlationId returns the expected value
+     * and sets the correlation id field as expected on the underlying AMQP message
+     * @throws Exception if unexpected error
+     */
+    @Test
+    public void testSetGetCorrelationIdBytesOnNewMessage() throws Exception {
+        Binary testCorrelationId = createBinaryId();
+        byte[] bytes = testCorrelationId.getArray();
+
+        AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
+        amqpMessageFacade.setCorrelationIdBytes(bytes);
+
+        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getAmqpMessage().getCorrelationId());
+        assertArrayEquals("Expected correlationId bytes not returned", bytes, amqpMessageFacade.getCorrelationIdBytes());
+    }
+
+    @Test
+    public void testGetCorrelationIdBytesOnReceievedMessageWithBinaryId() throws Exception {
+        Binary testCorrelationId = createBinaryId();
+        byte[] bytes = testCorrelationId.getArray();
+
+        org.apache.qpid.proton.codec.Data payloadData = new DataImpl();
+        PropertiesDescribedType props = new PropertiesDescribedType();
+        props.setCorrelationId(new Binary(bytes));
+        payloadData.putDescribedType(props);
+        Binary b = payloadData.encode();
+
+        System.out.println("Using encoded AMQP message payload: " + b);
+
+        Message message = Proton.message();
+        int decoded = message.decode(b.getArray(), b.getArrayOffset(), b.getLength());
+        assertEquals(decoded, b.getLength());
+
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+
+        assertEquals("Unexpected correlationId value on underlying AMQP message", testCorrelationId, amqpMessageFacade.getAmqpMessage().getCorrelationId());
+        assertArrayEquals("Expected correlationId bytes not returned", bytes, amqpMessageFacade.getCorrelationIdBytes());
+    }
+
+    /**
      * Test that getting the correlationId when using an underlying received message with a
      * Binary message id returns the expected ByteBuffer value.
      */


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org