You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/12/30 13:42:41 UTC
svn commit: r1053877 -
/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConvertBodyToTest.java
Author: davsclaus
Date: Thu Dec 30 12:42:41 2010
New Revision: 1053877
URL: http://svn.apache.org/viewvc?rev=1053877&view=rev
Log:
CAMEL-3175: Added test.
Added:
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConvertBodyToTest.java
- copied, changed from r1053817, camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java
Copied: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConvertBodyToTest.java (from r1053817, camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConvertBodyToTest.java?p2=camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConvertBodyToTest.java&p1=camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java&r1=1053817&r2=1053877&rev=1053877&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConvertBodyToTest.java Thu Dec 30 12:42:41 2010
@@ -16,23 +16,11 @@
*/
package org.apache.camel.component.cxf.jaxrs;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.builder.NoErrorHandlerBuilder;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.cxf.CxfConstants;
import org.apache.camel.component.cxf.jaxrs.testbean.Customer;
-import org.apache.camel.component.cxf.util.CxfUtils;
+import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
@@ -42,92 +30,31 @@ import org.apache.http.impl.client.Defau
import org.apache.http.util.EntityUtils;
import org.junit.Test;
-
-public class CxfRsConsumerTest extends CamelTestSupport {
+public class CxfRsConvertBodyToTest extends CamelTestSupport {
private static final String PUT_REQUEST = "<Customer><name>Mary</name><id>123</id></Customer>";
private static final String CXF_RS_ENDPOINT_URI = "cxfrs://http://localhost:9000/rest?resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerService";
-
- // START SNIPPET: example
+
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() {
- errorHandler(new NoErrorHandlerBuilder());
- from(CXF_RS_ENDPOINT_URI).process(new Processor() {
+ Response OK = Response.ok().build();
- public void process(Exchange exchange) throws Exception {
- Message inMessage = exchange.getIn();
- // Get the operation name from in message
- String operationName = inMessage.getHeader(CxfConstants.OPERATION_NAME, String.class);
- if ("getCustomer".equals(operationName)) {
- String httpMethod = inMessage.getHeader(Exchange.HTTP_METHOD, String.class);
- assertEquals("Get a wrong http method", "GET", httpMethod);
- String path = inMessage.getHeader(Exchange.HTTP_PATH, String.class);
- // The parameter of the invocation is stored in the body of in message
- String id = (String) inMessage.getBody(String.class);
- if ("/customerservice/customers/126".equals(path)) {
- Customer customer = new Customer();
- customer.setId(Long.parseLong(id));
- customer.setName("Willem");
- // We just put the response Object into the out message body
- exchange.getOut().setBody(customer);
- } else {
- if ("/customerservice/customers/456".equals(path)) {
- Response r = Response.status(404).entity("Can't found the customer with uri " + path).build();
- throw new WebApplicationException(r);
- } else {
- throw new RuntimeCamelException("Can't found the customer with uri " + path);
- }
- }
- }
- if ("updateCustomer".equals(operationName)) {
- assertEquals("Get a wrong customer message header", "header1;header2", inMessage.getHeader("test"));
- String httpMethod = inMessage.getHeader(Exchange.HTTP_METHOD, String.class);
- assertEquals("Get a wrong http method", "PUT", httpMethod);
- Customer customer = inMessage.getBody(Customer.class);
- assertNotNull("The customer should not be null.", customer);
- // Now you can do what you want on the customer object
- assertEquals("Get a wrong customer name.", "Mary", customer.getName());
- // set the response back
- exchange.getOut().setBody(Response.ok().build());
- }
- }
-
- });
- }
+ from(CXF_RS_ENDPOINT_URI)
+ // should be able to convert to Customer
+ .convertBodyTo(Customer.class)
+ .to("mock:result")
+ // respond with OK
+ .transform(constant(OK));
+ };
};
}
- // END SNIPPET: example
-
- @Test
- public void testGetCustomer() throws Exception {
- URL url = new URL("http://localhost:9000/rest/customerservice/customers/126");
- InputStream in = url.openStream();
- assertEquals("{\"Customer\":{\"id\":126,\"name\":\"Willem\"}}", CxfUtils.getStringFromInputStream(in));
-
- }
-
- @Test
- public void testGetWrongCustomer() throws Exception {
- URL url = new URL("http://localhost:9000/rest/customerservice/customers/456");
- try {
- url.openStream();
- fail("Expect to get exception here");
- } catch (FileNotFoundException exception) {
- // do nothing here
- }
- url = new URL("http://localhost:9000/rest/customerservice/customers/256");
- try {
- url.openStream();
- fail("Expect to get exception here");
- } catch (IOException exception) {
- // expect the Internal error exception
- }
-
- }
-
@Test
public void testPutConsumer() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMessageCount(1);
+ mock.message(0).body().isInstanceOf(Customer.class);
+
HttpPut put = new HttpPut("http://localhost:9000/rest/customerservice/customers");
StringEntity entity = new StringEntity(PUT_REQUEST, "ISO-8859-1");
entity.setContentType("text/xml; charset=ISO-8859-1");
@@ -143,6 +70,5 @@ public class CxfRsConsumerTest extends C
httpclient.getConnectionManager().shutdown();
}
}
-
}