You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2008/08/01 03:15:40 UTC
svn commit: r681576 - in
/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel:
impl/DefaultHeaderFilterStrategy.java spi/HeaderFilterStrategy.java
Author: ningjiang
Date: Thu Jul 31 18:15:40 2008
New Revision: 681576
URL: http://svn.apache.org/viewvc?rev=681576&view=rev
Log:
CAMEL-766 patch applied with thanks to William
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java?rev=681576&r1=681575&r2=681576&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java Thu Jul 31 18:15:40 2008
@@ -28,8 +28,12 @@
* add extended filter logic in
* {@link #extendedFilter(org.apache.camel.impl.DefaultHeaderFilterStrategy.Direction, String, Object)}
*
- * Filters are associated with directions (in or out). "In" direction is referred
- * to propagating headers "to" Camel message.
+ * Filters are associated with directions (in or out). "In" direction is
+ * referred to propagating headers "to" Camel message. The "out" direction
+ * is opposite which is referred to propagating headers from Camel message
+ * to a native message like JMS and CXF message. You can see example of
+ * DefaultHeaderFilterStrategy are being extended and invoked in camel-jms
+ * and camel-cxf components.
*
* @version $Revision$
*/
@@ -45,55 +49,43 @@
private boolean isLowercase;
private boolean allowNullValues;
-
- private boolean doFiltering(Direction direction, String headerName, Object headerValue) {
-
- if (headerName == null) {
- return true;
- }
-
- if (headerValue == null && !allowNullValues) {
- return true;
- }
-
- Pattern pattern = null;
- Set<String> filter = null;
-
- if (Direction.OUT == direction) {
- pattern = outFilterPattern;
- filter = outFilter;
- } else if (Direction.IN == direction) {
- pattern = inFilterPattern;
- filter = inFilter;
- }
-
- if (pattern != null && pattern.matcher(headerName).matches()) {
- return true;
- }
-
- if (filter != null) {
- if (isLowercase) {
- if (filter.contains(headerName.toLowerCase())) {
- return true;
- }
- } else {
- if (filter.contains(headerName)) {
- return true;
- }
- }
- }
-
- if (extendedFilter(direction, headerName, headerValue)) {
- return true;
- }
-
- return false;
- }
- protected boolean extendedFilter(Direction direction, String key, Object value) {
- return false;
+ /**
+ * Applies filtering logic to Camel Message header that is
+ * going to be copied to target message.
+ *
+ * It returns true if the filtering logics return a match. Otherwise,
+ * it returns false. A match means the header should be excluded.
+ *
+ * @param headerName
+ * @param headerValue
+ * @return true if this header should be filtered out.
+ */
+ public boolean applyFilterToCamelHeaders(String headerName, Object headerValue) {
+ return doFiltering(Direction.OUT, headerName, headerValue);
+ }
+
+ /**
+ * Applies filtering logic to an external message header message that
+ * is going to be copied to Camel message header.
+ *
+ * It returns true if the filtering logics return a match. Otherwise,
+ * it returns false. A match means the header should be excluded.
+ *
+ * @param headerName
+ * @param headerValue
+ * @return true if this header should be excluded.
+ */
+ public boolean applyFilterToExternalHeaders(String headerName, Object headerValue) {
+ return doFiltering(Direction.IN, headerName, headerValue);
}
+ /**
+ * Gets the "out" direction filter set. The "out" direction is referred to
+ * copying headers from a Camel message to an external message.
+ *
+ * @return a set that contains header names that should be excluded.
+ */
public Set<String> getOutFilter() {
if (outFilter == null) {
outFilter = new HashSet<String>();
@@ -102,14 +94,37 @@
return outFilter;
}
+ /**
+ * Sets the "out" direction filter set. The "out" direction is referred to
+ * copying headers from a Camel message to an external message.
+ *
+ * @return a set that contains headers names that should be excluded.
+ */
public void setOutFilter(Set<String> value) {
outFilter = value;
}
+ /**
+ * Gets 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.
+ *
+ * @return regular expression filter pattern
+ */
public String getOutFilterPattern() {
return outFilterPattern == null ? null : outFilterPattern.pattern();
}
+
+ /**
+ * 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 value regular expression filter pattern
+ */
public void setOutFilterPattern(String value) {
if (value == null) {
outFilterPattern = null;
@@ -118,6 +133,12 @@
}
}
+ /**
+ * Gets the "in" direction filter set. The "in" direction is referred to
+ * copying headers from an external message to a Camel message.
+ *
+ * @return a set that contains header names that should be excluded.
+ */
public Set<String> getInFilter() {
if (inFilter == null) {
inFilter = new HashSet<String>();
@@ -125,14 +146,36 @@
return inFilter;
}
+ /**
+ * Sets the "in" direction filter set. The "in" direction is referred to
+ * copying headers from an external message to a Camel message.
+ *
+ * @return a set that contains headers names that should be excluded.
+ */
public void setInFilter(Set<String> value) {
inFilter = value;
}
+ /**
+ * Gets 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.
+ *
+ * @return regular expression filter pattern
+ */
public String getInFilterPattern() {
return inFilterPattern == null ? null : inFilterPattern.pattern();
}
+ /**
+ * 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 value regular expression filter pattern
+ */
public void setInFilterPattern(String value) {
if (value == null) {
inFilterPattern = null;
@@ -141,10 +184,22 @@
}
}
+ /**
+ * Gets the isLowercase property which is a boolean to determinte
+ * whether header names should be converted to lowercase before
+ * checking it the filter Set. It does not affect filtering using
+ * regular expression pattern.
+ */
public boolean getIsLowercase() {
return isLowercase;
}
+ /**
+ * Sets the isLowercase property which is a boolean to determinte
+ * whether header names should be converted to lowercase before
+ * checking it the filter Set. It does not affect filtering using
+ * regular expression pattern.
+ */
public void setIsLowercase(boolean value) {
isLowercase = value;
}
@@ -155,14 +210,53 @@
public void setAllowNullValues(boolean value) {
allowNullValues = value;
- }
+ }
- public boolean applyFilterToCamelHeaders(String headerName, Object headerValue) {
- return doFiltering(Direction.OUT, headerName, headerValue);
+ protected boolean extendedFilter(Direction direction, String key, Object value) {
+ return false;
}
- public boolean applyFilterToExternalHeaders(String headerName, Object headerValue) {
- return doFiltering(Direction.IN, headerName, headerValue);
- }
+ private boolean doFiltering(Direction direction, String headerName, Object headerValue) {
+
+ if (headerName == null) {
+ return true;
+ }
+
+ if (headerValue == null && !allowNullValues) {
+ return true;
+ }
+
+ Pattern pattern = null;
+ Set<String> filter = null;
+
+ if (Direction.OUT == direction) {
+ pattern = outFilterPattern;
+ filter = outFilter;
+ } else if (Direction.IN == direction) {
+ pattern = inFilterPattern;
+ filter = inFilter;
+ }
+ if (pattern != null && pattern.matcher(headerName).matches()) {
+ return true;
+ }
+
+ if (filter != null) {
+ if (isLowercase) {
+ if (filter.contains(headerName.toLowerCase())) {
+ return true;
+ }
+ } else {
+ if (filter.contains(headerName)) {
+ return true;
+ }
+ }
+ }
+
+ if (extendedFilter(direction, headerName, headerValue)) {
+ return true;
+ }
+
+ return false;
+ }
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java?rev=681576&r1=681575&r2=681576&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java Thu Jul 31 18:15:40 2008
@@ -28,6 +28,8 @@
/**
* Applies filtering logic to Camel Message header that is
* going to be copied to target message such as CXF and JMS message.
+ * It returns true if the filtering logics return a match. Otherwise,
+ * it returns false. A match means the header should be excluded.
*
* @param headerName
* @param headerValue
@@ -40,6 +42,8 @@
* Applies filtering logic to an external message header such
* as CXF and JMS message that is going to be copied to Camel
* message header.
+ * It returns true if the filtering logics return a match. Otherwise,
+ * it returns false. A match means the header should be excluded.
*
* @param headerName
* @param headerValue