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 <[email protected]> Authored: Thu Sep 25 16:47:28 2014 +0100 Committer: Robert Gemmell <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
