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 2015/05/14 10:16:25 UTC
[2/2] camel git commit: CAMEL-8774 Filter out the protocol message
from the request message header
CAMEL-8774 Filter out the protocol message from the request message header
Conflicts:
components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/DefaultJettyHttpBinding.java
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1426de82
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1426de82
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1426de82
Branch: refs/heads/camel-2.14.x
Commit: 1426de82c80a27f057dcc4f5fce57f78ec5dcb8d
Parents: 9167208
Author: Willem Jiang <wi...@gmail.com>
Authored: Thu May 14 16:01:54 2015 +0800
Committer: Willem Jiang <wi...@gmail.com>
Committed: Thu May 14 16:15:09 2015 +0800
----------------------------------------------------------------------
.../org/apache/camel/util/MessageHelper.java | 21 ++++++++++++++-
.../apache/camel/util/MessageHelperTest.java | 28 ++++++++++++++++++++
.../jetty/DefaultJettyHttpBinding.java | 4 +--
3 files changed, 50 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/1426de82/camel-core/src/main/java/org/apache/camel/util/MessageHelper.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/util/MessageHelper.java b/camel-core/src/main/java/org/apache/camel/util/MessageHelper.java
index 879fcbf..61a500a 100644
--- a/camel-core/src/main/java/org/apache/camel/util/MessageHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/util/MessageHelper.java
@@ -26,6 +26,7 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
+
import javax.xml.transform.Source;
import org.apache.camel.BytesSource;
@@ -36,6 +37,7 @@ import org.apache.camel.StreamCache;
import org.apache.camel.StringSource;
import org.apache.camel.WrappedFile;
import org.apache.camel.spi.ExchangeFormatter;
+import org.apache.camel.spi.HeaderFilterStrategy;
/**
* Some helper methods when working with {@link org.apache.camel.Message}.
@@ -461,6 +463,18 @@ public final class MessageHelper {
* @param override whether to override existing headers
*/
public static void copyHeaders(Message source, Message target, boolean override) {
+ copyHeaders(source, target, null, override);
+ }
+
+ /**
+ * Copies the headers from the source to the target message.
+ *
+ * @param source the source message
+ * @param target the target message
+ * @param strategy the header filter strategy which could help us to filter the protocol message headers
+ * @param override whether to override existing headers
+ */
+ public static void copyHeaders(Message source, Message target, HeaderFilterStrategy strategy, boolean override) {
if (!source.hasHeaders()) {
return;
}
@@ -470,7 +484,12 @@ public final class MessageHelper {
Object value = entry.getValue();
if (target.getHeader(key) == null || override) {
- target.setHeader(key, value);
+ if (strategy == null) {
+ target.setHeader(key, value);
+ } else if (!strategy.applyFilterToCamelHeaders(key, value, target.getExchange())) {
+ // Just make sure we don't copy the protocol headers to target
+ target.setHeader(key, value);
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/1426de82/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
index 4826c41..e7cc132 100644
--- a/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.util;
import java.io.IOException;
import java.io.OutputStream;
import java.io.StringReader;
+
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
@@ -29,7 +30,9 @@ import org.apache.camel.Message;
import org.apache.camel.StreamCache;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultHeaderFilterStrategy;
import org.apache.camel.impl.DefaultMessage;
+import org.apache.camel.spi.HeaderFilterStrategy;
/**
* Test cases for {@link MessageHelper}
@@ -113,6 +116,29 @@ public class MessageHelperTest extends TestCase {
assertEquals(123, target.getHeader("foo"));
assertEquals(456, target.getHeader("bar"));
}
+
+ public void testCopyHeadersWithHeaderFilterStrategy() throws Exception {
+ CamelContext context = new DefaultCamelContext();
+ context.start();
+
+ message = new DefaultExchange(context).getIn();
+
+ Message source = message;
+ Message target = message.getExchange().getOut();
+
+ DefaultHeaderFilterStrategy headerFilterStrategy = new DefaultHeaderFilterStrategy();
+ headerFilterStrategy.setOutFilterPattern("foo");
+
+ source.setHeader("foo", 123);
+ source.setHeader("bar", 456);
+ target.setHeader("bar", "yes");
+
+ MessageHelper.copyHeaders(source, target, headerFilterStrategy, true);
+
+ assertEquals(null, target.getHeader("foo"));
+ assertEquals(456, target.getHeader("bar"));
+ context.stop();
+ }
public void testDumpAsXmlPlainBody() throws Exception {
CamelContext context = new DefaultCamelContext();
@@ -209,5 +235,7 @@ public class MessageHelperTest extends TestCase {
assertEquals("java.lang.Integer", dump.getHeaders().get(0).getType());
assertEquals("123", dump.getHeaders().get(0).getValue());
}
+
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/1426de82/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/DefaultJettyHttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/DefaultJettyHttpBinding.java b/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/DefaultJettyHttpBinding.java
index a69c82c..94d3ea5 100644
--- a/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/DefaultJettyHttpBinding.java
+++ b/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/DefaultJettyHttpBinding.java
@@ -35,7 +35,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * @version
+ * @version
*/
public class DefaultJettyHttpBinding implements JettyHttpBinding {
@@ -115,7 +115,7 @@ public class DefaultJettyHttpBinding implements JettyHttpBinding {
// preserve headers from in by copying any non existing headers
// to avoid overriding existing headers with old values
- MessageHelper.copyHeaders(exchange.getIn(), answer, false);
+ MessageHelper.copyHeaders(exchange.getIn(), answer, strategy, false);
// extract body after headers has been set as we want to ensure content-type from Jetty HttpExchange
// has been populated first