You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by si...@apache.org on 2019/01/23 18:08:23 UTC
[camel] branch camel-2.22.x updated: [CAMEL-13114] Provide single
Cookie header for multiple cookies
This is an automated email from the ASF dual-hosted git repository.
siano pushed a commit to branch camel-2.22.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.22.x by this push:
new e5fc33b [CAMEL-13114] Provide single Cookie header for multiple cookies
e5fc33b is described below
commit e5fc33b5b01f0b8a9127738602d0a02c48a0b3d1
Author: Stephan Siano <st...@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 098edae..269b9e5 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;
@@ -126,12 +127,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);