ARTEMIS-1290 QueueQuery add prefix on address 2
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/e742de7d Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/e742de7d Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/e742de7d Branch: refs/heads/master Commit: e742de7d6e7ecf4af367d21de5285cfe91f7322b Parents: 34df3af Author: Martyn Taylor <[email protected]> Authored: Tue Jul 18 19:43:23 2017 +0100 Committer: Clebert Suconic <[email protected]> Committed: Tue Jul 18 16:16:42 2017 -0400 ---------------------------------------------------------------------- .../protocol/core/impl/wireformat/QueueAbstractPacket.java | 9 +++++++++ .../activemq/artemis/core/server/QueueQueryResult.java | 4 ++++ .../core/protocol/core/ServerSessionPacketHandler.java | 9 +++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e742de7d/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/QueueAbstractPacket.java ---------------------------------------------------------------------- diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/QueueAbstractPacket.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/QueueAbstractPacket.java index 767cd0c..641d7cc 100644 --- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/QueueAbstractPacket.java +++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/QueueAbstractPacket.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.apache.activemq.artemis.api.core.RoutingType; import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl; @@ -108,4 +109,12 @@ public abstract class QueueAbstractPacket extends PacketImpl { public QueueAbstractPacket(byte type) { super(type); } + + public static SimpleString getOldPrefixedAddress(SimpleString address, RoutingType routingType) { + switch (routingType) { + case MULTICAST: return OLD_TOPIC_PREFIX.concat(address); + case ANYCAST: return OLD_QUEUE_PREFIX.concat(address); + default: return address; + } + } } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e742de7d/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/server/QueueQueryResult.java ---------------------------------------------------------------------- diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/server/QueueQueryResult.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/server/QueueQueryResult.java index 3fd818d..cf88d62 100644 --- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/server/QueueQueryResult.java +++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/server/QueueQueryResult.java @@ -138,4 +138,8 @@ public class QueueQueryResult { public int getMaxConsumers() { return maxConsumers; } + + public void setAddress(SimpleString address) { + this.address = address; + } } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e742de7d/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java index 06fb288..88a6c2c 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java @@ -92,10 +92,10 @@ import org.apache.activemq.artemis.core.server.LargeServerMessage; import org.apache.activemq.artemis.core.server.QueueQueryResult; import org.apache.activemq.artemis.core.server.ServerSession; import org.apache.activemq.artemis.spi.core.remoting.Connection; -import org.apache.activemq.artemis.utils.actors.Actor; -import org.apache.activemq.artemis.utils.actors.OrderedExecutorFactory; import org.apache.activemq.artemis.utils.SimpleFuture; import org.apache.activemq.artemis.utils.SimpleFutureImpl; +import org.apache.activemq.artemis.utils.actors.Actor; +import org.apache.activemq.artemis.utils.actors.OrderedExecutorFactory; import org.jboss.logging.Logger; import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_ADDRESS; @@ -387,6 +387,11 @@ public class ServerSessionPacketHandler implements ChannelHandler { requiresResponse = true; SessionQueueQueryMessage request = (SessionQueueQueryMessage) packet; QueueQueryResult result = session.executeQueueQuery(request.getQueueName(remotingConnection.getClientVersion())); + + if (remotingConnection.getClientVersion() < PacketImpl.ADDRESSING_CHANGE_VERSION) { + result.setAddress(SessionQueueQueryMessage.getOldPrefixedAddress(result.getAddress(), result.getRoutingType())); + } + if (channel.supports(PacketImpl.SESS_QUEUEQUERY_RESP_V3)) { response = new SessionQueueQueryResponseMessage_V3(result); } else if (channel.supports(PacketImpl.SESS_QUEUEQUERY_RESP_V2)) {
