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


Reply via email to