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 2021/10/13 14:20:27 UTC
[camel] branch main updated: [camel-nats] Fix headers mapping when
doing a round trip to nats (#6268)
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 <73...@users.noreply.github.com>
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 <gu...@amadeus.com>
---
.../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);