Author: dkulp
Date: Fri Jul  8 19:23:56 2011
New Revision: 1144432

URL: http://svn.apache.org/viewvc?rev=1144432&view=rev
Log:
Merged revisions 1085543 via svnmerge from 
https://svn.apache.org/repos/asf/camel/trunk

........
  r1085543 | wtam | 2011-03-25 15:56:41 -0400 (Fri, 25 Mar 2011) | 1 line
  
  [CAMEL-3808] Restlet Producer to add query to request URI based on runtime 
information (e.g. Camel header)
........

Added:
    
camel/branches/camel-2.7.x/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/AddQueryTest.java
      - copied unchanged from r1085543, 
camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/AddQueryTest.java
Modified:
    camel/branches/camel-2.7.x/   (props changed)
    
camel/branches/camel-2.7.x/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java
    
camel/branches/camel-2.7.x/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletQueryTest.java

Propchange: camel/branches/camel-2.7.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jul  8 19:23:56 2011
@@ -1 +1 @@
-/camel/trunk:1083696,1083723-1083724,1084150,1085277,1085549,1085905,1085909,1086231,1087005,1087276,1087612,1087856,1088583,1088916-1088917,1089275,1090166,1090960-1090969,1091518,1091771,1091799,1092068,1092577,1092667,1093978,1094147,1094156,1095405,1095469,1095471,1095475-1095476,1096346,1097909,1097912,1097978,1098630,1099417,1100975,1102162,1102181,1104076,1124497,1127744,1127988,1131411,1134252,1134501,1135223,1135364,1136290,1138285,1139163,1140096-1140102,1141783,1143925,1144248,1144324
+/camel/trunk:1083696,1083723-1083724,1084150,1085277,1085543,1085549,1085905,1085909,1086231,1087005,1087276,1087612,1087856,1088583,1088916-1088917,1089275,1090166,1090960-1090969,1091518,1091771,1091799,1092068,1092577,1092667,1093978,1094147,1094156,1095405,1095469,1095471,1095475-1095476,1096346,1097909,1097912,1097978,1098630,1099417,1100975,1102162,1102181,1104076,1124497,1127744,1127988,1131411,1134252,1134501,1135223,1135364,1136290,1138285,1139163,1140096-1140102,1141783,1143925,1144248,1144324

Modified: 
camel/branches/camel-2.7.x/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java?rev=1144432&r1=1144431&r2=1144432&view=diff
==============================================================================
--- 
camel/branches/camel-2.7.x/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java
 (original)
+++ 
camel/branches/camel-2.7.x/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java
 Fri Jul  8 19:23:56 2011
@@ -111,6 +111,14 @@ public class RestletProducer extends Def
             matcher.reset(uri);
         }
 
+        String query = exchange.getIn().getHeader(Exchange.HTTP_QUERY, 
String.class);
+        if (query != null) {
+            if (LOG.isTraceEnabled()) {
+                LOG.trace("Adding query: " + query + " to uri: " + uri);
+            }
+            uri = addQueryToUri(uri, query);
+        }
+        
         if (LOG.isDebugEnabled()) {
             LOG.debug("Using uri: " + uri);
         }
@@ -118,6 +126,33 @@ public class RestletProducer extends Def
         return uri;
     }
 
+
+    protected static String addQueryToUri(String uri, String query) {
+        if (uri == null || uri.length() == 0) {
+            return uri;
+        }
+
+        StringBuffer answer = new StringBuffer();
+
+        int index = uri.indexOf('?');
+        if (index < 0) {
+            answer.append(uri);
+            answer.append("?");
+            answer.append(query);
+        } else {
+            answer.append(uri.substring(0, index));
+            answer.append("?");            
+            answer.append(query);
+            String remaining = uri.substring(index + 1);
+            if (remaining.length() > 0) {
+                answer.append("&");
+                answer.append(remaining);
+            }
+        }
+        return answer.toString();
+        
+    }
+
     protected RestletOperationException 
populateRestletProducerException(Exchange exchange, Response response, int 
responseCode) {
         RestletOperationException exception;
         String uri = exchange.getFromEndpoint().getEndpointUri();

Modified: 
camel/branches/camel-2.7.x/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletQueryTest.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletQueryTest.java?rev=1144432&r1=1144431&r2=1144432&view=diff
==============================================================================
--- 
camel/branches/camel-2.7.x/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletQueryTest.java
 (original)
+++ 
camel/branches/camel-2.7.x/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletQueryTest.java
 Fri Jul  8 19:23:56 2011
@@ -37,6 +37,9 @@ public class RestletQueryTest extends Re
             public void configure() throws Exception {
                 from("restlet:http://localhost:9080/users/{username}";)
                     .process(new SetUserProcessor());
+                
+                
from("direct:start").to("restlet:http://localhost:9080/users/{username}";);
+
             }
         };
     }
@@ -55,4 +58,19 @@ public class RestletQueryTest extends Re
 
         assertHttpResponse(response, 200, "text/plain");
     }
+    
+    
+    @Test
+    public void testGetBodyByRestletProducer() throws Exception {        
+        Exchange ex = template.request("direct:start", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(Exchange.HTTP_QUERY, QUERY_STRING);
+                exchange.getIn().setHeader("username", "homer");
+                
+            }
+        });
+        assertEquals(200, ex.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
+        
+    }
 }
\ No newline at end of file


Reply via email to