Author: davsclaus Date: Fri Dec 28 11:46:38 2012 New Revision: 1426472 URL: http://svn.apache.org/viewvc?rev=1426472&view=rev Log: CAMEL-5912: Aligned code in producer with camel-http/camel-http4 does.
Modified: camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/helper/AhcHelper.java Modified: camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java?rev=1426472&r1=1426471&r2=1426472&view=diff ============================================================================== --- camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java (original) +++ camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java Fri Dec 28 11:46:38 2012 @@ -23,6 +23,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.io.UnsupportedEncodingException; +import java.net.URI; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -61,7 +62,12 @@ public class DefaultAhcBinding implement RequestBuilder builder = new RequestBuilder(); try { + // creating the url to use takes 2-steps String url = AhcHelper.createURL(exchange, endpoint); + URI uri = AhcHelper.createURI(exchange, url, endpoint); + // get the url from the uri + url = uri.toASCIIString(); + log.trace("Setting url {}", url); builder.setUrl(url); } catch (Exception e) { Modified: camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/helper/AhcHelper.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/helper/AhcHelper.java?rev=1426472&r1=1426471&r2=1426472&view=diff ============================================================================== --- camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/helper/AhcHelper.java (original) +++ camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/helper/AhcHelper.java Fri Dec 28 11:46:38 2012 @@ -164,4 +164,32 @@ public final class AhcHelper { return uri; } + + /** + * Creates the URI to invoke. + * + * @param exchange the exchange + * @param url the url to invoke + * @param endpoint the endpoint + * @return the URI to invoke + */ + public static URI createURI(Exchange exchange, String url, AhcEndpoint endpoint) throws URISyntaxException { + URI uri = new URI(url); + // is a query string provided in the endpoint URI or in a header (header overrules endpoint) + String queryString = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class); + if (queryString == null) { + queryString = endpoint.getHttpUri().getRawQuery(); + } + // We should user the query string from the HTTP_URI header + if (queryString == null) { + queryString = uri.getQuery(); + } + if (queryString != null) { + // need to encode query string + queryString = UnsafeUriCharactersEncoder.encode(queryString); + uri = URISupport.createURIWithQuery(uri, queryString); + } + return uri; + } + }