Repository: activemq Updated Branches: refs/heads/activemq-5.14.x 853e80063 -> 680d082a1
https://issues.apache.org/jira/browse/AMQ-6404 Add check for unmarshalled text body and handle that case. (cherry picked from commit 1030fb184216d00e3fd43a416931acd3b2fc6794) Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/680d082a Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/680d082a Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/680d082a Branch: refs/heads/activemq-5.14.x Commit: 680d082a179902d14cf38a8afde7c2c12a062106 Parents: 853e800 Author: Timothy Bish <tabish...@gmail.com> Authored: Tue Aug 23 09:58:05 2016 -0400 Committer: Timothy Bish <tabish...@gmail.com> Committed: Tue Aug 23 10:07:14 2016 -0400 ---------------------------------------------------------------------- .../amqp/message/ActiveMQJMSVendor.java | 3 ++ .../JMSMappingOutboundTransformerTest.java | 37 ++++++++++++++++++++ 2 files changed, 40 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/680d082a/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/ActiveMQJMSVendor.java ---------------------------------------------------------------------- diff --git a/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/ActiveMQJMSVendor.java b/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/ActiveMQJMSVendor.java index efd5017..9b5a4ab 100644 --- a/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/ActiveMQJMSVendor.java +++ b/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/ActiveMQJMSVendor.java @@ -17,6 +17,7 @@ package org.apache.activemq.transport.amqp.message; import java.io.DataInputStream; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -343,6 +344,8 @@ public class ActiveMQJMSVendor { // Message includes a size prefix of four bytes for the OpenWire marshaler result = new Binary(contents.getData(), contents.getOffset() + 4, contents.getLength() - 4); } + } else if (textMessage.getText() != null) { + result = new Binary(textMessage.getText().getBytes(StandardCharsets.UTF_8)); } return result; http://git-wip-us.apache.org/repos/asf/activemq/blob/680d082a/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/message/JMSMappingOutboundTransformerTest.java ---------------------------------------------------------------------- diff --git a/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/message/JMSMappingOutboundTransformerTest.java b/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/message/JMSMappingOutboundTransformerTest.java index 9184101..021ab85 100644 --- a/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/message/JMSMappingOutboundTransformerTest.java +++ b/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/message/JMSMappingOutboundTransformerTest.java @@ -606,6 +606,27 @@ public class JMSMappingOutboundTransformerTest { } @Test + public void testConvertTextMessageContentNotStoredCreatesBodyUsingOriginalEncodingWithDataSection() throws Exception { + String contentString = "myTextMessageContent"; + ActiveMQTextMessage outbound = createTextMessage(contentString); + outbound.setShortProperty(AMQP_ORIGINAL_ENCODING_KEY, AMQP_DATA); + outbound.onSend(); + + ActiveMQJMSVendor vendor = createVendor(); + JMSMappingOutboundTransformer transformer = new JMSMappingOutboundTransformer(vendor); + + Message amqp = transformer.convert(outbound); + + assertNotNull(amqp.getBody()); + assertTrue(amqp.getBody() instanceof Data); + assertTrue(((Data) amqp.getBody()).getValue() instanceof Binary); + + Binary data = ((Data) amqp.getBody()).getValue(); + String contents = new String(data.getArray(), data.getArrayOffset(), data.getLength(), StandardCharsets.UTF_8); + assertEquals(contentString, contents); + } + + @Test public void testConvertTextMessageCreatesAmqpValueStringBody() throws Exception { String contentString = "myTextMessageContent"; ActiveMQTextMessage outbound = createTextMessage(contentString); @@ -623,6 +644,22 @@ public class JMSMappingOutboundTransformerTest { } @Test + public void testConvertTextMessageContentNotStoredCreatesAmqpValueStringBody() throws Exception { + String contentString = "myTextMessageContent"; + ActiveMQTextMessage outbound = createTextMessage(contentString); + outbound.onSend(); + + ActiveMQJMSVendor vendor = createVendor(); + JMSMappingOutboundTransformer transformer = new JMSMappingOutboundTransformer(vendor); + + Message amqp = transformer.convert(outbound); + + assertNotNull(amqp.getBody()); + assertTrue(amqp.getBody() instanceof AmqpValue); + assertEquals(contentString, ((AmqpValue) amqp.getBody()).getValue()); + } + + @Test public void testConvertCompressedTextMessageCreatesDataSectionBody() throws Exception { String contentString = "myTextMessageContent"; ActiveMQTextMessage outbound = createTextMessage(contentString, true);