You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/03/08 11:47:52 UTC

[camel] branch master updated: camel-core - Optimize to avoid regexp compiling the camel in/out header filter pattern.

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

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


The following commit(s) were added to refs/heads/master by this push:
     new f7a9ca8  camel-core - Optimize to avoid regexp compiling the camel in/out header filter pattern.
f7a9ca8 is described below

commit f7a9ca86330b2ad4ca3686a083ae90e0eff5441a
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Mar 8 12:46:53 2020 +0100

    camel-core - Optimize to avoid regexp compiling the camel in/out header filter pattern.
---
 .../component/ahc/HttpHeaderFilterStrategy.java    |  4 +--
 .../cxf/common/header/CxfHeaderFilterStrategy.java |  2 +-
 .../cxf/jaxrs/CxfRsHeaderFilterStrategy.java       |  2 +-
 .../http/common/HttpHeaderFilterStrategy.java      |  4 +--
 .../jetty/HttpBridgeMultipartRouteTest.java        |  2 +-
 .../component/kafka/KafkaHeaderFilterStrategy.java |  4 +--
 .../component/mail/MailHeaderFilterStrategy.java   |  2 +-
 .../netty/http/NettyHttpHeaderFilterStrategy.java  |  4 +--
 .../http/PlatformHttpHeaderFilterStrategy.java     |  2 +-
 .../sparkrest/SparkHeaderFilterStrategy.java       |  2 +-
 .../undertow/UndertowHeaderFilterStrategy.java     |  2 +-
 .../camel/support/DefaultHeaderFilterStrategy.java | 29 ++++++++++++++++++++++
 12 files changed, 44 insertions(+), 15 deletions(-)

diff --git a/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/HttpHeaderFilterStrategy.java b/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/HttpHeaderFilterStrategy.java
index 2112002..e951f8b 100644
--- a/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/HttpHeaderFilterStrategy.java
+++ b/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/HttpHeaderFilterStrategy.java
@@ -47,8 +47,8 @@ public class HttpHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
 
         // filter headers begin with "Camel" or "org.apache.camel"
         // must ignore case for Http based transports
-        setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
-        setInFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+        setOutFilterPattern(CAMEL_FILTER_PATTERN);
+        setInFilterPattern(CAMEL_FILTER_PATTERN);
     }
 
 }
diff --git a/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/common/header/CxfHeaderFilterStrategy.java b/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/common/header/CxfHeaderFilterStrategy.java
index cdac812..7b85173 100644
--- a/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/common/header/CxfHeaderFilterStrategy.java
+++ b/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/common/header/CxfHeaderFilterStrategy.java
@@ -96,7 +96,7 @@ public class CxfHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
         addToMessageHeaderFilterMap(new SoapMessageHeaderFilter());
         
         // filter headers begin with "Camel" or "org.apache.camel"
-        setOutFilterPattern("(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+        setOutFilterPattern(CAMEL_FILTER_PATTERN);
     }
 
     @SuppressWarnings("unchecked")
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsHeaderFilterStrategy.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsHeaderFilterStrategy.java
index 80a7918..1e930ba 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsHeaderFilterStrategy.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsHeaderFilterStrategy.java
@@ -34,7 +34,7 @@ public class CxfRsHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
         setLowerCase(true);
         
         // filter headers begin with "Camel" or "org.apache.camel"
-        setOutFilterPattern("(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+        setOutFilterPattern(CAMEL_FILTER_PATTERN);
 
     }
 
diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHeaderFilterStrategy.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHeaderFilterStrategy.java
index cbef5de..7bed459 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHeaderFilterStrategy.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHeaderFilterStrategy.java
@@ -44,7 +44,7 @@ public class HttpHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
         
         // filter headers begin with "Camel" or "org.apache.camel"
         // must ignore case for Http based transports
-        setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
-        setInFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+        setOutFilterPattern(CAMEL_FILTER_PATTERN);
+        setInFilterPattern(CAMEL_FILTER_PATTERN);
     }
 }
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpBridgeMultipartRouteTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpBridgeMultipartRouteTest.java
index ffb7da9..ec011aa 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpBridgeMultipartRouteTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpBridgeMultipartRouteTest.java
@@ -45,7 +45,7 @@ public class HttpBridgeMultipartRouteTest extends BaseJettyTest {
         protected void initialize() {
             setLowerCase(true);
             getOutFilter().add("content-length");
-            setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+            setOutFilterPattern(CAMEL_FILTER_PATTERN);
         }
     }
 
diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaHeaderFilterStrategy.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaHeaderFilterStrategy.java
index 8c3fbb9..c5a63a8 100644
--- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaHeaderFilterStrategy.java
+++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaHeaderFilterStrategy.java
@@ -29,7 +29,7 @@ public class KafkaHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
         getInFilter().add("org.apache.kafka.clients.producer.RecordMetadata");
 
         // filter headers begin with "Camel" or "org.apache.camel"
