ARTEMIS-303 listing subs fails for JMS2 shared sub
This commit is contained in:
parent
8abf9cfaa6
commit
831eabfc73
|
@ -199,7 +199,12 @@ public class ActiveMQDestination implements Destination, Serializable, Reference
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentPart != 1) {
|
if (currentPart != 1) {
|
||||||
throw new JMSRuntimeException("Invalid message queue name: " + queueName);
|
/* JMS 2.0 introduced the ability to create "shared" subscriptions which do not require a clientID.
|
||||||
|
* In this case the subscription name will be the same as the queue name, but the above algorithm will put that
|
||||||
|
* in the wrong position in the array so we need to move it.
|
||||||
|
*/
|
||||||
|
parts[1] = parts[0];
|
||||||
|
parts[0] = new StringBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
Pair<String, String> pair = new Pair<>(parts[0].toString(), parts[1].toString());
|
Pair<String, String> pair = new Pair<>(parts[0].toString(), parts[1].toString());
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.activemq.artemis.tests.integration.jms.server.management;
|
package org.apache.activemq.artemis.tests.integration.jms.server.management;
|
||||||
|
|
||||||
|
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
|
||||||
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
|
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
|
||||||
import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
|
import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
|
||||||
import org.apache.activemq.artemis.api.jms.management.JMSServerControl;
|
import org.apache.activemq.artemis.api.jms.management.JMSServerControl;
|
||||||
|
@ -42,6 +43,8 @@ import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import javax.jms.Connection;
|
import javax.jms.Connection;
|
||||||
|
import javax.jms.ConnectionFactory;
|
||||||
|
import javax.jms.JMSContext;
|
||||||
import javax.jms.Message;
|
import javax.jms.Message;
|
||||||
import javax.jms.MessageConsumer;
|
import javax.jms.MessageConsumer;
|
||||||
import javax.jms.MessageProducer;
|
import javax.jms.MessageProducer;
|
||||||
|
@ -203,6 +206,42 @@ public class TopicControlTest extends ManagementTestBase {
|
||||||
connection_3.close();
|
connection_3.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testListXXXSubscriptionsAsJSONJMS2() throws Exception {
|
||||||
|
ConnectionFactory cf = JMSUtil.createFactory(InVMConnectorFactory.class.getName(), ActiveMQClient.DEFAULT_CONNECTION_TTL_INVM, ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD_INVM);
|
||||||
|
JMSContext jmsContext1 = cf.createContext();
|
||||||
|
jmsContext1.createSharedDurableConsumer(topic, subscriptionName, null);
|
||||||
|
JMSContext jmsContext2 = cf.createContext();
|
||||||
|
jmsContext2.createSharedDurableConsumer(topic, subscriptionName + "2", null);
|
||||||
|
JMSContext jmsContext3 = cf.createContext();
|
||||||
|
jmsContext3.createConsumer(topic);
|
||||||
|
|
||||||
|
TopicControl topicControl = createManagementControl();
|
||||||
|
String jsonString = topicControl.listDurableSubscriptionsAsJSON();
|
||||||
|
SubscriptionInfo[] infos = SubscriptionInfo.from(jsonString);
|
||||||
|
Assert.assertEquals(2, infos.length);
|
||||||
|
|
||||||
|
Assert.assertTrue(infos[0].getClientID().length() == 0);
|
||||||
|
Assert.assertTrue(infos[0].getName().equals(subscriptionName));
|
||||||
|
|
||||||
|
Assert.assertTrue(infos[1].getClientID().length() == 0);
|
||||||
|
Assert.assertTrue(infos[1].getName().equals(subscriptionName + "2"));
|
||||||
|
|
||||||
|
jsonString = topicControl.listNonDurableSubscriptionsAsJSON();
|
||||||
|
infos = SubscriptionInfo.from(jsonString);
|
||||||
|
Assert.assertEquals(1, infos.length);
|
||||||
|
Assert.assertEquals(null, infos[0].getClientID());
|
||||||
|
Assert.assertEquals(null, infos[0].getName());
|
||||||
|
|
||||||
|
jsonString = topicControl.listAllSubscriptionsAsJSON();
|
||||||
|
infos = SubscriptionInfo.from(jsonString);
|
||||||
|
Assert.assertEquals(3, infos.length);
|
||||||
|
|
||||||
|
jmsContext1.close();
|
||||||
|
jmsContext2.close();
|
||||||
|
jmsContext3.close();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testListSubscriptionsAsJSONWithHierarchicalTopics() throws Exception {
|
public void testListSubscriptionsAsJSONWithHierarchicalTopics() throws Exception {
|
||||||
serverManager.createTopic(false, "my.jms.#", "jms/all");
|
serverManager.createTopic(false, "my.jms.#", "jms/all");
|
||||||
|
|
Loading…
Reference in New Issue