This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.7.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 75df16f4b4a6a666e37ec006cd17fc74411246c0
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sun Feb 14 12:40:19 2021 +0100

    CAMEL-16202: camel-core - Optimize DefaultHeaderFilterStrategy filtering
---
 .../camel/support/DefaultHeaderFilterStrategy.java | 23 +++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/DefaultHeaderFilterStrategy.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/DefaultHeaderFilterStrategy.java
index eff21be..fa1ad2a 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/DefaultHeaderFilterStrategy.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/DefaultHeaderFilterStrategy.java
@@ -275,8 +275,22 @@ public class DefaultHeaderFilterStrategy implements 
HeaderFilterStrategy {
             filter = inFilter;
         }
 
-        if (pattern != null && pattern.matcher(headerName).matches()) {
-            return filterOnMatch;
+        String lower = null;
+        if (pattern != null) {
+            // optimize if its the default pattern as we know the pattern is 
to check for keys starting with Camel
+            if (pattern == CAMEL_FILTER_PATTERN) {
+                boolean match = headerName.startsWith("org.apache.camel.") || 
headerName.startsWith("Camel");
+                if (!match) {
+                    // the default filter is case insensitive so check for 
lower case starting match
+                    lower = headerName.toLowerCase(Locale.ENGLISH);
+                    match = lower.startsWith("org.apache.camel.") || 
lower.startsWith("camel");
+                }
+                if (match) {
+                    return filterOnMatch;
+                }
+            } else if (pattern.matcher(headerName).matches()) {
+                return filterOnMatch;
+            }
         }
 
         if (filter != null) {
@@ -287,7 +301,10 @@ public class DefaultHeaderFilterStrategy implements 
HeaderFilterStrategy {
                     }
                 }
             } else if (isLowerCase()) {
-                if (filter.contains(headerName.toLowerCase(Locale.ENGLISH))) {
+                if (lower == null) {
+                    lower = headerName.toLowerCase(Locale.ENGLISH);
+                }
+                if (filter.contains(lower)) {
                     return filterOnMatch;
                 }
             } else {

Reply via email to