This is an automated email from the ASF dual-hosted git repository. siano pushed a commit to branch camel-2.23.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.23.x by this push: new 79971ac [CAMEL-13114] Provide single Cookie header for multiple cookies 79971ac is described below commit 79971ac3c06366defc97c1ee77c581f3e4dcc562 Author: Stephan Siano <stephan.si...@sap.com> AuthorDate: Wed Jan 23 14:26:54 2019 +0100 [CAMEL-13114] Provide single Cookie header for multiple cookies --- .../apache/camel/component/ahc/DefaultAhcBinding.java | 11 +++++++---- .../camel/component/ahc/AhcProducerSessionTest.java | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java b/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java index 9e2daf0..94ae301 100644 --- a/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java +++ b/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java @@ -28,6 +28,7 @@ import java.nio.charset.Charset; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.StringJoiner; import java.util.TreeMap; import io.netty.handler.codec.http.HttpHeaders; @@ -125,12 +126,14 @@ public class DefaultAhcBinding implements AhcBinding { Map<String, List<String>> cookieHeaders = endpoint.getCookieHandler().loadCookies(exchange, uri); for (Map.Entry<String, List<String>> entry : cookieHeaders.entrySet()) { String key = entry.getKey(); + StringJoiner joiner = new StringJoiner("; "); for (String value : entry.getValue()) { - if (log.isTraceEnabled()) { - log.trace("Adding header {} = {}", key, value); - } - builder.addHeader(key, value); + joiner.add(value); + } + if (log.isTraceEnabled()) { + log.trace("Adding header {} = {}", key, joiner.toString()); } + builder.addHeader(key, joiner.toString()); } } catch (IOException e) { throw new CamelExchangeException("Error loading cookies", exchange, e); diff --git a/components/camel-ahc/src/test/java/org/apache/camel/component/ahc/AhcProducerSessionTest.java b/components/camel-ahc/src/test/java/org/apache/camel/component/ahc/AhcProducerSessionTest.java index 3c6e762..8ade2dc 100644 --- a/components/camel-ahc/src/test/java/org/apache/camel/component/ahc/AhcProducerSessionTest.java +++ b/components/camel-ahc/src/test/java/org/apache/camel/component/ahc/AhcProducerSessionTest.java @@ -96,10 +96,27 @@ public class AhcProducerSessionTest extends BaseAhcTest { @Override public void process(Exchange exchange) throws Exception { HttpMessage message = exchange.getIn(HttpMessage.class); + Object cookiesObj = message.getHeader("Cookie"); HttpSession session = message.getRequest().getSession(); String body = message.getBody(String.class); if ("bar".equals(session.getAttribute("foo"))) { message.setBody("Old " + body); + /* + * If we are in a session we should also have a cookie header with two + * cookies. This test checks that the cookies are in one line. + * We can also get the cookies with request.getCookies() but this will + * always give us two cookies even if there are two cookie headers instead + * of one multi-value cookie header. + */ + if (cookiesObj instanceof String && ((String) cookiesObj).contains("othercookie=value")) { + if (!((String) cookiesObj).contains("JSESSIONID=")) { + log.error("JSESSIONID missing"); + throw new IllegalStateException("JSESSIONID missing"); + } + } else { + log.error("othercookie=value is missing in cookie"); + throw new IllegalStateException("othercookie=value is missing in cookie"); + } } else { session.setAttribute("foo", "bar"); message.setBody("New " + body);