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