-        setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
-        setInFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+        setOutFilterPattern(CAMEL_FILTER_PATTERN);
+        setInFilterPattern(CAMEL_FILTER_PATTERN);
     }
 }
diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailHeaderFilterStrategy.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailHeaderFilterStrategy.java
index a22ad63..4c7f89c 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailHeaderFilterStrategy.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailHeaderFilterStrategy.java
@@ -26,7 +26,7 @@ public class MailHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
     
     protected void initialize() {
         // filter headers begin with "Camel" or "org.apache.camel"
-        setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+        setOutFilterPattern(CAMEL_FILTER_PATTERN);
     }
 
 }
diff --git a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpHeaderFilterStrategy.java b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpHeaderFilterStrategy.java
index eadaccc..a9b6931 100644
--- a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpHeaderFilterStrategy.java
+++ b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpHeaderFilterStrategy.java
@@ -48,7 +48,7 @@ public class NettyHttpHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
 
         // filter headers begin with "Camel" or "org.apache.camel"
         // must ignore case for Http based transports
-        setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
-        setInFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+        setOutFilterPattern(CAMEL_FILTER_PATTERN);
+        setInFilterPattern(CAMEL_FILTER_PATTERN);
     }
 }
diff --git a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpHeaderFilterStrategy.java b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpHeaderFilterStrategy.java
index 26ac67c..2900f0d 100644
--- a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpHeaderFilterStrategy.java
+++ b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpHeaderFilterStrategy.java
@@ -50,6 +50,6 @@ public class PlatformHttpHeaderFilterStrategy extends DefaultHeaderFilterStrateg
 
         // filter headers begin with "Camel" or "org.apache.camel"
         // must ignore case for Http based transports
-        setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+        setOutFilterPattern(CAMEL_FILTER_PATTERN);
     }
 }
diff --git a/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/SparkHeaderFilterStrategy.java b/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/SparkHeaderFilterStrategy.java
index cf174aa..6f5191d 100644
--- a/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/SparkHeaderFilterStrategy.java
+++ b/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/SparkHeaderFilterStrategy.java
@@ -50,7 +50,7 @@ public class SparkHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
 
         // filter headers begin with "Camel" or "org.apache.camel"
         // must ignore case for Http based transports
-        setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+        setOutFilterPattern(CAMEL_FILTER_PATTERN);
 
         // filter out splat as its an internal header
         getOutFilter().add(SparkConstants.SPLAT);
diff --git a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHeaderFilterStrategy.java b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHeaderFilterStrategy.java
index 88656aa..a7e4af9 100644
--- a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHeaderFilterStrategy.java
+++ b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHeaderFilterStrategy.java
@@ -44,6 +44,6 @@ public class UndertowHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
         
         // filter headers begin with "Camel" or "org.apache.camel"
         // must ignore case for Http based transports
-        setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+        setOutFilterPattern(CAMEL_FILTER_PATTERN);
     }
 }
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 7f4ea2d..8ae01e8 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
@@ -39,6 +39,11 @@ import org.apache.camel.spi.HeaderFilterStrategy;
  */
 public class DefaultHeaderFilterStrategy implements HeaderFilterStrategy {
 
+    /**
+     * A filter pattern that only accepts keys starting with <tt>Camel</tt> or <tt>org.apache.camel.</tt>
+     */
+    public static final Pattern CAMEL_FILTER_PATTERN = Pattern.compile("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
+
     private Set<String> inFilter;
     private Pattern inFilterPattern;
 
@@ -113,6 +118,18 @@ public class DefaultHeaderFilterStrategy implements HeaderFilterStrategy {
     }
 
     /**
+     * Sets the "out" direction filter regular expression {@link Pattern}. The
+     * "out" direction is referred to copying headers from Camel message to
+     * an external message. If the pattern matches a header, the header will
+     * be filtered out.
+     *
+     * @param pattern regular expression filter pattern
+     */
+    public void setOutFilterPattern(Pattern pattern) {
+        outFilterPattern = pattern;
+    }
+
+    /**
      * Gets the "in" direction filter set. The "in" direction is referred to
      * copying headers from an external message to a Camel message.
      *
@@ -164,6 +181,18 @@ public class DefaultHeaderFilterStrategy implements HeaderFilterStrategy {
     }
 
     /**
+     * Sets the "in" direction filter regular expression {@link Pattern}. The
+     * "in" direction is referred to copying headers from an external message
+     * to a Camel message. If the pattern matches a header, the header will
+     * be filtered out.
+     *
+     * @param pattern regular expression filter pattern
+     */
+    public void setInFilterPattern(Pattern pattern) {
+        inFilterPattern = pattern;
+    }
+
+    /**
      * Gets the isLowercase property which is a boolean to determine
      * whether header names should be converted to lower case before
      * checking it with the filter Set. It does not affect filtering using