You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2011/06/21 15:31:47 UTC
svn commit: r1138001 - in /camel/trunk/components/camel-cxf/src:
main/java/org/apache/camel/component/cxf/jaxrs/
test/java/org/apache/camel/component/cxf/jaxrs/
Author: ningjiang
Date: Tue Jun 21 13:31:47 2011
New Revision: 1138001
URL: http://svn.apache.org/viewvc?rev=1138001&view=rev
Log:
CAMEL-4128 set the status code into message header for CxfRsProducer
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.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=1138001&r1=1138000&r2=1138001&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 Jun 21 13:31:47 2011
@@ -148,6 +148,7 @@ public class CxfRsProducer extends Defau
// Get the collection member type first
Type[] actualTypeArguments = ((ParameterizedType) genericType).getActualTypeArguments();
response = client.invokeAndGetCollection(httpMethod, body, (Class) actualTypeArguments[0]);
+
} else {
throw new CamelExchangeException("Header " + CxfConstants.CAMEL_CXF_RS_RESPONSE_GENERIC_TYPE + " not found in message", exchange);
}
@@ -155,6 +156,7 @@ public class CxfRsProducer extends Defau
response = client.invoke(httpMethod, body, responseClass);
}
}
+ int statesCode = client.getResponse().getStatus();
//Throw exception on a response > 207
//http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
if (throwException) {
@@ -170,6 +172,7 @@ public class CxfRsProducer extends Defau
LOG.trace("Response body = {}", response);
exchange.getOut().setBody(binding.bindResponseToCamelBody(response, exchange));
exchange.getOut().setHeaders(binding.bindResponseHeadersToCamelHeaders(response, exchange));
+ exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, statesCode);
}
}
@@ -200,7 +203,7 @@ public class CxfRsProducer extends Defau
// Will send out the message to
// Need to deal with the sub resource class
Object response = method.invoke(target, parameters);
-
+ int statesCode = target.getResponse().getStatus();
if (throwException) {
if (response instanceof Response) {
Integer respCode = ((Response) response).getStatus();
@@ -211,10 +214,12 @@ public class CxfRsProducer extends Defau
}
CxfRsEndpoint cxfRsEndpoint = (CxfRsEndpoint) getEndpoint();
CxfRsBinding binding = cxfRsEndpoint.getBinding();
+
if (exchange.getPattern().isOutCapable()) {
LOG.trace("Response body = {}", response);
exchange.getOut().setBody(binding.bindResponseToCamelBody(response, exchange));
exchange.getOut().setHeaders(binding.bindResponseHeadersToCamelHeaders(response, exchange));
+ exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, statesCode);
}
}
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java?rev=1138001&r1=1138000&r2=1138001&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java Tue Jun 21 13:31:47 2011
@@ -202,8 +202,6 @@ public class DefaultCxfRsBinding impleme
}
}
- // put response code in Camel message header
- answer.put(Exchange.HTTP_RESPONSE_CODE, ((Response)response).getStatus());
}
return answer;
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=1138001&r1=1138000&r2=1138001&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 Jun 21 13:31:47 2011
@@ -79,6 +79,7 @@ public class CxfRsProducerTest extends C
assertNotNull("The response should not be null ", response);
assertEquals("Get a wrong customer id ", String.valueOf(response.getId()), "123");
assertEquals("Get a wrong customer name", response.getName(), "John");
+ assertEquals("Get a wrong response code", 200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
// END SNIPPET: ProxyExample
}
@@ -105,6 +106,7 @@ public class CxfRsProducerTest extends C
assertNotNull("The response should not be null ", response);
assertEquals("Get a wrong customer id ", String.valueOf(response.get(0).getId()), "113");
assertEquals("Get a wrong customer name", response.get(0).getName(), "Dan");
+ assertEquals("Get a wrong response code", 200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
}
@Test
@@ -134,6 +136,7 @@ public class CxfRsProducerTest extends C
assertNotNull("The response should not be null ", response);
assertEquals("Get a wrong customer id ", String.valueOf(response.getId()), "123");
assertEquals("Get a wrong customer name", response.getName(), "John");
+ assertEquals("Get a wrong response code", 200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
// END SNIPPET: HttpExample
}
@@ -159,6 +162,7 @@ public class CxfRsProducerTest extends C
assertNotNull("The response should not be null ", response);
assertEquals("Get a wrong customer id ", String.valueOf(response.getId()), "123");
assertEquals("Get a wrong customer name", response.getName(), "John");
+ assertEquals("Get a wrong response code", 200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
}
@Test
@@ -242,10 +246,10 @@ public class CxfRsProducerTest extends C
// get the response message
Customer response = (Customer) exchange.getOut().getBody();
- System.out.println("Response is " + exchange.getOut().getHeaders());
assertNotNull("The response should not be null ", response);
assertTrue("Get a wrong customer id ", response.getId() != 8888);
assertEquals("Get a wrong customer name", response.getName(), "Willem");
+ assertEquals("Get a wrong response code", 201, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
}
@Test