You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2018/10/18 16:02:44 UTC
[camel] 20/45: CAMEL-12882: Camel Jms headers missing if producer
endpoint has transferExchange=true
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 4c05e0f6bee3483f5fd7614aa83fd84fc446218f
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 bc9ed09..1b76d15 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
@@ -146,6 +146,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 f492959..c649b70 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
@@ -38,6 +38,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");
@@ -49,6 +50,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");
@@ -61,6 +63,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 {