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 {