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 <[email protected]>
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