This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new c8616d36ac6 CAMEL-20163: consolidate the code adding or appending 
entries on the header (#12236)
c8616d36ac6 is described below

commit c8616d36ac6b3eacdf3a38230f8b0aa5b09b08bd
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Tue Nov 28 20:56:59 2023 +0100

    CAMEL-20163: consolidate the code adding or appending entries on the header 
(#12236)
---
 .../org/apache/camel/http/base/HttpHelper.java     | 16 ++----------
 .../org/apache/camel/http/common/HttpHelper.java   |  4 +--
 .../knative/http/KnativeHttpConsumer.java          |  6 +++--
 .../component/knative/http/KnativeHttpSupport.java | 19 --------------
 .../component/netty/http/NettyHttpHelper.java      | 18 ++------------
 .../http/vertx/VertxPlatformHttpConsumer.java      |  6 ++---
 .../http/vertx/VertxPlatformHttpSupport.java       | 29 +++-------------------
 .../camel/component/undertow/UndertowHelper.java   | 18 ++------------
 .../vertx/websocket/VertxWebsocketHelper.java      | 17 ++-----------
 .../org/apache/camel/support/http/HttpUtil.java    |  1 +
 .../org/apache/camel/util/CollectionHelper.java    | 29 ++++++++++++++++++++++
 11 files changed, 51 insertions(+), 112 deletions(-)

diff --git 
a/components/camel-http-base/src/main/java/org/apache/camel/http/base/HttpHelper.java
 
b/components/camel-http-base/src/main/java/org/apache/camel/http/base/HttpHelper.java
index 8a9cbe22ecd..b53cef30a58 100644
--- 
a/components/camel-http-base/src/main/java/org/apache/camel/http/base/HttpHelper.java
+++ 
b/components/camel-http-base/src/main/java/org/apache/camel/http/base/HttpHelper.java
@@ -24,6 +24,7 @@ import java.util.function.BiConsumer;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
+import org.apache.camel.util.CollectionHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
@@ -108,20 +109,7 @@ public final class HttpHelper {
      */
     @SuppressWarnings("unchecked")
     public static void appendHeader(Map<String, Object> headers, String key, 
Object value) {
-        if (headers.containsKey(key)) {
-            Object existing = headers.get(key);
-            List<Object> list;
-            if (existing instanceof List) {
-                list = (List<Object>) existing;
-            } else {
-                list = new ArrayList<>();
-                list.add(existing);
-            }
-            list.add(value);
-            value = list;
-        }
-
-        headers.put(key, value);
+        CollectionHelper.appendEntry(headers, key, value);
     }
 
     /**
diff --git 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
index 38e88fbecb2..0035908bc0c 100644
--- 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
+++ 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
@@ -35,6 +35,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.RuntimeExchangeException;
 import org.apache.camel.converter.stream.CachedOutputStream;
 import org.apache.camel.support.CamelObjectInputStream;
+import org.apache.camel.util.CollectionHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.URISupport;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
@@ -278,8 +279,7 @@ public final class HttpHelper {
      */
     @SuppressWarnings("unchecked")
     public static void appendHeader(Map<String, Object> headers, String key, 
Object value) {
-        org.apache.camel.http.base.HttpHelper.appendHeader(headers, key, 
value);
-
+        CollectionHelper.appendEntry(headers, key, value);
     }
 
     /**
diff --git 
a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java
 
b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java
index 626d47997d1..7ebf2569284 100644
--- 
a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java
+++ 
b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java
@@ -49,6 +49,8 @@ import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.apache.camel.util.CollectionHelper.appendEntry;
+
 public class KnativeHttpConsumer extends DefaultConsumer {
     private static final Logger LOGGER = 
LoggerFactory.getLogger(KnativeHttpConsumer.class);
 
@@ -254,12 +256,12 @@ public class KnativeHttpConsumer extends DefaultConsumer {
 
         for (Map.Entry<String, String> entry : request.headers().entries()) {
             if 
(!headerFilterStrategy.applyFilterToExternalHeaders(entry.getKey(), 
entry.getValue(), exchange)) {
-                KnativeHttpSupport.appendHeader(message.getHeaders(), 
entry.getKey(), entry.getValue());
+                appendEntry(message.getHeaders(), entry.getKey(), 
entry.getValue());
             }
         }
         for (Map.Entry<String, String> entry : request.params().entries()) {
             if 
(!headerFilterStrategy.applyFilterToExternalHeaders(entry.getKey(), 
entry.getValue(), exchange)) {
-                KnativeHttpSupport.appendHeader(message.getHeaders(), 
entry.getKey(), entry.getValue());
+                appendEntry(message.getHeaders(), entry.getKey(), 
entry.getValue());
             }
         }
 
diff --git 
a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java
 
b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java
index 9c040bafc4b..58976f71a3e 100644
--- 
a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java
+++ 
b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.knative.http;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -32,24 +31,6 @@ public final class KnativeHttpSupport {
     private KnativeHttpSupport() {
     }
 
-    @SuppressWarnings("unchecked")
-    public static void appendHeader(Map<String, Object> headers, String key, 
Object value) {
-        if (headers.containsKey(key)) {
-            Object existing = headers.get(key);
-            List<Object> list;
-            if (existing instanceof List) {
-                list = (List<Object>) existing;
-            } else {
-                list = new ArrayList<>();
-                list.add(existing);
-            }
-            list.add(value);
-            value = list;
-        }
-
-        headers.put(key, value);
-    }
-
     public static Predicate<HttpServerRequest> createFilter(CloudEvent 
cloudEvent, KnativeResource resource) {
         final Map<String, String> filters = new HashMap<>();
 
diff --git 
a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpHelper.java
 
b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpHelper.java
index d7d2ed2e8b0..29e41d7792d 100644
--- 
a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpHelper.java
+++ 
b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpHelper.java
@@ -21,8 +21,6 @@ import java.io.InputStream;
 import java.io.ObjectInputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Map;
 
 import io.netty.handler.codec.http.FullHttpResponse;
@@ -31,6 +29,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
 import org.apache.camel.Message;
 import org.apache.camel.RuntimeExchangeException;
+import org.apache.camel.util.CollectionHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
@@ -80,20 +79,7 @@ public final class NettyHttpHelper {
      */
     @SuppressWarnings("unchecked")
     public static void appendHeader(Map<String, Object> headers, String key, 
Object value) {
-        if (headers.containsKey(key)) {
-            Object existing = headers.get(key);
-            List<Object> list;
-            if (existing instanceof List) {
-                list = (List<Object>) existing;
-            } else {
-                list = new ArrayList<>();
-                list.add(existing);
-            }
-            list.add(value);
-            value = list;
-        }
-
-        headers.put(key, value);
+        CollectionHelper.appendEntry(headers, key, value);
     }
 
     /**
diff --git 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
index 915c1926110..446811ae9ca 100644
--- 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
+++ 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
@@ -53,11 +53,11 @@ import org.apache.camel.util.FileUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static 
org.apache.camel.component.platform.http.vertx.VertxPlatformHttpSupport.appendHeader;
 import static 
org.apache.camel.component.platform.http.vertx.VertxPlatformHttpSupport.isFormUrlEncoded;
 import static 
org.apache.camel.component.platform.http.vertx.VertxPlatformHttpSupport.isMultiPartFormData;
 import static 
org.apache.camel.component.platform.http.vertx.VertxPlatformHttpSupport.populateCamelHeaders;
 import static 
org.apache.camel.component.platform.http.vertx.VertxPlatformHttpSupport.writeResponse;
+import static org.apache.camel.util.CollectionHelper.appendEntry;
 
 /**
  * A {@link org.apache.camel.Consumer} for the {@link 
org.apache.camel.component.platform.http.spi.PlatformHttpEngine}
@@ -289,8 +289,8 @@ public class VertxPlatformHttpConsumer extends 
DefaultConsumer implements Suspen
                 for (String value : formData.getAll(key)) {
                     if (headerFilterStrategy != null
                             && 
!headerFilterStrategy.applyFilterToExternalHeaders(key, value, 
message.getExchange())) {
-                        appendHeader(message.getHeaders(), key, value);
-                        appendHeader(body, key, value);
+                        appendEntry(message.getHeaders(), key, value);
+                        appendEntry(body, key, value);
                     }
                 }
             }
diff --git 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSupport.java
 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSupport.java
index 52e2f3d8eca..da0c80aadd0 100644
--- 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSupport.java
+++ 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSupport.java
@@ -49,6 +49,7 @@ import org.apache.camel.support.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.apache.camel.util.CollectionHelper.appendEntry;
 import static org.apache.camel.support.http.HttpUtil.determineResponseCode;
 
 /*
@@ -268,7 +269,7 @@ public final class VertxPlatformHttpSupport {
 
         // Path parameters
         for (Map.Entry<String, String> en : ctx.pathParams().entrySet()) {
-            appendHeader(headersMap, en.getKey(), en.getValue());
+            appendEntry(headersMap, en.getKey(), en.getValue());
         }
 
         SocketAddress localAddress = request.localAddress();
@@ -318,7 +319,7 @@ public final class VertxPlatformHttpSupport {
 
             // add the headers one by one, and use the header filter strategy
             if (!headerFilterStrategy.applyFilterToExternalHeaders(name, 
value, exchange)) {
-                appendHeader(headersMap, name, value);
+                appendEntry(headersMap, name, value);
             }
         }
     }
@@ -330,33 +331,11 @@ public final class VertxPlatformHttpSupport {
         // store a special header that this request was authenticated using 
HTTP Basic
         if (authorization != null && authorization.trim().startsWith("Basic")) 
{
             if 
(!headerFilterStrategy.applyFilterToExternalHeaders(Exchange.AUTHENTICATION, 
"Basic", exchange)) {
-                appendHeader(headersMap, Exchange.AUTHENTICATION, "Basic");
+                appendEntry(headersMap, Exchange.AUTHENTICATION, "Basic");
             }
         }
     }
 
-    static void appendHeader(Map<String, Object> headers, String key, Object 
value) {
-        if (headers.containsKey(key)) {
-            headers.put(key, addToList(headers, key, value));
-        } else {
-            headers.put(key, value);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private static Object addToList(Map<String, Object> headers, String key, 
Object value) {
-        Object existing = headers.get(key);
-        List<Object> list;
-        if (existing instanceof List) {
-            list = (List<Object>) existing;
-        } else {
-            list = new ArrayList<>();
-            list.add(existing);
-        }
-        list.add(value);
-        return list;
-    }
-
     static boolean isMultiPartFormData(RoutingContext ctx) {
         return isContentTypeMatching(ctx, 
HttpHeaderValues.MULTIPART_FORM_DATA.toString());
     }
diff --git 
a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHelper.java
 
b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHelper.java
index c07e41d87ca..432461ecd2e 100644
--- 
a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHelper.java
+++ 
b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHelper.java
@@ -18,14 +18,13 @@ package org.apache.camel.component.undertow;
 
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Map;
 
 import io.undertow.util.HttpString;
 import io.undertow.util.Methods;
 import org.apache.camel.Exchange;
 import org.apache.camel.RuntimeExchangeException;
+import org.apache.camel.util.CollectionHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
@@ -114,20 +113,7 @@ public final class UndertowHelper {
     }
 
     public static void appendHeader(Map<String, Object> headers, String key, 
Object value) {
-        if (headers.containsKey(key)) {
-            Object existing = headers.get(key);
-            List<Object> list;
-            if (existing instanceof List) {
-                list = (List<Object>) existing;
-            } else {
-                list = new ArrayList<>();
-                list.add(existing);
-            }
-            list.add(value);
-            value = list;
-        }
-
-        headers.put(key, value);
+        CollectionHelper.appendEntry(headers, key, value);
     }
 
     /**
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHelper.java
 
b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHelper.java
index 3e580902b83..4c8d6183e2e 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHelper.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHelper.java
@@ -17,11 +17,10 @@
 package org.apache.camel.component.vertx.websocket;
 
 import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Map;
 
 import io.vertx.core.http.impl.HttpUtils;
+import org.apache.camel.util.CollectionHelper;
 import org.apache.camel.util.ObjectHelper;
 
 public final class VertxWebsocketHelper {
@@ -42,19 +41,7 @@ public final class VertxWebsocketHelper {
      */
     @SuppressWarnings("unchecked")
     public static void appendHeader(Map<String, Object> headers, String key, 
Object value) {
-        if (headers.containsKey(key)) {
-            Object existing = headers.get(key);
-            List<Object> list;
-            if (existing instanceof List) {
-                list = (List<Object>) existing;
-            } else {
-                list = new ArrayList<>();
-                list.add(existing);
-            }
-            list.add(value);
-            value = list;
-        }
-        headers.put(key, value);
+        CollectionHelper.appendEntry(headers, key, value);
     }
 
     /**
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/http/HttpUtil.java 
b/core/camel-support/src/main/java/org/apache/camel/support/http/HttpUtil.java
index f969e9d2bf2..d0f54109f8b 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/http/HttpUtil.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/http/HttpUtil.java
@@ -52,4 +52,5 @@ public final class HttpUtil {
 
         return codeToUse;
     }
+
 }
diff --git 
a/core/camel-util/src/main/java/org/apache/camel/util/CollectionHelper.java 
b/core/camel-util/src/main/java/org/apache/camel/util/CollectionHelper.java
index 512e6a7de70..be2eefd5702 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/CollectionHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/CollectionHelper.java
@@ -230,4 +230,33 @@ public final class CollectionHelper {
 
         return answer;
     }
+
+    @SuppressWarnings("unchecked")
+    private static <T> Object addToList(Map<String, ? super Object> headers, 
String key, T value) {
+        Object existing = headers.get(key);
+        List<Object> list;
+        if (existing instanceof List) {
+            list = (List<Object>) existing;
+        } else {
+            list = new ArrayList<>();
+            list.add(existing);
+        }
+        list.add(value);
+        return list;
+    }
+
+    /**
+     * When trying to set the value for a map, if the value already exists, 
appends it to a list. Otherwise, sets the entry to
+     * the given value.
+     * @param headers the map that whose entry will be set or appended
+     * @param key the key on the map
+     * @param value the value to set or append within the map
+     */
+    public static <T> void appendEntry(Map<String, ? super Object> headers, 
String key, T value) {
+        if (headers.containsKey(key)) {
+            headers.put(key, addToList(headers, key, value));
+        } else {
+            headers.put(key, value);
+        }
+    }
 }

Reply via email to