Author: ningjiang
Date: Wed May  6 04:54:38 2009
New Revision: 772053

URL: http://svn.apache.org/viewvc?rev=772053&view=rev
Log:
CAMEL-1586 make sure we don't lost the content-type from the producer of Cxf 
endpoint

Modified:
    
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
    
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterTest.java

Modified: 
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java?rev=772053&r1=772052&r2=772053&view=diff
==============================================================================
--- 
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
 (original)
+++ 
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
 Wed May  6 04:54:38 2009
@@ -195,8 +195,11 @@
         if (context != null) {
             MessageContext messageContext = new WrappedMessageContext(context, 
null, Scope.HANDLER);
             response.put(Client.RESPONSE_CONTEXT, messageContext);
-            //put the ResponseCode in the response context
-            Object value = context.get(Message.RESPONSE_CODE);
+            //put the protocol headers into the message headers
+            Map<String, List<String>> protocolHeaders =
+                
CastUtils.cast((Map)messageContext.get(Message.PROTOCOL_HEADERS));
+            response.put(Message.PROTOCOL_HEADERS, protocolHeaders);           
 
+            Object value = context.get(Message.RESPONSE_CODE);            
             if (value != null) {
                 response.put(Message.RESPONSE_CODE, value);
             }

Modified: 
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterTest.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterTest.java?rev=772053&r1=772052&r2=772053&view=diff
==============================================================================
--- 
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterTest.java
 (original)
+++ 
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterTest.java
 Wed May  6 04:54:38 2009
@@ -18,6 +18,8 @@
 
 import java.util.Map;
 
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.cxf.jaxws.context.WrappedMessageContext;
@@ -44,4 +46,21 @@
         assertEquals("Should get the content type", 
protocalHeaders.get("content-type").toString(), "[text/xml; charset=utf-8]");
         assertEquals("Should get the response code ", 
context.get("org.apache.cxf.message.Message.RESPONSE_CODE"), 200);
     }
+    
+    public void testTheContentTypeOnTheWire() throws Exception {
+        Exchange exchange = template.send(ROUTER_ADDRESS,  new Processor() {
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setBody("<soap:Envelope 
xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\";>" 
+                                         + "<soap:Body><ns1:echo 
xmlns:ns1=\"http://cxf.component.camel.apache.org/\";>"
+                                         + "<arg0 
xmlns=\"http://cxf.component.camel.apache.org/\";>hello world</arg0>"
+                                         + 
"</ns1:echo></soap:Body></soap:Envelope>");
+            }
+
+        });        
+        assertNotNull("We should get the content type here", 
exchange.getOut().getHeader("content-type"));
+        assertEquals("Get wrong content type", "text/xml; charset=utf-8", 
exchange.getOut().getHeader("content-type"));
+        String response = exchange.getOut().getBody(String.class);        
+        assertNotNull("Response should not be null", response);
+        assertTrue("We should get right return result", response.indexOf("echo 
hello world") > 0);
+    }
 }


Reply via email to