Author: ningjiang
Date: Tue Apr 10 14:06:21 2012
New Revision: 1311732

URL: http://svn.apache.org/viewvc?rev=1311732&view=rev
Log:
CAMEL-5158 camel-cxfrs producer should keep the reponse detail when the 
exception is thrown

Modified:
    
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java

Modified: 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java?rev=1311732&r1=1311731&r2=1311732&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
 Tue Apr 10 14:06:21 2012
@@ -301,7 +301,9 @@ public class CxfRsProducer extends Defau
         String uri = exchange.getFromEndpoint().getEndpointUri();
         String statusText = 
Response.Status.fromStatusCode(responseCode).toString();
         Map<String, String> headers = parseResponseHeaders(response, exchange);
-        String copy = response.toString();
+        //Get the response detail string
+        String copy = 
exchange.getContext().getTypeConverter().convertTo(String.class, 
response.getEntity());
+        System.out.println("The entity response is " + copy + "!");
         if (responseCode >= 300 && responseCode < 400) {
             String redirectLocation;
             if (response.getMetadata().getFirst("Location") != null) {

Modified: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java?rev=1311732&r1=1311731&r2=1311732&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
 Tue Apr 10 14:06:21 2012
@@ -28,6 +28,7 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.component.cxf.CXFTestSupport;
+import org.apache.camel.component.cxf.CxfOperationException;
 import org.apache.camel.component.cxf.common.message.CxfConstants;
 import org.apache.camel.component.cxf.jaxrs.testbean.Customer;
 import org.apache.camel.test.junit4.CamelSpringTestSupport;
@@ -161,7 +162,34 @@ public class CxfRsProducerTest extends C
     }
     
     @Test
-    public void testGetCostumerWithCxfRsEndpoint() {
+    public void testGetCustomerExceptionWithCxfRsEndpoint() {
+        Exchange exchange 
+            = template.send("cxfrs://http://localhost:"; + getPort1() + "/" + 
getClass().getSimpleName() + "/?httpClientAPI=true", new Processor() {
+                public void process(Exchange exchange) throws Exception {
+                    exchange.setPattern(ExchangePattern.InOut);
+                    Message message = exchange.getIn();
+                    // set the Http method
+                    message.setHeader(Exchange.HTTP_METHOD, "PUT");
+                    // set the relative path
+                    message.setHeader(Exchange.HTTP_PATH, 
"/customerservice/customers");
+                    // we just setup the customer with a wrong id
+                    Customer customer = new Customer();
+                    customer.setId(222);
+                    customer.setName("user");
+                    message.setBody(customer);                
+                }
+            });
+ 
+        // we should get the exception here 
+        assertNotNull("Expect the exception here", exchange.getException());
+        CxfOperationException exception = 
(CxfOperationException)exchange.getException();
+        
+        System.out.println(exception.getResponseBody());
+        
+    }
+    
+    @Test
+    public void testGetCustumerWithCxfRsEndpoint() {
         Exchange exchange 
             = template.send("cxfrs://http://localhost:"; + getPort1() + "/" + 
getClass().getSimpleName() + "/?httpClientAPI=true", new Processor() {
                 public void process(Exchange exchange) throws Exception {

Modified: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java?rev=1311732&r1=1311731&r2=1311732&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java
 Tue Apr 10 14:06:21 2012
@@ -81,7 +81,7 @@ public class CustomerService {
             customers.put(customer.getId(), customer);
             r = Response.ok().build();
         } else {
-            r = Response.notModified().build();
+            r = Response.status(406).entity("Cannot find the 
customer").build();
         }
 
         return r;


Reply via email to