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);
+ }
+ }
}