You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/08/14 19:38:32 UTC

[camel] branch camel-2.x updated: CAMEL-13864: Allow subscriptionName to be set for non-durable shared subscription

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 <be...@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();