http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/java/org/apache/camel/component/http4/UrlRewrite.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/UrlRewrite.java
 
b/components/camel-http4/src/main/java/org/apache/camel/component/http4/UrlRewrite.java
deleted file mode 100644
index e5c4be4..0000000
--- 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/UrlRewrite.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.http4;
-
-import org.apache.camel.Producer;
-
-/**
- * Allows to plugin custom strategy for rewriting url.
- * <p/>
- * This allows for example to proxy http services and plugin a url rewrite
- * strategy such as the <a 
href="http://camel.apache.org/urlrewrite";>url-rewrite</a> component.
- */
-public interface UrlRewrite {
-
-    /**
-     * Rewrite the url.
-     *
-     * @param url  the absolute url (eg with scheme://host:port/path?query)
-     * @param relativeUrl optional relative url, if bridging endpoints, which 
then would be without the base path from the
-     *                    endpoint from the given producer.
-     * @param producer the producer to use the rewritten url
-     * @return the rewritten url, or <tt>null</tt> to use the original url
-     * @throws Exception is thrown if error rewriting the url
-     */
-    String rewrite(String url, String relativeUrl, Producer producer) throws 
Exception;
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/CamelFileDataSource.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/CamelFileDataSource.java
 
b/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/CamelFileDataSource.java
deleted file mode 100644
index c85e975..0000000
--- 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/CamelFileDataSource.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.http4.helper;
-
-import java.io.File;
-
-import javax.activation.FileDataSource;
-import javax.activation.FileTypeMap;
-
-public class CamelFileDataSource extends FileDataSource {
-    private final String fileName;
-    private FileTypeMap typeMap;
-
-    public CamelFileDataSource(File file, String fileName) {
-        super(file);
-        this.fileName = fileName;
-    }
-    
-    public String getContentType() {
-        if (typeMap == null) {
-            return 
FileTypeMap.getDefaultFileTypeMap().getContentType(fileName);
-        } else {
-            return typeMap.getContentType(fileName);
-        }
-    }
-    
-    public void setFileTypeMap(FileTypeMap map) {
-        typeMap = map;
-    }
-    
-    public String getName() {
-        if (fileName != null) {
-            return fileName;
-        } else {
-            return super.getName();
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpHelper.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpHelper.java
 
b/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpHelper.java
deleted file mode 100644
index d1996bc..0000000
--- 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpHelper.java
+++ /dev/null
@@ -1,498 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.http4.helper;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Exchange;
-import org.apache.camel.Producer;
-import org.apache.camel.RuntimeExchangeException;
-import org.apache.camel.component.http4.HttpConstants;
-import org.apache.camel.component.http4.HttpConverter;
-import org.apache.camel.component.http4.HttpEndpoint;
-import org.apache.camel.component.http4.HttpMessage;
-import org.apache.camel.component.http4.HttpMethods;
-import org.apache.camel.component.http4.HttpServletUrlRewrite;
-import org.apache.camel.converter.stream.CachedOutputStream;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.util.CamelObjectInputStream;
-import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.URISupport;
-import org.apache.camel.util.UnsafeUriCharactersEncoder;
-import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class HttpHelper {
-
-    private static final Logger LOG = 
LoggerFactory.getLogger(HttpHelper.class);
-
-    private HttpHelper() {
-        // Helper class
-    }
-
-    public static void setCharsetFromContentType(String contentType, Exchange 
exchange) {
-        if (contentType != null) {
-            // find the charset and set it to the Exchange
-            int index = contentType.indexOf("charset=");
-            if (index > 0) {
-                String charset = contentType.substring(index + 8);
-                exchange.setProperty(Exchange.CHARSET_NAME, 
IOHelper.normalizeCharset(charset));
-            }
-        }
-    }
-
-    /**
-     * Writes the given object as response body to the servlet response
-     * <p/>
-     * The content type will be set to {@link 
HttpConstants#CONTENT_TYPE_JAVA_SERIALIZED_OBJECT}
-     *
-     * @param response servlet response
-     * @param target   object to write
-     * @throws IOException is thrown if error writing
-     */
-    public static void writeObjectToServletResponse(ServletResponse response, 
Object target) throws IOException {
-        
response.setContentType(HttpConstants.CONTENT_TYPE_JAVA_SERIALIZED_OBJECT);
-        writeObjectToStream(response.getOutputStream(), target);
-    }
-
-    /**
-     * Writes the given object as response body to the output stream
-     *
-     * @param stream output stream
-     * @param target object to write
-     * @throws IOException is thrown if error writing
-     */
-    public static void writeObjectToStream(OutputStream stream, Object target) 
throws IOException {
-        ObjectOutputStream oos = new ObjectOutputStream(stream);
-        oos.writeObject(target);
-        oos.flush();
-        IOHelper.close(oos);
-    }
-
-    /**
-     * Deserializes the input stream to a Java object
-     *
-     * @param is input stream for the Java object
-     * @return the java object, or <tt>null</tt> if input stream was 
<tt>null</tt>
-     * @throws ClassNotFoundException is thrown if class not found
-     * @throws IOException can be thrown
-     * @deprecated Camel 3.0 
-     * Please use the one which has the parameter of camel context
-     */
-    @Deprecated
-    public static Object deserializeJavaObjectFromStream(InputStream is) 
throws ClassNotFoundException, IOException {
-        return deserializeJavaObjectFromStream(is, null);
-    }
-    
-    /**
-     * Deserializes the input stream to a Java object
-     *
-     * @param is input stream for the Java object
-     * @param context the camel context which could help us to apply the 
customer classloader
-     * @return the java object, or <tt>null</tt> if input stream was 
<tt>null</tt>
-     * @throws ClassNotFoundException is thrown if class not found
-     * @throws IOException can be thrown
-     */
-    public static Object deserializeJavaObjectFromStream(InputStream is, 
CamelContext context) throws ClassNotFoundException, IOException {
-        if (is == null) {
-            return null;
-        }
-
-        Object answer = null;
-        ObjectInputStream ois = new CamelObjectInputStream(is, context);
-        try {
-            answer = ois.readObject();
-        } finally {
-            IOHelper.close(ois);
-        }
-
-        return answer;
-    }
-
-    /**
-     * Reads the request body from the given http servlet request.
-     *
-     * @param request  http servlet request
-     * @param exchange the exchange
-     * @return the request body, can be <tt>null</tt> if no body
-     * @throws IOException is thrown if error reading request body
-     */
-    public static Object readRequestBodyFromServletRequest(HttpServletRequest 
request, Exchange exchange) throws IOException {
-        InputStream is = HttpConverter.toInputStream(request, exchange);
-        return readRequestBodyFromInputStream(is, exchange);
-    }
-    
-    /**
-     * Reads the request body from the given input stream.
-     *
-     * @param is       the input stream
-     * @param exchange the exchange
-     * @return the request body, can be <tt>null</tt> if no body
-     * @throws IOException is thrown if error reading request body
-     */
-    public static Object readRequestBodyFromInputStream(InputStream is, 
Exchange exchange) throws IOException {
-        if (is == null) {
-            return null;
-        }
-        
-        boolean disableStreamCaching = false;
-        // Just take the consideration of the setting of Camel Context 
StreamCaching
-        if (exchange.getContext() instanceof DefaultCamelContext) { 
-            DefaultCamelContext context = (DefaultCamelContext) 
exchange.getContext();
-            disableStreamCaching = !context.isStreamCaching();
-        }
-        if (disableStreamCaching) {
-            return is;
-        } else {
-            CachedOutputStream cos = new CachedOutputStream(exchange);
-            IOHelper.copyAndCloseInput(is, cos);
-            return cos.newStreamCache();
-        }
-    }
-
-    /**
-     * Reads the response body from the given input stream.
-     *
-     * @param is       the input stream
-     * @param exchange the exchange
-     * @return the response body, can be <tt>null</tt> if no body
-     * @throws IOException is thrown if error reading response body
-     */
-    public static Object readResponseBodyFromInputStream(InputStream is, 
Exchange exchange) throws IOException {
-        if (is == null) {
-            return null;
-        }
-        
-        // convert the input stream to StreamCache if the stream cache is not 
disabled
-        if (exchange.getProperty(Exchange.DISABLE_HTTP_STREAM_CACHE, 
Boolean.FALSE, Boolean.class)) {
-            return is;
-        } else {
-            CachedOutputStream cos = new CachedOutputStream(exchange);
-            IOHelper.copyAndCloseInput(is, cos);
-            return cos.newStreamCache();
-        }
-    }
-
-    /**
-     * Creates the URL to invoke.
-     *
-     * @param exchange the exchange
-     * @param endpoint the endpoint
-     * @return the URL to invoke
-     */
-    public static String createURL(Exchange exchange, HttpEndpoint endpoint) {
-        String uri = null;
-        if (!(endpoint.isBridgeEndpoint())) {
-            uri = exchange.getIn().getHeader(Exchange.HTTP_URI, String.class);
-        }
-        if (uri == null) {
-            uri = endpoint.getHttpUri().toASCIIString();
-        }
-
-        // resolve placeholders in uri
-        try {
-            uri = exchange.getContext().resolvePropertyPlaceholders(uri);
-        } catch (Exception e) {
-            throw new RuntimeExchangeException("Cannot resolve property 
placeholders with uri: " + uri, exchange, e);
-        }
-
-        // append HTTP_PATH to HTTP_URI if it is provided in the header
-        String path = exchange.getIn().getHeader(Exchange.HTTP_PATH, 
String.class);
-        // NOW the HTTP_PATH is just related path, we don't need to trim it
-        if (path != null) {
-            if (path.startsWith("/")) {
-                path = path.substring(1);
-            }
-            if (path.length() > 0) {
-                // make sure that there is exactly one "/" between HTTP_URI and
-                // HTTP_PATH
-                if (!uri.endsWith("/")) {
-                    uri = uri + "/";
-                }
-                uri = uri.concat(path);
-            }
-        }
-
-        // ensure uri is encoded to be valid
-        uri = UnsafeUriCharactersEncoder.encodeHttpURI(uri);
-
-        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, HttpEndpoint 
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.encodeHttpURI(queryString);
-            uri = URISupport.createURIWithQuery(uri, queryString);
-        }
-        return uri;
-    }
-
-    /**
-     * Creates the HttpMethod to use to call the remote server, often either 
its GET or POST.
-     *
-     * @param exchange the exchange
-     * @return the created method
-     * @throws URISyntaxException 
-     */
-    public static HttpMethods createMethod(Exchange exchange, HttpEndpoint 
endpoint, boolean hasPayload) throws URISyntaxException {
-        // 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);
-        // We need also check the HTTP_URI header query part
-        String uriString = exchange.getIn().getHeader(Exchange.HTTP_URI, 
String.class);
-        // resolve placeholders in uriString
-        try {
-            uriString = 
exchange.getContext().resolvePropertyPlaceholders(uriString);
-        } catch (Exception e) {
-            throw new RuntimeExchangeException("Cannot resolve property 
placeholders with uri: " + uriString, exchange, e);
-        }
-        if (uriString != null) {
-            URI uri = new URI(uriString);
-            queryString = uri.getQuery();
-        }
-        if (queryString == null) {
-            queryString = endpoint.getHttpUri().getRawQuery();
-        }
-
-        // compute what method to use either GET or POST
-        HttpMethods answer;
-        HttpMethods m = exchange.getIn().getHeader(Exchange.HTTP_METHOD, 
HttpMethods.class);
-        if (m != null) {
-            // always use what end-user provides in a header
-            answer = m;
-        } else if (queryString != null) {
-            // if a query string is provided then use GET
-            answer = HttpMethods.GET;
-        } else {
-            // fallback to POST if we have payload, otherwise GET
-            answer = hasPayload ? HttpMethods.POST : HttpMethods.GET;
-        }
-
-        return answer;
-    }
-
-    public static HttpVersion parserHttpVersion(String s) throws 
ProtocolException {
-        int major;
-        int minor;
-        if (s == null) {
-            throw new IllegalArgumentException("String may not be null");
-        }
-        if (!s.startsWith("HTTP/")) {
-            throw new ProtocolException("Invalid HTTP version string: " + s);
-        }
-        int i1 = "HTTP/".length();
-        int i2 = s.indexOf(".", i1);
-        if (i2 == -1) {
-            throw new ProtocolException("Invalid HTTP version number: " + s);
-        }
-        try {
-            major = Integer.parseInt(s.substring(i1, i2));
-        } catch (NumberFormatException e) {
-            throw new ProtocolException("Invalid HTTP major version number: " 
+ s);
-        }
-        i1 = i2 + 1;
-        i2 = s.length();
-        try {
-            minor = Integer.parseInt(s.substring(i1, i2));
-        } catch (NumberFormatException e) {
-            throw new ProtocolException("Invalid HTTP minor version number: " 
+ s);
-        }
-        return new HttpVersion(major, minor);
-    }
-
-    public static boolean isSecureConnection(String uri) {
-        return uri.startsWith("https");
-    }
-
-    /**
-     * Appends the key/value to the headers.
-     * <p/>
-     * This implementation supports keys with multiple values. In such 
situations the value
-     * will be a {@link java.util.List} that contains the multiple values.
-     *
-     * @param headers  headers
-     * @param key      the key
-     * @param value    the value
-     */
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    public static void appendHeader(Map<String, Object> headers, String key, 
Object value) {
-        if (headers.containsKey(key)) {
-            Object existing = headers.get(key);
-            List<Object> list;
-            if (existing instanceof List) {
-                list = (List) existing;
-            } else {
-                list = new ArrayList<Object>();
-                list.add(existing);
-            }
-            list.add(value);
-            value = list;
-        }
-
-        headers.put(key, value);
-    }
-
-    /**
-     * Extracts the parameter value.
-     * <p/>
-     * This implementation supports HTTP multi value parameters which
-     * is based on the syntax of <tt>[value1, value2, value3]</tt> by returning
-     * a {@link List} containing the values.
-     * <p/>
-     * If the value is not a HTTP mulit value the value is returned as is.
-     *
-     * @param value the parameter value
-     * @return the extracted parameter value, see more details in javadoc.
-     */
-    public static Object extractHttpParameterValue(String value) {
-        if (value == null || ObjectHelper.isEmpty(value)) {
-            return value;
-        }
-
-        // trim value before checking for multiple parameters
-        String trimmed = value.trim();
-
-        if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
-            // remove the [ ] markers
-            trimmed = trimmed.substring(1, trimmed.length() - 1);
-            List<String> list = new ArrayList<String>();
-            String[] values = trimmed.split(",");
-            for (String s : values) {
-                list.add(s.trim());
-            }
-            return list;
-        }
-
-        return value;
-    }
-
-    /**
-     * Processes any custom {@link 
org.apache.camel.component.http4.UrlRewrite}.
-     *
-     * @param exchange    the exchange
-     * @param url         the url
-     * @param endpoint    the http endpoint
-     * @param producer    the producer
-     * @return            the rewritten url, or <tt>null</tt> to use original 
url
-     * @throws Exception is thrown if any error during rewriting url
-     */
-    public static String urlRewrite(Exchange exchange, String url, 
HttpEndpoint endpoint, Producer producer) throws Exception {
-        String answer = null;
-
-        String relativeUrl;
-        if (endpoint.getUrlRewrite() != null) {
-            // we should use the relative path if possible
-            String baseUrl;
-            relativeUrl = endpoint.getHttpUri().toASCIIString();
-            if (url.startsWith(relativeUrl)) {
-                baseUrl = url.substring(0, relativeUrl.length());
-                relativeUrl = url.substring(relativeUrl.length());
-            } else {
-                baseUrl = null;
-                relativeUrl = url;
-            }
-            // mark it as null if its empty
-            if (ObjectHelper.isEmpty(relativeUrl)) {
-                relativeUrl = null;
-            }
-
-            String newUrl;
-            if (endpoint.getUrlRewrite() instanceof HttpServletUrlRewrite) {
-                // its servlet based, so we need the servlet request
-                HttpServletRequest request = 
exchange.getIn().getBody(HttpServletRequest.class);
-                if (request == null) {
-                    HttpMessage msg = exchange.getIn(HttpMessage.class);
-                    if (msg != null) {
-                        request = msg.getRequest();
-                    }
-                }
-                if (request == null) {
-                    throw new IllegalArgumentException("UrlRewrite " + 
endpoint.getUrlRewrite() + " requires the message body to be a"
-                            + "HttpServletRequest instance, but was: " + 
ObjectHelper.className(exchange.getIn().getBody()));
-                }
-                // we need to adapt the context-path to be the path from the 
endpoint, if it came from a http based endpoint
-                // as eg camel-jetty have hardcoded context-path as / for all 
its servlets/endpoints
-                // we have the actual context-path stored as a header with the 
key CamelServletContextPath
-                String contextPath = 
exchange.getIn().getHeader("CamelServletContextPath", String.class);
-                request = new UrlRewriteHttpServletRequestAdapter(request, 
contextPath);
-                newUrl = ((HttpServletUrlRewrite) 
endpoint.getUrlRewrite()).rewrite(url, relativeUrl, producer, request);
-            } else {
-                newUrl = endpoint.getUrlRewrite().rewrite(url, relativeUrl, 
producer);
-            }
-
-            if (ObjectHelper.isNotEmpty(newUrl) && !newUrl.equals(url)) {
-                // we got a new url back, that can either be a new absolute url
-                // or a new relative url
-                if (newUrl.startsWith("http:") || newUrl.startsWith("https:")) 
{
-                    answer = newUrl;
-                } else if (baseUrl != null) {
-                    // avoid double // when adding the urls
-                    if (baseUrl.endsWith("/") && newUrl.startsWith("/")) {
-                        answer = baseUrl + newUrl.substring(1);
-                    } else {
-                        answer = baseUrl + newUrl;
-                    }
-                } else {
-                    // use the new url as is
-                    answer = newUrl;
-                }
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Using url rewrite to rewrite from url {} to {} 
-> {}",
-                            new Object[]{relativeUrl != null ? relativeUrl : 
url, newUrl, answer});
-                }
-            }
-        }
-
-        return answer;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpMethodHelper.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpMethodHelper.java
 
b/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpMethodHelper.java
new file mode 100644
index 0000000..ac37192
--- /dev/null
+++ 
b/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpMethodHelper.java
@@ -0,0 +1,82 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.http4.helper;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.RuntimeExchangeException;
+import org.apache.camel.component.http4.HttpEndpoint;
+import org.apache.camel.component.http4.HttpMethods;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public final class HttpMethodHelper {
+
+    private static final Logger LOG = 
LoggerFactory.getLogger(HttpMethodHelper.class);
+
+    private HttpMethodHelper() {
+        // Helper class
+    }
+
+    /**
+     * Creates the HttpMethod to use to call the remote server, often either 
its GET or POST.
+     *
+     * @param exchange the exchange
+     * @return the created method
+     * @throws URISyntaxException 
+     */
+    @Deprecated
+    public static HttpMethods createMethod(Exchange exchange, HttpEndpoint 
endpoint, boolean hasPayload) throws URISyntaxException {
+        // 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);
+        // We need also check the HTTP_URI header query part
+        String uriString = exchange.getIn().getHeader(Exchange.HTTP_URI, 
String.class);
+        // resolve placeholders in uriString
+        try {
+            uriString = 
exchange.getContext().resolvePropertyPlaceholders(uriString);
+        } catch (Exception e) {
+            throw new RuntimeExchangeException("Cannot resolve property 
placeholders with uri: " + uriString, exchange, e);
+        }
+        if (uriString != null) {
+            URI uri = new URI(uriString);
+            queryString = uri.getQuery();
+        }
+        if (queryString == null) {
+            queryString = endpoint.getHttpUri().getRawQuery();
+        }
+
+        // compute what method to use either GET or POST
+        HttpMethods answer;
+        HttpMethods m = exchange.getIn().getHeader(Exchange.HTTP_METHOD, 
HttpMethods.class);
+        if (m != null) {
+            // always use what end-user provides in a header
+            answer = m;
+        } else if (queryString != null) {
+            // if a query string is provided then use GET
+            answer = HttpMethods.GET;
+        } else {
+            // fallback to POST if we have payload, otherwise GET
+            answer = hasPayload ? HttpMethods.POST : HttpMethods.GET;
+        }
+
+        return answer;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/UrlRewriteHttpServletRequestAdapter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/UrlRewriteHttpServletRequestAdapter.java
 
b/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/UrlRewriteHttpServletRequestAdapter.java
deleted file mode 100644
index e4c5765..0000000
--- 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/UrlRewriteHttpServletRequestAdapter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.http4.helper;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-
-/**
- * Special adapter when {@link 
org.apache.camel.component.http4.HttpServletUrlRewrite} is in use,
- * and the route started from came-jetty/camel-serlvet.
- * <p/>
- * This adapter ensures that we can control the context-path returned from the
- * {@link javax.servlet.http.HttpServletRequest#getContextPath()} method.
- * This allows us to ensure the context-path is based on the endpoint path, as 
the
- * camel-jetty/camel-servlet server implementation uses the root ("/") 
context-path
- * for all the servlets/endpoints.
- */
-public final class UrlRewriteHttpServletRequestAdapter extends 
HttpServletRequestWrapper {
-
-    private final String contextPath;
-
-    /**
-     * Creates this adapter
-     * @param delegate    the real http servlet request to delegate.
-     * @param contextPath use to override and return this context-path
-     */
-    public UrlRewriteHttpServletRequestAdapter(HttpServletRequest delegate, 
String contextPath) {
-        super(delegate);
-        this.contextPath = contextPath;
-    }
-
-    public String getContextPath() {
-        return contextPath != null ? contextPath : super.getContextPath();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
 
b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
index de0d742..bbb63c3 100644
--- 
a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
+++ 
b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
@@ -15,5 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.camel.component.http4.HttpConverter
 org.apache.camel.component.http4.HttpEntityConverter

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java
 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java
index ef5e3a8..6d52b54 100644
--- 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java
+++ 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.http4;
 
 import org.apache.camel.Producer;
+import org.apache.camel.http.common.UrlRewrite;
 
 // START SNIPPET: e1
 /**

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java
 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java
index 7ddf4b1..3af54f7 100644
--- 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java
+++ 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java
@@ -17,6 +17,8 @@
 package org.apache.camel.component.http4;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.http.common.DefaultHttpBinding;
+import org.apache.camel.http.common.HttpHeaderFilterStrategy;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
@@ -57,15 +59,15 @@ public class HttpEndpointOptionsNotChangeComponentTest 
extends CamelTestSupport
     public void testDoNotMessWithComponent() throws Exception {
         // get default
         HttpEndpoint end = context.getEndpoint("http4://www.google.com", 
HttpEndpoint.class);
-        assertIsInstanceOf(MyBinding.class, end.getHttpBinding());
+        assertIsInstanceOf(MyBinding.class, end.getBinding());
 
         // use a endpoint specific binding
         HttpEndpoint end2 = 
context.getEndpoint("http4://www.google.com?httpBinding=#other", 
HttpEndpoint.class);
-        assertIsInstanceOf(MyOtherBinding.class, end2.getHttpBinding());
+        assertIsInstanceOf(MyOtherBinding.class, end2.getBinding());
 
         // and the default option has not been messed with
         HttpEndpoint end3 = context.getEndpoint("http4://www.google.com", 
HttpEndpoint.class);
-        assertIsInstanceOf(MyBinding.class, end3.getHttpBinding());
+        assertIsInstanceOf(MyBinding.class, end3.getBinding());
         
         // test the headerFilterStrategy
         HttpEndpoint end4 = 
context.getEndpoint("http4://www.google.com?headerFilterStrategy=#myStrategy", 
HttpEndpoint.class);

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpHeaderFilterStrategyTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpHeaderFilterStrategyTest.java
 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpHeaderFilterStrategyTest.java
index 0c69b2a..05ca837 100644
--- 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpHeaderFilterStrategyTest.java
+++ 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpHeaderFilterStrategyTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.http4;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.http.common.HttpHeaderFilterStrategy;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.test.junit4.CamelTestSupport;

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
index ffb8f84..6a40340 100644
--- 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
+++ 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
@@ -21,6 +21,7 @@ import java.io.IOException;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.component.http4.handler.BasicValidationHandler;
+import org.apache.camel.http.common.HttpOperationFailedException;
 import org.apache.http.HttpException;
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
index 8b323b9..c750a4d 100644
--- 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
+++ 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.http4;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.http.common.DefaultHttpBinding;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.apache.http.impl.client.HttpClientBuilder;
@@ -53,8 +54,8 @@ public class HttpReferenceParameterTest extends 
CamelTestSupport {
 
     @Test
     public void testHttpBindingRef() {
-        assertSame(testBinding, endpoint1.getHttpBinding());
-        assertSame(testBinding, endpoint2.getHttpBinding());
+        assertSame(testBinding, endpoint1.getBinding());
+        assertSame(testBinding, endpoint2.getBinding());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java
 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java
index 1ec73f5..00d9530 100644
--- 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java
+++ 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.component.http4.handler.BasicValidationHandler;
+import org.apache.camel.http.common.HttpOperationFailedException;
 import org.apache.http.HttpStatus;
 import org.apache.http.impl.bootstrap.HttpServer;
 import org.apache.http.impl.bootstrap.ServerBootstrap;

http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java
 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java
index 08d97f4..be9168a 100644
--- 
a/components/camel-http4/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java
+++ 
b/components/camel-http4/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java
@@ -27,6 +27,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.component.http4.HttpEndpoint;
 import org.apache.camel.component.http4.HttpMethods;
+import org.apache.camel.http.common.HttpHelper;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.junit.Test;
@@ -113,7 +114,7 @@ public class HttpHelperTest {
 
     @Test
     public void createMethodAlwaysUseUserChoosenMethod() throws 
URISyntaxException {
-        HttpMethods method = HttpHelper.createMethod(
+        HttpMethods method = HttpMethodHelper.createMethod(
                 
createExchangeWithOptionalHttpQueryAndHttpMethodHeader("q=camel", 
HttpMethods.POST),
                 createHttpEndpoint(true, "http://www.google.com/search";),
                 false);
@@ -123,7 +124,7 @@ public class HttpHelperTest {
 
     @Test
     public void createMethodUseGETIfQueryIsProvidedInHeader() throws 
URISyntaxException {
-        HttpMethods method = HttpHelper.createMethod(
+        HttpMethods method = HttpMethodHelper.createMethod(
                 
createExchangeWithOptionalHttpQueryAndHttpMethodHeader("q=camel", null),
                 createHttpEndpoint(true, "http://www.google.com/search";),
                 false);
@@ -133,7 +134,7 @@ public class HttpHelperTest {
 
     @Test
     public void createMethodUseGETIfQueryIsProvidedInEndpointURI() throws 
URISyntaxException {
-        HttpMethods method = HttpHelper.createMethod(
+        HttpMethods method = HttpMethodHelper.createMethod(
                 createExchangeWithOptionalHttpQueryAndHttpMethodHeader(null, 
null),
                 createHttpEndpoint(true, 
"http://www.google.com/search?q=test";),
                 false);
@@ -143,7 +144,7 @@ public class HttpHelperTest {
 
     @Test
     public void createMethodUseGETIfNoneQueryOrPayloadIsProvided() throws 
URISyntaxException {
-        HttpMethods method = HttpHelper.createMethod(
+        HttpMethods method = HttpMethodHelper.createMethod(
                 createExchangeWithOptionalHttpQueryAndHttpMethodHeader(null, 
null),
                 createHttpEndpoint(true, "http://www.google.com/search";),
                 false);
@@ -153,7 +154,7 @@ public class HttpHelperTest {
 
     @Test
     public void createMethodUsePOSTIfNoneQueryButPayloadIsProvided() throws 
URISyntaxException {
-        HttpMethods method = HttpHelper.createMethod(
+        HttpMethods method = HttpMethodHelper.createMethod(
                 createExchangeWithOptionalHttpQueryAndHttpMethodHeader(null, 
null),
                 createHttpEndpoint(true, "http://www.google.com/search";),
                 true);

Reply via email to