This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.11.x in repository https://gitbox.apache.org/repos/asf/camel.git
commit e26ef2742465618081854fe13ce26bfdfad1d31a Author: henka-rl <[email protected]> AuthorDate: Wed Oct 27 07:14:34 2021 +0200 CAMEL-17124 Changed filter expression for query parameters (#6333) * CAMEL-17124 Changed filter expression for query parameters * CAMEL-17124 Replaced regex and added test * CAMEL-17124 Encoded question mark --- .../camel/http/common/HttpRestHeaderFilterStrategy.java | 13 ++++++++++--- .../http/common/HttpRestHeaderFilterStrategyTest.java | 15 ++++++++++++++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpRestHeaderFilterStrategy.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpRestHeaderFilterStrategy.java index c2b6ae7..d11f1cb 100644 --- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpRestHeaderFilterStrategy.java +++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpRestHeaderFilterStrategy.java @@ -43,9 +43,16 @@ public class HttpRestHeaderFilterStrategy extends HttpHeaderFilterStrategy { } } if (!answer && queryParameters != null) { - String token = "=%7B" + headerName + "%7D"; // encoded values for { } - if (queryParameters.contains(token)) { - answer = true; + String[] tokens = new String[4]; + tokens[0] = "={" + headerName + "}"; + tokens[1] = "={" + headerName + "?}"; + tokens[2] = "=%7B" + headerName + "%7D"; + tokens[3] = "=%7B" + headerName + "%3F%7D"; + for (String token : tokens) { + if (queryParameters.contains(token)) { + answer = true; + break; + } } } } diff --git a/components/camel-http-common/src/test/java/org/apache/camel/http/common/HttpRestHeaderFilterStrategyTest.java b/components/camel-http-common/src/test/java/org/apache/camel/http/common/HttpRestHeaderFilterStrategyTest.java index b2285ba..4d4938b 100644 --- a/components/camel-http-common/src/test/java/org/apache/camel/http/common/HttpRestHeaderFilterStrategyTest.java +++ b/components/camel-http-common/src/test/java/org/apache/camel/http/common/HttpRestHeaderFilterStrategyTest.java @@ -30,7 +30,20 @@ public class HttpRestHeaderFilterStrategyTest { public void shouldDecideOnApplingHeaderFilterToTemplateTokens() { final HttpRestHeaderFilterStrategy strategy = new HttpRestHeaderFilterStrategy( "{uriToken1}{uriToken2}", - "q1=%7BqueryToken1%7D%26q2=%7BqueryToken2%7D%26"); + "q1=%7BqueryToken1%7D%26q2=%7BqueryToken2%3F%7D%26"); + + assertTrue(strategy.applyFilterToCamelHeaders("uriToken1", "value", NOT_USED)); + assertTrue(strategy.applyFilterToCamelHeaders("uriToken2", "value", NOT_USED)); + assertTrue(strategy.applyFilterToCamelHeaders("queryToken1", "value", NOT_USED)); + assertTrue(strategy.applyFilterToCamelHeaders("queryToken2", "value", NOT_USED)); + assertFalse(strategy.applyFilterToCamelHeaders("unknown", "value", NOT_USED)); + } + + @Test + public void shouldDecideOnApplingHeaderFilterToTemplateTokensUnencoded() { + final HttpRestHeaderFilterStrategy strategy = new HttpRestHeaderFilterStrategy( + "{uriToken1}{uriToken2}", + "q1={queryToken1}&q2={queryToken2?}&"); assertTrue(strategy.applyFilterToCamelHeaders("uriToken1", "value", NOT_USED)); assertTrue(strategy.applyFilterToCamelHeaders("uriToken2", "value", NOT_USED));
