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);