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 2009/09/15 05:52:42 UTC
svn commit: r814987 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/impl/
components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/
components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/
components/camel-cx...
Author: ningjiang
Date: Tue Sep 15 03:52:41 2009
New Revision: 814987
URL: http://svn.apache.org/viewvc?rev=814987&view=rev
Log:
CAMEL-2014, CAMEL-2015 made some improvements on the camel-cxfrs component
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
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/CxfRsEndpointTest.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsSpringProducer.xml
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java?rev=814987&r1=814986&r2=814987&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java Tue Sep 15 03:52:41 2009
@@ -88,7 +88,7 @@
}
// if endpoint is strict (not lenient) and we have unknown parameters configured then
- // fail if there are parameters that could not be set, then they are probably miss spelt or not supported at all
+ // fail if there are parameters that could not be set, then they are probably misspell or not supported at all
if (!endpoint.isLenientProperties()) {
validateParameters(uri, parameters, null);
}
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java?rev=814987&r1=814986&r2=814987&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java Tue Sep 15 03:52:41 2009
@@ -69,9 +69,10 @@
// endpoint URI does not specify a bean
answer = new CxfRsEndpoint(remaining, this);
}
-
+ answer.setParameters((Map<String, String>)parameters);
setEndpointHeaderFilterStrategy(answer);
return answer;
}
-
+
+
}
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java?rev=814987&r1=814986&r2=814987&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java Tue Sep 15 03:52:41 2009
@@ -19,6 +19,7 @@
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.camel.CamelContext;
@@ -43,9 +44,11 @@
public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrategyAware {
private static final Log LOG = LogFactory.getLog(CxfRsEndpoint.class);
+ private Map<String, String> parameters;
private List<Class<?>> resourceClasses;
private HeaderFilterStrategy headerFilterStrategy;
private CxfRsBinding binding;
+ private boolean httpClientAPI;
private AtomicBoolean bindingInitialized = new AtomicBoolean(false);
@@ -57,6 +60,27 @@
super(endpointUri, component);
}
+ public void setParameters(Map<String, String> param) {
+ parameters = param;
+ }
+
+ public Map<String, String> getParameters() {
+ return parameters;
+ }
+
+ public void setHttpClientAPI(boolean clientAPI) {
+ httpClientAPI = clientAPI;
+ }
+
+ public boolean isHttpClientAPI() {
+ return httpClientAPI;
+ }
+
+ @Override
+ public boolean isLenientProperties() {
+ return true;
+ }
+
public HeaderFilterStrategy getHeaderFilterStrategy() {
if (headerFilterStrategy == null) {
headerFilterStrategy = new CxfRsHeaderFilterStrategy();
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=814987&r1=814986&r2=814987&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 Sep 15 03:52:41 2009
@@ -19,6 +19,8 @@
import java.lang.reflect.Method;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import javax.ws.rs.core.Response;
@@ -57,7 +59,11 @@
Message inMessage = exchange.getIn();
Boolean httpClientAPI = inMessage.getHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, Boolean.class);
- if (httpClientAPI != null && httpClientAPI.booleanValue()) {
+ // set the value with endpoint's option
+ if (httpClientAPI == null) {
+ httpClientAPI = ((CxfRsEndpoint)getEndpoint()).isHttpClientAPI();
+ }
+ if (httpClientAPI.booleanValue()) {
invokeHttpClient(exchange);
} else {
invokeProxyClient(exchange);
@@ -83,9 +89,17 @@
// set the path
if (path != null) {
client.path(path);
- }
+ }
+
+ CxfRsEndpoint cxfRsEndpoint = (CxfRsEndpoint)getEndpoint();
+ Map<String, String> maps = cxfRsEndpoint.getParameters();
+ if (maps != null) {
+ for (Map.Entry<String, String> entry : maps.entrySet()) {
+ client.query(entry.getKey(), entry.getValue());
+ }
+ }
- CxfRsBinding binding = ((CxfRsEndpoint)getEndpoint()).getBinding();
+ CxfRsBinding binding = cxfRsEndpoint.getBinding();
// set the body
Object body = null;
Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java?rev=814987&r1=814986&r2=814987&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java Tue Sep 15 03:52:41 2009
@@ -30,9 +30,21 @@
+ "java.lang.String ; org.apache.camel.component.cxf.jaxrs.testbean.Order");
assertNotNull("The endpoint should not be null ", endpoint);
- assertEquals("Get a wrong address ", endpoint.getEndpointUri(), "http://localhost:9000");
- assertEquals("Get a wrong size of resouces classes", endpoint.getResourceClasses().size(), 3);
- assertEquals("Get a wrong resources class", endpoint.getResourceClasses().get(0), CustomerService.class);
+ assertEquals("Get a wrong address ", "http://localhost:9000", endpoint.getEndpointUri());
+ assertEquals("Get a wrong size of resouces classes", 3, endpoint.getResourceClasses().size());
+ assertEquals("Get a wrong resources class", CustomerService.class, endpoint.getResourceClasses().get(0));
+ }
+
+ @Test
+ public void testCxfRsEndpointParameters() throws Exception {
+ CxfRsComponent component = new CxfRsComponent(context);
+ CxfRsEndpoint endpoint = (CxfRsEndpoint)component.createEndpoint("cxfrs://http://localhost:9000/templatetest/TID/ranges/start=0;end=1?"
+ + "httpClientAPI=true&q1=11&q2=12");
+
+ assertEquals("Get a wrong URI ", "http://localhost:9000/templatetest/TID/ranges/start=0;end=1", endpoint.getEndpointUri());
+ assertEquals("Get a wrong usingClientAPI option", true, endpoint.isHttpClientAPI());
+ assertNotNull("The Parameter should not be null" + endpoint.getParameters());
+ assertEquals("Get a wrong parameter map", "{q1=11, q2=12}", endpoint.getParameters().toString());
}
}
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=814987&r1=814986&r2=814987&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 Sep 15 03:52:41 2009
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.cxf.jaxrs;
+import java.io.InputStream;
+
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Message;
@@ -28,6 +30,14 @@
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CxfRsProducerTest extends CamelSpringTestSupport {
+
+ public static class JettyProcessor implements Processor {
+ public void process(Exchange exchange) throws Exception {
+ // check the query
+ Message inMessage = exchange.getIn();
+ exchange.getOut().setBody(inMessage.getHeader(Exchange.HTTP_QUERY, String.class));
+ }
+ }
@Override
protected AbstractXmlApplicationContext createApplicationContext() {
@@ -93,5 +103,59 @@
// END SNIPPET: example-http
}
+ @Test
+ public void testGetConstumerWithCxfRsEndpoint() {
+
+ Exchange exchange = template.send("cxfrs://http://localhost:9002?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");
+ // set the relative path
+ inMessage.setHeader(Exchange.HTTP_PATH, "/customerservice/customers/123");
+ // Specify the response class , cxfrs will use InputStream as the response object type
+ inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, Customer.class);
+ // since we use the Get method, so we don't need to set the message body
+ inMessage.setBody(null);
+ }
+
+ });
+
+ // get the response message
+ Customer response = (Customer) exchange.getOut().getBody();
+
+ 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");
+
+ }
+
+ @Test
+ public void testProducerWithQueryParameters() {
+
+ Exchange exchange = template.send("cxfrs://http://localhost:9003/testQuery?httpClientAPI=true&q1=12&q2=13", 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");
+ inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, InputStream.class);
+ inMessage.setBody(null);
+ }
+
+ });
+
+ // get the response message
+ String response = exchange.getOut().getBody(String.class);
+
+ assertNotNull("The response should not be null ", response);
+ assertEquals("The response value is wrong", "q1=12&q2=13", response);
+
+
+ }
+
}
Modified: camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsSpringProducer.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsSpringProducer.xml?rev=814987&r1=814986&r2=814987&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsSpringProducer.xml (original)
+++ camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsSpringProducer.xml Tue Sep 15 03:52:41 2009
@@ -50,6 +50,12 @@
<from uri="direct://http"/>
<to uri="cxfrs://bean://rsClientHttp"/>
</route>
+ <route>
+ <from uri="jetty://http://localhost:9003/testQuery"/>
+ <process ref="myProcessor" />
+ </route>
</camelContext>
+ <bean id="myProcessor" class="org.apache.camel.component.cxf.jaxrs.CxfRsProducerTest$JettyProcessor"/>
+
</beans>