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;