This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new aab313e CAMEL-16199: camel-http - Optimize headers added as request headers in producer aab313e is described below commit aab313ecfdc087c3a08a0e7bc629c130ca013338 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sun Feb 14 16:42:31 2021 +0100 CAMEL-16199: camel-http - Optimize headers added as request headers in producer --- .../org/apache/camel/component/http/HttpProducer.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java index 660fcb0..86adf9c 100644 --- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java +++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java @@ -293,15 +293,22 @@ public class HttpProducer extends DefaultProducer { answer.setBody(response); // propagate HTTP response headers + Map<String, List<String>> cookieHeaders = null; + if (getEndpoint().getCookieHandler() != null) { + cookieHeaders = new HashMap<>(); + } Header[] headers = httpResponse.getAllHeaders(); - Map<String, List<String>> m = new HashMap<>(); + boolean found = false; for (Header header : headers) { String name = header.getName(); String value = header.getValue(); - m.computeIfAbsent(name, k -> new ArrayList<>()).add(value); - if (name.equalsIgnoreCase("content-type")) { + if (cookieHeaders != null) { + cookieHeaders.computeIfAbsent(name, k -> new ArrayList<>()).add(value); + } + if (!found && name.equalsIgnoreCase("content-type")) { name = Exchange.CONTENT_TYPE; exchange.setProperty(Exchange.CHARSET_NAME, IOHelper.getCharsetNameFromContentType(value)); + found = true; } // use http helper to extract parameter value as it may contain multiple values Object extracted = HttpHelper.extractHttpParameterValue(value); @@ -311,7 +318,7 @@ public class HttpProducer extends DefaultProducer { } // handle cookies if (getEndpoint().getCookieHandler() != null) { - getEndpoint().getCookieHandler().storeCookies(exchange, httpRequest.getURI(), m); + getEndpoint().getCookieHandler().storeCookies(exchange, httpRequest.getURI(), cookieHeaders); } // endpoint might be configured to copy headers from in to out // to avoid overriding existing headers with old values just