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

Reply via email to