This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.14.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 1cb148ed9f4b75b10ccd1eac5ff06a29b82fbf45
Author: Artem Starikov <artemofic...@gmail.com>
AuthorDate: Wed Jun 1 18:50:17 2022 +0300

    [CAMEL-18459] Fixes incorrect JmsSendDynamicAware parsing for destinations 
that starts with "schema://" and dose not have queue: or topic: prefix
---
 .../java/org/apache/camel/component/jms/JmsSendDynamicAware.java | 2 ++
 .../org/apache/camel/component/jms/JmsToDSendDynamicTest.java    | 9 +++++++++
 2 files changed, 11 insertions(+)

diff --git 
a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsSendDynamicAware.java
 
b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsSendDynamicAware.java
index 0a42ce7c913..6329db3f106 100644
--- 
a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsSendDynamicAware.java
+++ 
b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsSendDynamicAware.java
@@ -104,10 +104,12 @@ public class JmsSendDynamicAware extends ServiceSupport 
implements SendDynamicAw
 
     private String parseDestinationName(String uri) {
         // strip query
+        uri = uri.replaceFirst(scheme + "://", ":");
         int pos = uri.indexOf('?');
         if (pos != -1) {
             uri = uri.substring(0, pos);
         }
+
         // destination name is after last colon
         pos = uri.lastIndexOf(':');
         if (pos != -1) {
diff --git 
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTest.java
 
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTest.java
index fb75eed1bbb..cd227b1b471 100644
--- 
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTest.java
+++ 
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.jms;
 import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
@@ -43,6 +44,13 @@ public class JmsToDSendDynamicTest extends CamelTestSupport {
         out = consumer.receiveBody("activemq:queue:beer", 2000, String.class);
         assertEquals("Hello beer", out);
     }
+    @Test
+    public void testToDSlashed() {
+        template.sendBodyAndHeader("direct:startSlashed", "Hello bar", 
"where", "bar");
+
+        Exchange exchange = consumer.receive("activemq://bar", 2000);
+        exchange.getMessage().getHeader(JmsConstants.JMS_DESTINATION_NAME);
+    }
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
@@ -61,6 +69,7 @@ public class JmsToDSendDynamicTest extends CamelTestSupport {
             public void configure() throws Exception {
                 // route message dynamic using toD
                 from("direct:start").toD("activemq:queue:${header.where}");
+                from("direct:startSlashed").toD("activemq://${header.where}");
             }
         };
     }

Reply via email to