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 2016/07/25 15:16:44 UTC

[2/3] camel git commit: Filter existing restlet headers when building restlet request

Filter existing restlet headers when building restlet request


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f80365cd
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f80365cd
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f80365cd

Branch: refs/heads/master
Commit: f80365cde8f8ab2595095817e8146f8942c64b97
Parents: 3706bf1
Author: John Moon <jo...@transamerica.com>
Authored: Mon Jul 18 10:00:03 2016 -0400
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Jul 25 17:11:57 2016 +0200

----------------------------------------------------------------------
 .../component/restlet/DefaultRestletBinding.java   | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/f80365cd/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java
index 482a97a..31eb55e 100644
--- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java
+++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java
@@ -195,11 +195,24 @@ public class DefaultRestletBinding implements RestletBinding, HeaderFilterStrate
             }
         }
 
-        //Get outgoing custom http headers
-        Series<Header> restletHeaders = (Series)request.getAttributes().get(HeaderConstants.ATTRIBUTE_HEADERS);
+        //Get outgoing custom http headers from the exchange if they exists
+        Series<Header> restletHeaders = exchange.getIn().getHeader(HeaderConstants.ATTRIBUTE_HEADERS,Series.class);
         if (restletHeaders == null) {
             restletHeaders = new Series<>(Header.class);
             request.getAttributes().put(HeaderConstants.ATTRIBUTE_HEADERS, restletHeaders);
+        } else {
+            
+            //If the restlet headers already exists on the exchange, we need to filter them
+            for(String name : restletHeaders.getNames()){
+                if(headerFilterStrategy.applyFilterToCamelHeaders(name, restletHeaders.getValues(name), exchange)) {
+                    restletHeaders.removeAll(name);
+                }
+            }
+            request.getAttributes().put(HeaderConstants.ATTRIBUTE_HEADERS, restletHeaders);
+            
+            //Since the restlet headers already exists remove them from the exchange so they don't get added again below
+            //We will get a new set of restlet headers on the response
+            exchange.getIn().removeHeader(HeaderConstants.ATTRIBUTE_HEADERS);
         }
 
         // login and password are filtered by header filter strategy