Repository: activemq-artemis Updated Branches: refs/heads/2.6.x 292566e39 -> cad1e9a63
ARTEMIS-2139 Ensure 1.x Client reply to address is correct Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/cad1e9a6 Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/cad1e9a6 Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/cad1e9a6 Branch: refs/heads/2.6.x Commit: cad1e9a630ddfb4647d7ee59c83195d98fbf1d30 Parents: 292566e Author: Martyn Taylor <[email protected]> Authored: Fri Oct 19 12:07:44 2018 +0100 Committer: Martyn Taylor <[email protected]> Committed: Tue Oct 23 15:51:24 2018 +0100 ---------------------------------------------------------------------- .../artemis/jms/client/ActiveMQDestination.java | 37 ++++++-------------- .../artemis/jms/client/ActiveMQMessage.java | 30 +++++++++------- 2 files changed, 29 insertions(+), 38 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/cad1e9a6/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java ---------------------------------------------------------------------- diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java index 6d1b409..a349e3e 100644 --- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java +++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java @@ -91,39 +91,24 @@ public class ActiveMQDestination extends JNDIStorable implements Destination, Se return fromPrefixedName(name, name); } - public static Destination fromPrefixedName(final String addr, final String name) { + public static Destination fromPrefixedName(final String addr, String name) { ActiveMQDestination destination; - if (addr.startsWith(ActiveMQDestination.QUEUE_QUALIFIED_PREFIX)) { - String address = addr.substring(ActiveMQDestination.QUEUE_QUALIFIED_PREFIX.length()); - destination = createQueue(address); - } else if (addr.startsWith(ActiveMQDestination.TOPIC_QUALIFIED_PREFIX)) { - String address = addr.substring(ActiveMQDestination.TOPIC_QUALIFIED_PREFIX.length()); - destination = createTopic(address); - } else if (addr.startsWith(ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX)) { - String address = addr.substring(ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX.length()); - destination = new ActiveMQTemporaryQueue(address, null); - } else if (addr.startsWith(ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX)) { - String address = addr.substring(ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX.length()); - destination = new ActiveMQTemporaryTopic(address, null); - } else { - destination = new ActiveMQDestination(addr, TYPE.DESTINATION, null); - } - - String unprefixedName = name; - if (name.startsWith(ActiveMQDestination.QUEUE_QUALIFIED_PREFIX)) { - unprefixedName = name.substring(ActiveMQDestination.QUEUE_QUALIFIED_PREFIX.length()); + name = name.substring(ActiveMQDestination.QUEUE_QUALIFIED_PREFIX.length()); + destination = createQueue(addr, name); } else if (name.startsWith(ActiveMQDestination.TOPIC_QUALIFIED_PREFIX)) { - unprefixedName = name.substring(ActiveMQDestination.TOPIC_QUALIFIED_PREFIX.length()); + name = name.substring(ActiveMQDestination.TOPIC_QUALIFIED_PREFIX.length()); + destination = createTopic(addr, name); } else if (name.startsWith(ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX)) { - unprefixedName = name.substring(ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX.length()); + name = name.substring(ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX.length()); + destination = new ActiveMQTemporaryQueue(addr, null); } else if (name.startsWith(ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX)) { - unprefixedName = name.substring(ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX.length()); + name = name.substring(ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX.length()); + destination = new ActiveMQTemporaryTopic(addr, null); + } else { + destination = new ActiveMQDestination(addr, TYPE.DESTINATION, null); } - - destination.setName(unprefixedName); - return destination; } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/cad1e9a6/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java ---------------------------------------------------------------------- diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java index ff7da00..bd0f7eb 100644 --- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java +++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java @@ -46,8 +46,10 @@ import org.apache.activemq.artemis.api.jms.ActiveMQJMSConstants; import org.apache.activemq.artemis.core.client.ActiveMQClientMessageBundle; import org.apache.activemq.artemis.core.client.impl.ClientMessageInternal; import org.apache.activemq.artemis.api.core.RoutingType; +import org.apache.activemq.artemis.core.protocol.core.Packet; import org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl; import org.apache.activemq.artemis.reader.MessageUtil; +import org.apache.activemq.artemis.utils.PrefixUtil; import org.apache.activemq.artemis.utils.UUID; import static org.apache.activemq.artemis.jms.client.ActiveMQDestination.QUEUE_QUALIFIED_PREFIX; @@ -66,10 +68,8 @@ public class ActiveMQMessage implements javax.jms.Message { // Constants ----------------------------------------------------- public static final byte TYPE = org.apache.activemq.artemis.api.core.Message.DEFAULT_TYPE; - public static final SimpleString OLD_QUEUE_QUALIFIED_PREFIX = SimpleString.toSimpleString(ActiveMQDestination.QUEUE_QUALIFIED_PREFIX + PacketImpl.OLD_QUEUE_PREFIX); - public static final SimpleString OLD_TEMP_QUEUE_QUALIFED_PREFIX = SimpleString.toSimpleString(ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX + PacketImpl.OLD_TEMP_QUEUE_PREFIX); - public static final SimpleString OLD_TOPIC_QUALIFIED_PREFIX = SimpleString.toSimpleString(ActiveMQDestination.TOPIC_QUALIFIED_PREFIX + PacketImpl.OLD_TOPIC_PREFIX); - public static final SimpleString OLD_TEMP_TOPIC_QUALIFED_PREFIX = SimpleString.toSimpleString(ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX + PacketImpl.OLD_TEMP_TOPIC_PREFIX); + public static final String QUEUE_PREFIX = PacketImpl.OLD_QUEUE_PREFIX.toString(); + public static final String TOPIC_PREFIX = PacketImpl.OLD_TOPIC_PREFIX.toString(); public static Map<String, Object> coreMaptoJMSMap(final Map<String, Object> coreMessage) { Map<String, Object> jmsMessage = new HashMap<>(); @@ -372,14 +372,20 @@ public class ActiveMQMessage implements javax.jms.Message { // swap the old prefixes for the new ones so the proper destination type gets created if (enable1xPrefixes) { - if (address.startsWith(OLD_QUEUE_QUALIFIED_PREFIX)) { - name = address.subSeq(OLD_QUEUE_QUALIFIED_PREFIX.length(), address.length()).toString(); - } else if (address.startsWith(OLD_TEMP_QUEUE_QUALIFED_PREFIX)) { - name = address.subSeq(OLD_TEMP_QUEUE_QUALIFED_PREFIX.length(), address.length()).toString(); - } else if (address.startsWith(OLD_TOPIC_QUALIFIED_PREFIX)) { - name = address.subSeq(OLD_TOPIC_QUALIFIED_PREFIX.length(), address.length()).toString(); - } else if (address.startsWith(OLD_TEMP_TOPIC_QUALIFED_PREFIX)) { - name = address.subSeq(OLD_TEMP_TOPIC_QUALIFED_PREFIX.length(), address.length()).toString(); + if (name.startsWith(ActiveMQDestination.QUEUE_QUALIFIED_PREFIX)) { + name = name.substring(ActiveMQDestination.QUEUE_QUALIFIED_PREFIX.length()); + } else if (name.startsWith(ActiveMQDestination.TOPIC_QUALIFIED_PREFIX)) { + name = name.substring(ActiveMQDestination.TOPIC_QUALIFIED_PREFIX.length()); + } else if (name.startsWith(ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX)) { + name = name.substring(ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX.length()); + } else if (name.startsWith(ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX)) { + name = name.substring(ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX.length()); + } + + if (name.startsWith(QUEUE_PREFIX)) { + name = ActiveMQDestination.QUEUE_QUALIFIED_PREFIX + name.substring(QUEUE_PREFIX.length()); + } else if (name.startsWith(TOPIC_PREFIX)) { + name = ActiveMQDestination.TOPIC_QUALIFIED_PREFIX + name.substring(TOPIC_PREFIX.length()); } } replyTo = ActiveMQDestination.fromPrefixedName(address.toString(), name);
