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

Reply via email to