[ARTEMIS-1609] Add distinct name/address for JMS destinations

Fix internalCreateTopic method: the topics are keyed by their core
addresses, not their JMS names.
This commit is contained in:
Jeff Mesnil 2018-01-19 16:01:51 +01:00 committed by Michael Pearce
parent 701ab1feba
commit 2af7b3bdcb
2 changed files with 11 additions and 1 deletions

View File

@ -1133,7 +1133,7 @@ public class JMSServerManagerImpl implements JMSServerManager, ActivateCallback
ActiveMQTopic activeMQTopic = ActiveMQDestination.createTopic(address, topicName);
server.addOrUpdateAddressInfo(new AddressInfo(SimpleString.toSimpleString(activeMQTopic.getAddress()), RoutingType.MULTICAST));
topics.put(topicName, activeMQTopic);
topics.put(address, activeMQTopic);
this.recoverregistryBindings(topicName, PersistedType.Topic);

View File

@ -79,6 +79,8 @@ public class JMSServerDeployerTest extends ActiveMQTestBase {
doTestDeployTopicsWithUnusualNames("topic\\with\\backslashes\\in\\name", "/mytopic4");
doTestDeployTopicsWithUnusualNames("topic with # chars and * chars in name", "/mytopic5");
doTestDeployTopicsWithUnusualNames("jms.topic.myTopic", "/mytopic6", "myTopic");
}
private void doTestDeployQueuesWithUnusualNames(final String queueName, final String jndiName) throws Exception {
@ -97,6 +99,14 @@ public class JMSServerDeployerTest extends ActiveMQTestBase {
Assert.assertEquals(topicName, topic.getTopicName());
}
private void doTestDeployTopicsWithUnusualNames(final String topicName, final String jndiName, final String jmsTopicName) throws Exception {
jmsServer.createTopic(topicName, false, jmsTopicName, jndiName);
Topic topic = (Topic) context.lookup(jndiName);
Assert.assertNotNull(topic);
Assert.assertEquals(jmsTopicName, topic.getTopicName());
}
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------