Author: ningjiang Date: Mon Oct 1 03:32:59 2012 New Revision: 1392188 URL: http://svn.apache.org/viewvc?rev=1392188&view=rev Log: CAMEL-5668 fix the soap fault response code issue with thanks to James
Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpReturnFaultTest.java camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/jettyproducer/JettyHttpProderReturnFaultTest.java Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java?rev=1392188&r1=1392187&r2=1392188&view=diff ============================================================================== --- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java (original) +++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java Mon Oct 1 03:32:59 2012 @@ -254,6 +254,7 @@ public class DefaultHttpBinding implemen } public void doWriteFaultResponse(Message message, HttpServletResponse response, Exchange exchange) throws IOException { + message.setHeader(Exchange.HTTP_RESPONSE_CODE, 500); doWriteResponse(message, response, exchange); } Modified: camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java?rev=1392188&r1=1392187&r2=1392188&view=diff ============================================================================== --- camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java (original) +++ camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java Mon Oct 1 03:32:59 2012 @@ -237,6 +237,7 @@ public class DefaultHttpBinding implemen } public void doWriteFaultResponse(Message message, HttpServletResponse response, Exchange exchange) throws IOException { + message.setHeader(Exchange.HTTP_RESPONSE_CODE, 500); doWriteResponse(message, response, exchange); } Modified: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpReturnFaultTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpReturnFaultTest.java?rev=1392188&r1=1392187&r2=1392188&view=diff ============================================================================== --- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpReturnFaultTest.java (original) +++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpReturnFaultTest.java Mon Oct 1 03:32:59 2012 @@ -19,6 +19,7 @@ package org.apache.camel.component.jetty import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.http.HttpOperationFailedException; import org.junit.Test; /** @@ -28,8 +29,18 @@ public class HttpReturnFaultTest extends @Test public void testHttpFault() throws Exception { - String out = template.requestBody("http://localhost:{{port}}/test", "Hello World", String.class); - assertEquals("This is a fault", out); + Exchange exchange = template.request("http://localhost:{{port}}/test", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setBody("Hello World!"); + } + + }); + assertTrue(exchange.isFailed()); + HttpOperationFailedException exception = exchange.getException(HttpOperationFailedException.class); + assertNotNull(exception); + assertEquals("This is a fault", exception.getResponseBody()); + assertEquals(500, exception.getStatusCode()); } @Override Modified: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/jettyproducer/JettyHttpProderReturnFaultTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/jettyproducer/JettyHttpProderReturnFaultTest.java?rev=1392188&r1=1392187&r2=1392188&view=diff ============================================================================== --- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/jettyproducer/JettyHttpProderReturnFaultTest.java (original) +++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/jettyproducer/JettyHttpProderReturnFaultTest.java Mon Oct 1 03:32:59 2012 @@ -19,6 +19,7 @@ package org.apache.camel.component.jetty import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.http.HttpOperationFailedException; import org.apache.camel.component.jetty.BaseJettyTest; import org.junit.Test; @@ -37,8 +38,18 @@ public class JettyHttpProderReturnFaultT // give Jetty time to startup properly Thread.sleep(1000); - String out = template.requestBody("jetty://http://localhost:{{port}}/test", "Hello World", String.class); - assertEquals("This is a fault", out); + Exchange exchange = template.request("jetty://http://localhost:{{port}}/test", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setBody("Hello World!"); + } + + }); + assertTrue(exchange.isFailed()); + HttpOperationFailedException exception = exchange.getException(HttpOperationFailedException.class); + assertNotNull(exception); + assertEquals("This is a fault", exception.getResponseBody()); + assertEquals(500, exception.getStatusCode()); } @Override