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}"); } }; }