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

commit 98ca9945350f8c290910c262e3a06899a9cd1a2b
Author: Otavio Rodolfo Piske <angusyo...@gmail.com>
AuthorDate: Thu Nov 30 10:54:58 2023 -0300

    CAMEL-20163: consolidate common header filtering methods
---
 .../http/NettyHttpRestHeaderFilterStrategy.java    | 22 +++-----------------
 .../undertow/UndertowRestHeaderFilterStrategy.java | 22 +++-----------------
 .../http/VertxHttpRestHeaderFilterStrategy.java    | 23 ++++-----------------
 .../org/apache/camel/support/http/HttpUtil.java    | 24 ++++++++++++++++++++++
 4 files changed, 34 insertions(+), 57 deletions(-)

diff --git 
a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpRestHeaderFilterStrategy.java
 
b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpRestHeaderFilterStrategy.java
index 91b3dae737d..c691d34f4b1 100644
--- 
a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpRestHeaderFilterStrategy.java
+++ 
b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpRestHeaderFilterStrategy.java
@@ -19,6 +19,8 @@ package org.apache.camel.component.netty.http;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.HeaderFilterStrategy;
 
+import static org.apache.camel.support.http.HttpUtil.filterCheck;
+
 /**
  * Default Netty {@link HeaderFilterStrategy} used when binding with {@link 
NettyHttpBinding}.
  */
@@ -35,25 +37,7 @@ public class NettyHttpRestHeaderFilterStrategy extends 
NettyHttpHeaderFilterStra
     @Override
     public boolean applyFilterToCamelHeaders(String headerName, Object 
headerValue, Exchange exchange) {
         boolean answer = super.applyFilterToCamelHeaders(headerName, 
headerValue, exchange);
-        // using rest producer then headers are mapping to uri and query 
parameters using {key} syntax
-        // if there is a match to an existing Camel Message header, then we 
should filter (=true) this
-        // header as its already been mapped by the RestProducer from 
camel-core, and we do not want
-        // the header to included as HTTP header also (eg as duplicate value)
-        if (!answer) {
-            if (templateUri != null) {
-                String token = "{" + headerName + "}";
-                if (templateUri.contains(token)) {
-                    answer = true;
-                }
-            }
-            if (!answer && queryParameters != null) {
-                String token = "=%7B" + headerName + "%7D"; // encoded values 
for { }
-                if (queryParameters.contains(token)) {
-                    answer = true;
-                }
-            }
-        }
-        return answer;
+        return filterCheck(templateUri, queryParameters, headerName, answer);
     }
 
 }
diff --git 
a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowRestHeaderFilterStrategy.java
 
b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowRestHeaderFilterStrategy.java
index fef97da30e5..0df95259503 100644
--- 
a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowRestHeaderFilterStrategy.java
+++ 
b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowRestHeaderFilterStrategy.java
@@ -18,6 +18,8 @@ package org.apache.camel.component.undertow;
 
 import org.apache.camel.Exchange;
 
+import static org.apache.camel.support.http.HttpUtil.filterCheck;
+
 public class UndertowRestHeaderFilterStrategy extends 
UndertowHeaderFilterStrategy {
 
     private final String templateUri;
@@ -31,25 +33,7 @@ public class UndertowRestHeaderFilterStrategy extends 
UndertowHeaderFilterStrate
     @Override
     public boolean applyFilterToCamelHeaders(String headerName, Object 
headerValue, Exchange exchange) {
         boolean answer = super.applyFilterToCamelHeaders(headerName, 
headerValue, exchange);
-        // using rest producer then headers are mapping to uri and query 
parameters using {key} syntax
-        // if there is a match to an existing Camel Message header, then we 
should filter (=true) this
-        // header as its already been mapped by the RestProducer from 
camel-core, and we do not want
-        // the header to included as HTTP header also (eg as duplicate value)
-        if (!answer) {
-            if (templateUri != null) {
-                String token = "{" + headerName + "}";
-                if (templateUri.contains(token)) {
-                    answer = true;
-                }
-            }
-            if (!answer && queryParameters != null) {
-                String token = "=%7B" + headerName + "%7D"; // encoded values 
for { }
-                if (queryParameters.contains(token)) {
-                    answer = true;
-                }
-            }
-        }
-        return answer;
+        return filterCheck(templateUri, queryParameters, headerName, answer);
     }
 
 }
diff --git 
a/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpRestHeaderFilterStrategy.java
 
b/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpRestHeaderFilterStrategy.java
index 15becccc58c..87196d0869d 100644
--- 
a/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpRestHeaderFilterStrategy.java
+++ 
b/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpRestHeaderFilterStrategy.java
@@ -18,6 +18,8 @@ package org.apache.camel.component.vertx.http;
 
 import org.apache.camel.Exchange;
 
+import static org.apache.camel.support.http.HttpUtil.filterCheck;
+
 public class VertxHttpRestHeaderFilterStrategy extends 
VertxHttpHeaderFilterStrategy {
 
     private final String templateUri;
@@ -31,24 +33,7 @@ public class VertxHttpRestHeaderFilterStrategy extends 
VertxHttpHeaderFilterStra
     @Override
     public boolean applyFilterToCamelHeaders(String headerName, Object 
headerValue, Exchange exchange) {
         boolean answer = super.applyFilterToExternalHeaders(headerName, 
headerValue, exchange);
-        // using rest producer then headers are mapping to uri and query 
parameters using {key} syntax
-        // if there is a match to an existing Camel Message header, then we 
should filter (=true) this
-        // header as its already been mapped by the RestProducer from 
camel-core, and we do not want
-        // the header to included as HTTP header also (eg as duplicate value)
-        if (!answer) {
-            if (templateUri != null) {
-                String token = "{" + headerName + "}";
-                if (templateUri.contains(token)) {
-                    answer = true;
-                }
-            }
-            if (!answer && queryParameters != null) {
-                String token = "=%7B" + headerName + "%7D"; // encoded values 
for { }
-                if (queryParameters.contains(token)) {
-                    answer = true;
-                }
-            }
-        }
-        return answer;
+
+        return filterCheck(templateUri, queryParameters, headerName, answer);
     }
 }
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 7623a6b30f1..dfdaaea9b97 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
@@ -227,4 +227,28 @@ public final class HttpUtil {
 
         consumer.accept(values, firstValue);
     }
+
+    /*
+     * Using rest producer then headers are mapping to uri and query 
parameters using {key} syntax
+     * if there is a match to an existing Camel Message header, then we should 
filter (=true) this
+     * header as its already been mapped by the RestProducer from camel-core, 
and we do not want
+     * the header to include as HTTP header also (eg as duplicate value)
+     */
+    public static boolean filterCheck(String templateUri, String 
queryParameters, String headerName, boolean answer) {
+        if (!answer) {
+            if (templateUri != null) {
+                String token = "{" + headerName + "}";
+                if (templateUri.contains(token)) {
+                    answer = true;
+                }
+            }
+            if (!answer && queryParameters != null) {
+                String token = "=%7B" + headerName + "%7D"; // encoded values 
for { }
+                if (queryParameters.contains(token)) {
+                    answer = true;
+                }
+            }
+        }
+        return answer;
+    }
 }

Reply via email to