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);
+        
+        
+    }
+    
 
 }


Reply via email to