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

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


The following commit(s) were added to refs/heads/main by this push:
     new 4d1ba62  [camel-nats] Fix headers mapping when doing a round trip to 
nats (#6268)
4d1ba62 is described below

commit 4d1ba62d9b741431b31d4d4a4e31e9d5f03ef78b
Author: OpenGuidou <[email protected]>
AuthorDate: Wed Oct 13 16:19:57 2021 +0200

    [camel-nats] Fix headers mapping when doing a round trip to nats (#6268)
    
    Co-authored-by: Guillaume Doussin <[email protected]>
---
 .../java/org/apache/camel/component/nats/NatsConsumer.java   |  8 +++++++-
 .../nats/integration/NatsConsumerHeadersSupportIT.java       | 12 +++++++-----
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git 
a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConsumer.java
 
b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConsumer.java
index 7d04fd7..56f9f70 100644
--- 
a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConsumer.java
+++ 
b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConsumer.java
@@ -173,7 +173,13 @@ public class NatsConsumer extends DefaultConsumer {
                                 .getHeaderFilterStrategy();
                         msg.getHeaders().entrySet().forEach(entry -> {
                             if 
(!strategy.applyFilterToExternalHeaders(entry.getKey(), entry.getValue(), 
exchange)) {
-                                exchange.getIn().setHeader(entry.getKey(), 
entry.getValue());
+                                if (entry.getValue().size() == 1) {
+                                    // going from camel to nats add all 
headers in lists, so we extract them in the opposite
+                                    // way if it contains a single value
+                                    exchange.getIn().setHeader(entry.getKey(), 
entry.getValue().get(0));
+                                } else {
+                                    exchange.getIn().setHeader(entry.getKey(), 
entry.getValue());
+                                }
                             } else {
                                 LOG.debug("Excluding header {} as per 
strategy", entry.getKey());
                             }
diff --git 
a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerHeadersSupportIT.java
 
b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerHeadersSupportIT.java
index 2fca96a..ae9134e 100644
--- 
a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerHeadersSupportIT.java
+++ 
b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerHeadersSupportIT.java
@@ -17,6 +17,8 @@
 package org.apache.camel.component.nats.integration;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 import io.nats.client.Connection;
 import io.nats.client.Nats;
@@ -46,11 +48,11 @@ class NatsConsumerHeadersSupportIT extends NatsITSupport {
     @Test
     void testConsumerShouldForwardHeaders() throws IOException, 
InterruptedException {
 
-        final String[] firstHeader = { HEADER_VALUE_1 };
-        final String[] secondHeader = { HEADER_VALUE_2, HEADER_VALUE_3 };
-        this.mockResultEndpoint.expectedHeaderReceived(HEADER_KEY_1, 
firstHeader);
-        this.mockResultEndpoint.expectedHeaderReceived(HEADER_KEY_2,
-                secondHeader);
+        List<String> secondHeaders = new ArrayList<String>();
+        secondHeaders.add(HEADER_VALUE_2);
+        secondHeaders.add(HEADER_VALUE_3);
+        this.mockResultEndpoint.expectedHeaderReceived(HEADER_KEY_1, 
HEADER_VALUE_1);
+        this.mockResultEndpoint.expectedHeaderReceived(HEADER_KEY_2, 
secondHeaders);
 
         final Options options = new Options.Builder().server("nats://" + 
service.getServiceAddress()).build();
         final Connection connection = Nats.connect(options);

Reply via email to