From 9571ca16dbb5c74b077a04b61268babdc6019211 Mon Sep 17 00:00:00 2001 From: Clebert Suconic Date: Thu, 7 May 2020 12:16:35 -0400 Subject: [PATCH] ARTEMIS-2753 Expanding wildcard fix to Advisories --- .../core/protocol/openwire/amq/AMQConsumer.java | 7 +------ .../core/protocol/openwire/amq/AMQSession.java | 15 +++++++-------- .../protocol/openwire/amq/AMQConsumerTest.java | 3 ++- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java index cefd027a4e..7e6be4344e 100644 --- a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java +++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java @@ -139,12 +139,7 @@ public class AMQConsumer { } } - SimpleString destinationName; - if (openwireDestination.isTemporary()) { - destinationName = new SimpleString(openwireDestination.getPhysicalName()); - } else { - destinationName = new SimpleString(session.convertWildcard(openwireDestination.getPhysicalName())); - } + SimpleString destinationName = new SimpleString(session.convertWildcard(openwireDestination)); if (openwireDestination.isTopic()) { SimpleString queueName = createTopicSubscription(info.isDurable(), info.getClientId(), destinationName.toString(), info.getSubscriptionName(), selector, destinationName); diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java index af7a1944e5..106983ff15 100644 --- a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java +++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java @@ -183,12 +183,7 @@ public class AMQSession implements SessionCallback { } if (openWireDest.isQueue()) { openWireDest = protocolManager.virtualTopicConsumerToFQQN(openWireDest); - SimpleString queueName; - if (!openWireDest.isTemporary()) { - queueName = new SimpleString(convertWildcard(openWireDest.getPhysicalName())); - } else { - queueName = new SimpleString(openWireDest.getPhysicalName()); - } + SimpleString queueName = new SimpleString(convertWildcard(openWireDest)); if (!checkAutoCreateQueue(queueName, openWireDest.isTemporary())) { throw new InvalidDestinationException("Destination doesn't exist: " + queueName); @@ -522,8 +517,12 @@ public class AMQSession implements SessionCallback { connection.enableTtl(); } - public String convertWildcard(String physicalName) { - return OPENWIRE_WILDCARD.convert(physicalName, server.getConfiguration().getWildcardConfiguration()); + public String convertWildcard(ActiveMQDestination openWireDest) { + if (openWireDest.isTemporary() || AdvisorySupport.isAdvisoryTopic(openWireDest)) { + return openWireDest.getPhysicalName(); + } else { + return OPENWIRE_WILDCARD.convert(openWireDest.getPhysicalName(), server.getConfiguration().getWildcardConfiguration()); + } } public ServerSession getCoreSession() { diff --git a/artemis-protocols/artemis-openwire-protocol/src/test/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumerTest.java b/artemis-protocols/artemis-openwire-protocol/src/test/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumerTest.java index b25881b837..5c1a879114 100644 --- a/artemis-protocols/artemis-openwire-protocol/src/test/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumerTest.java +++ b/artemis-protocols/artemis-openwire-protocol/src/test/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumerTest.java @@ -28,6 +28,7 @@ import org.apache.activemq.artemis.core.server.MessageReference; import org.apache.activemq.artemis.core.server.ServerSession; import org.apache.activemq.artemis.core.server.SlowConsumerDetectionListener; import org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl; +import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.ActiveMQTopic; import org.apache.activemq.command.ConsumerInfo; import org.junit.Assert; @@ -63,7 +64,7 @@ public class AMQConsumerTest { Mockito.when(session.getConnection()).thenReturn(Mockito.mock(OpenWireConnection.class)); Mockito.when(session.getCoreServer()).thenReturn(Mockito.mock(ActiveMQServer.class)); Mockito.when(session.getCoreSession()).thenReturn(coreSession); - Mockito.when(session.convertWildcard(ArgumentMatchers.any(String.class))).thenReturn(""); + Mockito.when(session.convertWildcard(ArgumentMatchers.any(ActiveMQDestination.class))).thenReturn(""); ConsumerInfo info = new ConsumerInfo(); info.setPrefetchSize(prefetchSize);