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