ARTEMIS-629 Preserve the correlation ID type during conversions When converted to a core message type the original type of the CorrelationId in the AMQP message is lost, we must encode the type to prevent the loss of the original type as this value is meant to be immutable.
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/688eac50 Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/688eac50 Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/688eac50 Branch: refs/heads/master Commit: 688eac50ea7f73eb366eced72753073cdd3535dc Parents: 1893d77 Author: Timothy Bish <[email protected]> Authored: Tue Jul 12 18:18:26 2016 -0400 Committer: Andy Taylor <[email protected]> Committed: Thu Jul 14 10:08:55 2016 +0100 ---------------------------------------------------------------------- .../proton/converter/message/InboundTransformer.java | 2 +- .../converter/message/JMSMappingOutboundTransformer.java | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/688eac50/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/proton/converter/message/InboundTransformer.java ---------------------------------------------------------------------- diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/proton/converter/message/InboundTransformer.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/proton/converter/message/InboundTransformer.java index 71f75c4..9560ac1 100644 --- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/proton/converter/message/InboundTransformer.java +++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/proton/converter/message/InboundTransformer.java @@ -215,7 +215,7 @@ public abstract class InboundTransformer { jms.setJMSReplyTo(vendor.createDestination(properties.getReplyTo())); } if (properties.getCorrelationId() != null) { - jms.setJMSCorrelationID(properties.getCorrelationId().toString()); + jms.setJMSCorrelationID(AMQPMessageIdHelper.INSTANCE.toBaseMessageIdString(properties.getCorrelationId())); } if (properties.getContentType() != null) { jms.setStringProperty(prefixVendor + "ContentType", properties.getContentType().toString()); http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/688eac50/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/proton/converter/message/JMSMappingOutboundTransformer.java ---------------------------------------------------------------------- diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/proton/converter/message/JMSMappingOutboundTransformer.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/proton/converter/message/JMSMappingOutboundTransformer.java index 46dc269..a6ccfa9 100644 --- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/proton/converter/message/JMSMappingOutboundTransformer.java +++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/proton/converter/message/JMSMappingOutboundTransformer.java @@ -176,7 +176,14 @@ public class JMSMappingOutboundTransformer extends OutboundTransformer { maMap.put(LEGACY_JMS_REPLY_TO_TYPE_MSG_ANNOTATION, destinationAttributes(msg.getJMSReplyTo())); } if (msg.getJMSCorrelationID() != null) { - props.setCorrelationId(msg.getJMSCorrelationID()); + String correlationId = msg.getJMSCorrelationID(); + + try { + props.setCorrelationId(AMQPMessageIdHelper.INSTANCE.toIdObject(correlationId)); + } + catch (ActiveMQAMQPIllegalStateException e) { + props.setCorrelationId(correlationId); + } } if (msg.getJMSExpiration() != 0) { long ttl = msg.getJMSExpiration() - System.currentTimeMillis();
