Author: ningjiang Date: Wed Feb 11 06:13:10 2009 New Revision: 743243 URL: http://svn.apache.org/viewvc?rev=743243&view=rev Log: CAMEL-1330 added a unit test for testing the response code, also fixed this issue in Camel 1.x branch
Modified: camel/branches/camel-1.x/components/camel-cxf/pom.xml 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/main/java/org/apache/camel/component/cxf/util/CxfHeaderHelper.java camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFGreeterRouterTest.java Modified: camel/branches/camel-1.x/components/camel-cxf/pom.xml URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/pom.xml?rev=743243&r1=743242&r2=743243&view=diff ============================================================================== --- camel/branches/camel-1.x/components/camel-cxf/pom.xml (original) +++ camel/branches/camel-1.x/components/camel-cxf/pom.xml Wed Feb 11 06:13:10 2009 @@ -73,6 +73,12 @@ <type>test-jar</type> <scope>test</scope> </dependency> + + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-http</artifactId> + <scope>test</scope> + </dependency> <dependency> <groupId>commons-logging</groupId> 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=743243&r1=743242&r2=743243&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 Feb 11 06:13:10 2009 @@ -165,7 +165,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); + if (value != null) { + response.put(Message.RESPONSE_CODE, value); + } } } Modified: camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/util/CxfHeaderHelper.java URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/util/CxfHeaderHelper.java?rev=743243&r1=743242&r2=743243&view=diff ============================================================================== --- camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/util/CxfHeaderHelper.java (original) +++ camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/util/CxfHeaderHelper.java Wed Feb 11 06:13:10 2009 @@ -105,16 +105,17 @@ // propagate request context key = Client.REQUEST_CONTEXT; - value = message.get(key); + value = message.get(key); if (value != null && !strategy.applyFilterToExternalHeaders(key, value)) { headers.put(key, value); } // propagate response context key = Client.RESPONSE_CONTEXT; - value = message.get(key); + value = message.get(key); if (value != null && !strategy.applyFilterToExternalHeaders(key, value)) { headers.put(key, value); - } + } + } } Modified: camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFGreeterRouterTest.java URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFGreeterRouterTest.java?rev=743243&r1=743242&r2=743243&view=diff ============================================================================== --- camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFGreeterRouterTest.java (original) +++ camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFGreeterRouterTest.java Wed Feb 11 06:13:10 2009 @@ -21,6 +21,8 @@ import javax.xml.ws.Service; import org.apache.camel.CamelContext; +import org.apache.camel.RuntimeCamelException; +import org.apache.camel.component.http.HttpOperationFailedException; import org.apache.camel.spring.SpringCamelContext; import org.apache.cxf.jaxws.EndpointImpl; import org.apache.hello_world_soap_http.Greeter; @@ -36,6 +38,12 @@ "SOAPService"); private final QName routerPortName = new QName("http://apache.org/hello_world_soap_http", "RouterPort"); + + private final String testDocLitFaultBody = + "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" + + "<soap:Body><testDocLitFault xmlns=\"http://apache.org/hello_world_soap_http/types\">" + + "<faultType>NoSuchCodeLitFault</faultType></testDocLitFault>" + + "</soap:Body></soap:Envelope>"; @Override protected void setUp() throws Exception { @@ -86,7 +94,16 @@ // expect the fault here assertNotNull("The fault info should not be null", fault.getFaultInfo()); } - + } + + public void testRoutingSOAPFault() throws Exception { + try { + template.sendBody("http://localhost:9003/CamelContext/RouterPort", testDocLitFaultBody); + fail("Should get an exception here."); + } catch (RuntimeCamelException exception) { + assertTrue("It should get the response error", exception.getCause() instanceof HttpOperationFailedException); + assertEquals("Get a wrong response code", ((HttpOperationFailedException)exception.getCause()).getStatusCode(), 500); + } } @Override