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 2018/10/16 07:30:05 UTC

[camel] branch camel-2.21.x updated: CAMEL-12882: Camel Jms headers missing if producer endpoint has transferExchange=true

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 <cl...@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 {