Author: ningjiang Date: Tue Apr 10 15:41:36 2012 New Revision: 1311795 URL: http://svn.apache.org/viewvc?rev=1311795&view=rev Log: Merged revisions 1311771 via svnmerge from https://svn.apache.org/repos/asf/camel/branches/camel-2.9.x
................ r1311771 | ningjiang | 2012-04-10 22:57:37 +0800 (Tue, 10 Apr 2012) | 9 lines Merged revisions 1311732 via svnmerge from https://svn.apache.org/repos/asf/camel/trunk ........ r1311732 | ningjiang | 2012-04-10 22:06:21 +0800 (Tue, 10 Apr 2012) | 1 line CAMEL-5158 camel-cxfrs producer should keep the reponse detail when the exception is thrown ........ ................ Modified: camel/branches/camel-2.8.x/ (props changed) camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Tue Apr 10 15:41:36 2012 @@ -0,0 +1,2 @@ +/camel/branches/camel-2.9.x:1311771 +/camel/trunk:1311732 Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java?rev=1311795&r1=1311794&r2=1311795&view=diff ============================================================================== --- camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java (original) +++ camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java Tue Apr 10 15:41:36 2012 @@ -301,7 +301,8 @@ 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()); if (responseCode >= 300 && responseCode < 400) { String redirectLocation; if (response.getMetadata().getFirst("Location") != null) { Modified: camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java?rev=1311795&r1=1311794&r2=1311795&view=diff ============================================================================== --- camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java (original) +++ camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java Tue Apr 10 15:41:36 2012 @@ -27,6 +27,7 @@ import org.apache.camel.Exchange; import org.apache.camel.ExchangePattern; import org.apache.camel.Message; import org.apache.camel.Processor; +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.AvailablePortFinder; @@ -164,11 +165,38 @@ public class CxfRsProducerTest extends C } @Test - public void testGetConstumerWithCxfRsEndpoint() { + public void testGetCustomerExceptionWithCxfRsEndpoint() { Exchange exchange = template.send("cxfrs://http://localhost:" + getPort1() + "?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(); + + assertEquals("Get a wrong response body", "Cannot find the customer!", exception.getResponseBody()); + + } + + @Test + public void testGetCustumerWithCxfRsEndpoint() { + Exchange exchange + = template.send("cxfrs://http://localhost:" + getPort1() + "/?httpClientAPI=true", new Processor() { + public void process(Exchange exchange) throws Exception { + exchange.setPattern(ExchangePattern.InOut); Message inMessage = exchange.getIn(); // set the Http method inMessage.setHeader(Exchange.HTTP_METHOD, "GET"); Modified: camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java?rev=1311795&r1=1311794&r2=1311795&view=diff ============================================================================== --- camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java (original) +++ camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java Tue Apr 10 15:41:36 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;
