This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-2.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.x by this push: new 1272956 CAMEL-13864: Allow subscriptionName to be set for non-durable shared subscription 1272956 is described below commit 12729564bff377db3a59a759461734adc0d9045c Author: Benjamin Graf <benjamin.g...@gmx.net> AuthorDate: Tue Aug 13 21:23:42 2019 +0200 CAMEL-13864: Allow subscriptionName to be set for non-durable shared subscription --- .../apache/camel/component/jms/JmsEndpoint.java | 6 ++-- .../jms/JmsEndpointConfigurationTest.java | 38 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java index 73a3dd1..91e8a11 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java @@ -245,9 +245,9 @@ public class JmsEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade listenerContainer.setDurableSubscriptionName(configuration.getDurableSubscriptionName()); } else if (configuration.isSubscriptionDurable()) { listenerContainer.setSubscriptionDurable(true); - if (configuration.getSubscriptionName() != null) { - listenerContainer.setSubscriptionName(configuration.getSubscriptionName()); - } + } + if (configuration.getSubscriptionName() != null) { + listenerContainer.setSubscriptionName(configuration.getSubscriptionName()); } listenerContainer.setSubscriptionShared(configuration.isSubscriptionShared()); } diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java index 4ea9ebb..60db607 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java @@ -71,6 +71,44 @@ public class JmsEndpointConfigurationTest extends CamelTestSupport { } @Test + public void testDurableSharedSubscriber() throws Exception { + JmsEndpoint endpoint = resolveMandatoryEndpoint("jms:topic:Foo.Bar?subscriptionDurable=true&subscriptionShared=true&subscriptionName=James", JmsEndpoint.class); + JmsConfiguration configuration = endpoint.getConfiguration(); + assertEquals("isSubscriptionDurable()", true, configuration.isSubscriptionDurable()); + assertEquals("isSubscriptionShared()", true, configuration.isSubscriptionShared()); + assertEquals("getSubscriptionName()", "James", configuration.getSubscriptionName()); + + JmsConsumer consumer = endpoint.createConsumer(new Processor() { + public void process(Exchange exchange) throws Exception { + log.info("Received: " + exchange); + } + }); + AbstractMessageListenerContainer listenerContainer = consumer.getListenerContainer(); + assertEquals("isSubscriptionDurable()", true, listenerContainer.isSubscriptionDurable()); + assertEquals("isSubscriptionShared()", true, listenerContainer.isSubscriptionShared()); + assertEquals("getSubscriptionName()", "James", listenerContainer.getSubscriptionName()); + } + + @Test + public void testNonDurableSharedSubscriber() throws Exception { + JmsEndpoint endpoint = resolveMandatoryEndpoint("jms:topic:Foo.Bar?subscriptionShared=true&subscriptionName=James", JmsEndpoint.class); + JmsConfiguration configuration = endpoint.getConfiguration(); + assertEquals("isSubscriptionDurable()", false, configuration.isSubscriptionDurable()); + assertEquals("isSubscriptionShared()", true, configuration.isSubscriptionShared()); + assertEquals("getSubscriptionName()", "James", configuration.getSubscriptionName()); + + JmsConsumer consumer = endpoint.createConsumer(new Processor() { + public void process(Exchange exchange) throws Exception { + log.info("Received: " + exchange); + } + }); + AbstractMessageListenerContainer listenerContainer = consumer.getListenerContainer(); + assertEquals("isSubscriptionDurable()", false, listenerContainer.isSubscriptionDurable()); + assertEquals("isSubscriptionShared()", true, listenerContainer.isSubscriptionShared()); + assertEquals("getSubscriptionName()", "James", listenerContainer.getSubscriptionName()); + } + + @Test public void testSetUsernameAndPassword() throws Exception { JmsEndpoint endpoint = resolveMandatoryEndpoint("jms:topic:Foo.Bar?username=James&password=ABC", JmsEndpoint.class); ConnectionFactory cf = endpoint.getConfiguration().getConnectionFactory();