You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/02/14 15:18:00 UTC

[camel] 01/03: camel-vertx-http - Optimize a bit

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

commit 66074e238c5f8db15776a84d29322c0449da0bb3
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Feb 14 15:33:29 2021 +0100

    camel-vertx-http - Optimize a bit
---
 .../vertx/http/DefaultVertxHttpBinding.java        | 27 ++++++++++++++--------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/components/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/DefaultVertxHttpBinding.java b/components/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/DefaultVertxHttpBinding.java
index 024e147..b78354b 100644
--- a/components/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/DefaultVertxHttpBinding.java
+++ b/components/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/DefaultVertxHttpBinding.java
@@ -31,6 +31,7 @@ import io.vertx.ext.web.client.HttpResponse;
 import io.vertx.ext.web.client.WebClient;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.TypeConverter;
 import org.apache.camel.http.base.HttpHelper;
 import org.apache.camel.http.base.HttpOperationFailedException;
 import org.apache.camel.spi.HeaderFilterStrategy;
@@ -81,9 +82,11 @@ public class DefaultVertxHttpBinding implements VertxHttpBinding {
         }
 
         // Configure query params
-        Map<String, Object> queryParams = URISupport.parseQuery(queryString);
-        for (Map.Entry<String, Object> entry : queryParams.entrySet()) {
-            request.addQueryParam(entry.getKey(), entry.getValue().toString());
+        if (ObjectHelper.isNotEmpty(queryString)) {
+            Map<String, Object> queryParams = URISupport.parseQuery(queryString);
+            for (Map.Entry<String, Object> entry : queryParams.entrySet()) {
+                request.addQueryParam(entry.getKey(), entry.getValue().toString());
+            }
         }
 
         // Configure basic authentication
@@ -115,11 +118,15 @@ public class DefaultVertxHttpBinding implements VertxHttpBinding {
         }
 
         // Transfer exchange headers to the HTTP request while applying the filter strategy
-        Message message = exchange.getMessage();
-        for (Map.Entry<String, Object> entry : message.getHeaders().entrySet()) {
-            String headerValue = message.getHeader(entry.getKey(), String.class);
-            if (strategy != null && !strategy.applyFilterToCamelHeaders(entry.getKey(), headerValue, exchange)) {
-                request.putHeader(entry.getKey(), headerValue);
+        if (strategy != null) {
+            final TypeConverter tc = exchange.getContext().getTypeConverter();
+            for (Map.Entry<String, Object> entry : exchange.getMessage().getHeaders().entrySet()) {
+                String key = entry.getKey();
+                Object headerValue = entry.getValue();
+                if (!strategy.applyFilterToCamelHeaders(key, headerValue, exchange)) {
+                    String str = tc.convertTo(String.class, headerValue);
+                    request.putHeader(key, str);
+                }
             }
         }
     }
@@ -152,10 +159,12 @@ public class DefaultVertxHttpBinding implements VertxHttpBinding {
 
         MultiMap headers = response.headers();
 
+        boolean found = false;
         for (String headerName : headers.names()) {
             String name = headerName;
             String value = headers.get(headerName);
-            if (name.equalsIgnoreCase("content-type")) {
+            if (!found && name.equalsIgnoreCase("content-type")) {
+                found = true;
                 name = Exchange.CONTENT_TYPE;
                 exchange.setProperty(Exchange.CHARSET_NAME, IOHelper.getCharsetNameFromContentType(value));
             }