CAMEL-3581 Forward http response code from CXF to Camel

git-svn-id: https://svn.apache.org/repos/asf/camel/trunk@1062776 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/transport/CamelDestination.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/transport/CamelDestination.java
index 2782fb9..9cb3a53 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/transport/CamelDestination.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/transport/CamelDestination.java
@@ -51,6 +51,8 @@
 
 /**
  * @version $Revision$
+ * 
+ * Forwards messages from Camel to CXF and the CXF response back to Camel
  */
 public class CamelDestination extends AbstractDestination implements Configurable {
     protected static final String BASE_BEAN_NAME_SUFFIX = ".camel-destination";
@@ -243,6 +245,9 @@
                                             camelExchange.getOut().getHeaders(), camelExchange);            
     }
 
+    /**
+     * Receives a response from CXF and forwards it to the camel route the request came in from
+     */
     private class CamelOutputStream extends CachedOutputStream {
         private Message outMessage;
 
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/util/CxfHeaderHelper.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/util/CxfHeaderHelper.java
index 30fddc3..69a8a49 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/util/CxfHeaderHelper.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/util/CxfHeaderHelper.java
@@ -85,9 +85,9 @@
             return;
         }
 
+        // Copy the CXF protocol headers to the camel headers
         Map<String, List<String>> cxfHeaders =
             CastUtils.cast((Map)message.get(Message.PROTOCOL_HEADERS));
-
         if (cxfHeaders != null) {
             for (Map.Entry<String, List<String>> entry : cxfHeaders.entrySet()) {
                 if (!strategy.applyFilterToExternalHeaders(entry.getKey(), entry.getValue(), exchange)) {
@@ -116,6 +116,13 @@
         if (value != null && !strategy.applyFilterToExternalHeaders(key, value, exchange)) {
             headers.put(key, value);
         }
+        
+        // propagate response code
+        key = Message.RESPONSE_CODE;
+        value = message.get(key);
+        if (value != null && !strategy.applyFilterToExternalHeaders(key, value, exchange)) {
+            headers.put(Exchange.HTTP_RESPONSE_CODE, value);
+        }
     }
 
 }