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


Reply via email to