This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-2.21.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.21.x by this push: new 46155f3 CAMEL-12882: Camel Jms headers missing if producer endpoint has transferExchange=true 46155f3 is described below commit 46155f33dc202a63f232664c35731c24f6af1c5e Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Oct 16 08:09:59 2018 +0200 CAMEL-12882: Camel Jms headers missing if producer endpoint has transferExchange=true --- .../src/main/java/org/apache/camel/component/jms/JmsBinding.java | 3 +++ .../java/org/apache/camel/component/jms/JmsTransferExchangeTest.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java index c9c781a..731010a 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java @@ -147,6 +147,9 @@ public class JmsBinding { if (payload instanceof DefaultExchangeHolder) { DefaultExchangeHolder holder = (DefaultExchangeHolder) payload; DefaultExchangeHolder.unmarshal(exchange, holder); + // enrich with JMS headers also as otherwise they will get lost when use the transferExchange option. + Map<String, Object> jmsHeaders = extractHeadersFromJms(message, exchange); + exchange.getIn().getHeaders().putAll(jmsHeaders); return exchange.getIn().getBody(); } else { return objectMessage.getObject(); diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransferExchangeTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransferExchangeTest.java index 1aa1572..a2cea48 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransferExchangeTest.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransferExchangeTest.java @@ -40,6 +40,7 @@ public class JmsTransferExchangeTest extends CamelTestSupport { public void testBodyOnly() throws Exception { MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedBodiesReceived("Hello World"); + mock.expectedHeaderReceived("JMSDestination", "queue://foo"); template.sendBody("direct:start", "Hello World"); @@ -51,6 +52,7 @@ public class JmsTransferExchangeTest extends CamelTestSupport { MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedBodiesReceived("Hello World"); mock.expectedHeaderReceived("foo", "cheese"); + mock.expectedHeaderReceived("JMSDestination", "queue://foo"); template.sendBodyAndHeader("direct:start", "Hello World", "foo", "cheese"); @@ -63,6 +65,7 @@ public class JmsTransferExchangeTest extends CamelTestSupport { mock.expectedBodiesReceived("Hello World"); mock.expectedHeaderReceived("foo", "cheese"); mock.expectedPropertyReceived("bar", 123); + mock.expectedHeaderReceived("JMSDestination", "queue://foo"); template.send("direct:start", new Processor() { public void process(Exchange exchange) throws Exception {