Author: ningjiang
Date: Mon Nov 9 06:20:09 2009
New Revision: 833975
URL: http://svn.apache.org/viewvc?rev=833975&view=rev
Log:
CAMEL-2149 added CamelCxfRsQueryMap header option for Camel-CxfRs producer
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConstants.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/CxfRsProducerTest.java
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConstants.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConstants.java?rev=833975&r1=833974&r2=833975&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConstants.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConstants.java
Mon Nov 9 06:20:09 2009
@@ -45,6 +45,7 @@
String CAMEL_CXF_RS_USING_HTTP_API = "CamelCxfRsUsingHttpAPI";
String CAMEL_CXF_RS_VAR_VALUES = "CamelCxfRsVarValues";
String CAMEL_CXF_RS_RESPONSE_CLASS = "CamelCxfRsResponseClass";
+ String CAMEL_CXF_RS_QUERY_MAP = "CamelCxfRsQueryMap";
String CAMEL_CXF_RS_OPERATION_RESOURCE_INFO_STACK =
"CamelCxfRsOperationResourceInfoStack";
String CAMEL_CXF_ATTACHMENTS = "CamelAttachments";
}
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=833975&r1=833974&r2=833975&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
Mon Nov 9 06:20:09 2009
@@ -92,7 +92,11 @@
}
CxfRsEndpoint cxfRsEndpoint = (CxfRsEndpoint)getEndpoint();
- Map<String, String> maps = cxfRsEndpoint.getParameters();
+ // check if there is a query map in the message header
+ Map<String, String> maps =
inMessage.getHeader(CxfConstants.CAMEL_CXF_RS_QUERY_MAP, Map.class);
+ if (maps == null) {
+ maps = cxfRsEndpoint.getParameters();
+ }
if (maps != null) {
for (Map.Entry<String, String> entry : maps.entrySet()) {
client.query(entry.getKey(), entry.getValue());
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=833975&r1=833974&r2=833975&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
Mon Nov 9 06:20:09 2009
@@ -17,6 +17,8 @@
package org.apache.camel.component.cxf.jaxrs;
import java.io.InputStream;
+import java.util.LinkedHashMap;
+import java.util.Map;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
@@ -158,5 +160,35 @@
}
+ @Test
+ public void testProducerWithQueryParametersHeader() {
+
+ 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);
+ Map<String, String> queryMap = new LinkedHashMap<String,
String>();
+ queryMap.put("q1", "new");
+ queryMap.put("q2", "world");
+ inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_QUERY_MAP,
queryMap);
+ 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=new&q2=world",
response);
+
+
+ }
+
}