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;