camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From davscl...@apache.org
Subject camel git commit: CAMEL-10906 and CAMEL-10907: http components should expose all their options and have a common way to configure auth, proxy and authProxy.
Date Wed, 01 Mar 2017 16:52:42 GMT
Repository: camel
Updated Branches:
  refs/heads/master 04cdbfd78 -> 280b1ee8a


CAMEL-10906 and CAMEL-10907: http components should expose all their options and have a common way to configure auth, proxy and authProxy.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/280b1ee8
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/280b1ee8
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/280b1ee8

Branch: refs/heads/master
Commit: 280b1ee8a8565ef5e15941e2832f30a1ad622153
Parents: 04cdbfd
Author: Claus Ibsen <davsclaus@apache.org>
Authored: Wed Mar 1 15:22:39 2017 +0100
Committer: Claus Ibsen <davsclaus@apache.org>
Committed: Wed Mar 1 17:52:30 2017 +0100

----------------------------------------------------------------------
 .../docs/atmosphere-websocket-component.adoc    |  20 +-
 .../camel/http/common/HttpCommonComponent.java  |  36 +++
 .../camel/http/common/HttpCommonEndpoint.java   | 235 ++++++++++++++++---
 .../camel/http/common/HttpConfiguration.java    | 128 ++++++++--
 .../src/main/docs/http-component.adoc           |  20 +-
 .../camel/component/http/HttpComponent.java     |  51 ++--
 .../src/main/docs/http4-component.adoc          |  25 +-
 .../component/http4/HttpClientConfigurer.java   |   2 +-
 .../camel/component/http4/HttpComponent.java    |  36 ++-
 .../camel/component/http4/HttpEndpoint.java     |  46 +++-
 .../component/http4/HttpEndpointURLTest.java    |   2 -
 .../src/main/docs/jetty-component.adoc          |   9 +-
 .../component/jetty9/JettyHttpEndpoint9.java    |   5 +-
 .../springboot/HttpComponentConfiguration.java  |   4 +-
 14 files changed, 486 insertions(+), 133 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-atmosphere-websocket/src/main/docs/atmosphere-websocket-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-atmosphere-websocket/src/main/docs/atmosphere-websocket-component.adoc b/components/camel-atmosphere-websocket/src/main/docs/atmosphere-websocket-component.adoc
index 88752c4..24512fb 100644
--- a/components/camel-atmosphere-websocket/src/main/docs/atmosphere-websocket-component.adoc
+++ b/components/camel-atmosphere-websocket/src/main/docs/atmosphere-websocket-component.adoc
@@ -57,7 +57,7 @@ The Atmosphere Websocket component supports 7 options which are listed below.
 
 
 // endpoint options: START
-The Atmosphere Websocket component supports 37 endpoint options which are listed below:
+The Atmosphere Websocket component supports 49 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
@@ -89,8 +89,6 @@ The Atmosphere Websocket component supports 37 endpoint options which are listed
 | httpMethod | producer |  | HttpMethods | Configure the HTTP method to use. The HttpMethod header cannot override this option if set.
 | ignoreResponseBody | producer | false | boolean | If this option is true The http producer won't read response body and cache the input stream
 | preserveHostHeader | producer | false | boolean | If the option is true HttpProducer will set the Host header to the value contained in the current exchange Host header useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client this allows applications which use the Host header to generate accurate URL's for a proxied service
-| proxyHost | producer |  | String | The proxy host name
-| proxyPort | producer |  | int | The proxy port number
 | throwExceptionOnFailure | producer | true | boolean | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code.
 | cookieHandler | producer (advanced) |  | CookieHandler | Configure a cookie handler to maintain a HTTP session
 | okStatusCodeRange | producer (advanced) | 200-299 | String | The status codes which is considered a success response. The values are inclusive. The range must be defined as from-to with the dash included.
@@ -99,7 +97,21 @@ The Atmosphere Websocket component supports 37 endpoint options which are listed
 | mapHttpMessageFormUrlEncodedBody | advanced | true | boolean | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping.
 | mapHttpMessageHeaders | advanced | true | boolean | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping.
 | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
-| authMethodPriority | security |  | String | Authentication method for proxy either as Basic Digest or NTLM.
+| proxyAuthDomain | proxy |  | String | Proxy authentication domain to use with NTML
+| proxyAuthHost | proxy |  | String | Proxy authentication host
+| proxyAuthMethod | proxy |  | String | Proxy authentication method to use
+| proxyAuthPassword | proxy |  | String | Proxy authentication password
+| proxyAuthPort | proxy |  | int | Proxy authentication port
+| proxyAuthScheme | proxy |  | String | Proxy authentication scheme to use
+| proxyAuthUsername | proxy |  | String | Proxy authentication username
+| proxyHost | proxy |  | String | Proxy hostname to use
+| proxyPort | proxy |  | int | Proxy port to use
+| authDomain | security |  | String | Authentication domain to use with NTML
+| authHost | security |  | String | Authentication host to use with NTML
+| authMethod | security |  | String | Authentication methods allowed to use as a comma separated list of values Basic Digest or NTLM.
+| authMethodPriority | security |  | String | Which authentication method to prioritize to use either as Basic Digest or NTLM.
+| authPassword | security |  | String | Authentication password
+| authUsername | security |  | String | Authentication username
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonComponent.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonComponent.java
index 0b25b24..20191d1 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonComponent.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonComponent.java
@@ -16,8 +16,11 @@
  */
 package org.apache.camel.http.common;
 
+import java.util.Map;
+
 import org.apache.camel.impl.HeaderFilterStrategyComponent;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.util.CamelContextHelper;
 
 public abstract class HttpCommonComponent extends HeaderFilterStrategyComponent {
 
@@ -33,6 +36,39 @@ public abstract class HttpCommonComponent extends HeaderFilterStrategyComponent
     }
 
     /**
+     * Gets the parameter. This method doesn't resolve reference parameters in the registry.
+     *
+     * @param parameters    the parameters
+     * @param key           the key
+     * @param type          the requested type to convert the value from the parameter
+     * @return  the converted value parameter
+     */
+    public <T> T getParameter(Map<String, Object> parameters, String key, Class<T> type) {
+        return getParameter(parameters, key, type, null);
+    }
+
+    /**
+     * Gets the parameter. This method doesn't resolve reference parameters in the registry.
+     *
+     * @param parameters    the parameters
+     * @param key           the key
+     * @param type          the requested type to convert the value from the parameter
+     * @param defaultValue  use this default value if the parameter does not contain the key
+     * @return  the converted value parameter
+     */
+    public <T> T getParameter(Map<String, Object> parameters, String key, Class<T> type, T defaultValue) {
+        Object value = parameters.get(key);
+        if (value == null) {
+            value = defaultValue;
+        }
+        if (value == null) {
+            return null;
+        }
+
+        return CamelContextHelper.convertTo(getCamelContext(), type, value);
+    }
+
+    /**
      * Connects the URL specified on the endpoint to the specified processor.
      *
      * @param consumer the consumer

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonEndpoint.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonEndpoint.java
index d7094c7..23c51c2 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonEndpoint.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonEndpoint.java
@@ -70,12 +70,6 @@ public abstract class HttpCommonEndpoint extends DefaultEndpoint implements Head
                     + " The http/http4 producer will by default cache the response body stream. If setting this option to true,"
                     + " then the producers will not cache the response body stream but use the response stream as-is as the message body.")
     boolean disableStreamCache;
-    @UriParam(label = "producer", description = "The proxy host name")
-    String proxyHost;
-    @UriParam(label = "producer", description = "The proxy port number")
-    int proxyPort;
-    @UriParam(label = "producer,security", enums = "Basic,Digest,NTLM", description = "Authentication method for proxy, either as Basic, Digest or NTLM.")
-    String authMethodPriority;
     @UriParam(description = "If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized"
             + " in the response as a application/x-java-serialized-object content type."
             + " On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException."
@@ -136,6 +130,37 @@ public abstract class HttpCommonEndpoint extends DefaultEndpoint implements Head
     @UriParam(label = "producer", description = "Configure the HTTP method to use. The HttpMethod header cannot override this option if set.")
     private HttpMethods httpMethod;
 
+    @UriParam(label = "producer,security", description = "Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM.")
+    private String authMethod;
+    @UriParam(label = "producer,security", enums = "Basic,Digest,NTLM", description = "Which authentication method to prioritize to use, either as Basic, Digest or NTLM.")
+    private String authMethodPriority;
+    @UriParam(label = "producer,security", secret = true, description = "Authentication username")
+    private String authUsername;
+    @UriParam(label = "producer,security", secret = true, description = "Authentication password")
+    private String authPassword;
+    @UriParam(label = "producer,security", description = "Authentication domain to use with NTML")
+    private String authDomain;
+    @UriParam(label = "producer,security", description = "Authentication host to use with NTML")
+    private String authHost;
+    @UriParam(label = "producer,proxy", description = "Proxy hostname to use")
+    private String proxyHost;
+    @UriParam(label = "producer,proxy", description = "Proxy port to use")
+    private int proxyPort;
+    @UriParam(label = "producer,proxy", enums = "http,https", description = "Proxy authentication scheme to use")
+    private String proxyAuthScheme;
+    @UriParam(label = "producer,proxy", enums = "Basic,Digest,NTLM", description = "Proxy authentication method to use")
+    private String proxyAuthMethod;
+    @UriParam(label = "producer,proxy", secret = true, description = "Proxy authentication username")
+    private String proxyAuthUsername;
+    @UriParam(label = "producer,proxy", secret = true, description = "Proxy authentication password")
+    private String proxyAuthPassword;
+    @UriParam(label = "producer,proxy", description = "Proxy authentication host")
+    private String proxyAuthHost;
+    @UriParam(label = "producer,proxy", description = "Proxy authentication port")
+    private int proxyAuthPort;
+    @UriParam(label = "producer,proxy", description = "Proxy authentication domain to use with NTML")
+    private String proxyAuthDomain;
+
     public HttpCommonEndpoint() {
     }
 
@@ -335,39 +360,6 @@ public abstract class HttpCommonEndpoint extends DefaultEndpoint implements Head
         this.chunked = chunked;
     }
 
-    public String getProxyHost() {
-        return proxyHost;
-    }
-
-    /**
-     * The proxy host name
-     */
-    public void setProxyHost(String proxyHost) {
-        this.proxyHost = proxyHost;
-    }
-
-    public int getProxyPort() {
-        return proxyPort;
-    }
-
-    /**
-     * The proxy port number
-     */
-    public void setProxyPort(int proxyPort) {
-        this.proxyPort = proxyPort;
-    }
-
-    public String getAuthMethodPriority() {
-        return authMethodPriority;
-    }
-
-    /**
-     * Authentication method for proxy, either as Basic, Digest or NTLM.
-     */
-    public void setAuthMethodPriority(String authMethodPriority) {
-        this.authMethodPriority = authMethodPriority;
-    }
-
     public boolean isTransferException() {
         return transferException;
     }
@@ -568,4 +560,169 @@ public abstract class HttpCommonEndpoint extends DefaultEndpoint implements Head
     public void setHttpMethod(HttpMethods httpMethod) {
         this.httpMethod = httpMethod;
     }
+
+    public String getAuthMethod() {
+        return authMethod;
+    }
+
+    /**
+     * Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM.
+     */
+    public void setAuthMethod(String authMethod) {
+        this.authMethod = authMethod;
+    }
+
+    public String getAuthMethodPriority() {
+        return authMethodPriority;
+    }
+
+    /**
+     * Which authentication method to prioritize to use, either as Basic, Digest or NTLM.
+     */
+    public void setAuthMethodPriority(String authMethodPriority) {
+        this.authMethodPriority = authMethodPriority;
+    }
+
+    public String getAuthUsername() {
+        return authUsername;
+    }
+
+    /**
+     * Authentication username
+     */
+    public void setAuthUsername(String authUsername) {
+        this.authUsername = authUsername;
+    }
+
+    public String getAuthPassword() {
+        return authPassword;
+    }
+
+    /**
+     * Authentication password
+     */
+    public void setAuthPassword(String authPassword) {
+        this.authPassword = authPassword;
+    }
+
+    public String getAuthDomain() {
+        return authDomain;
+    }
+
+    /**
+     * Authentication domain to use with NTML
+     */
+    public void setAuthDomain(String authDomain) {
+        this.authDomain = authDomain;
+    }
+
+    public String getAuthHost() {
+        return authHost;
+    }
+
+    /**
+     * Authentication host to use with NTML
+     */
+    public void setAuthHost(String authHost) {
+        this.authHost = authHost;
+    }
+
+    public String getProxyAuthScheme() {
+        return proxyAuthScheme;
+    }
+
+    /**
+     * Proxy authentication scheme to use
+     */
+    public void setProxyAuthScheme(String proxyAuthScheme) {
+        this.proxyAuthScheme = proxyAuthScheme;
+    }
+
+    public String getProxyAuthMethod() {
+        return proxyAuthMethod;
+    }
+
+    /**
+     * Proxy authentication method to use
+     */
+    public void setProxyAuthMethod(String proxyAuthMethod) {
+        this.proxyAuthMethod = proxyAuthMethod;
+    }
+
+    public String getProxyAuthUsername() {
+        return proxyAuthUsername;
+    }
+
+    /**
+     * Proxy authentication username
+     */
+    public void setProxyAuthUsername(String proxyAuthUsername) {
+        this.proxyAuthUsername = proxyAuthUsername;
+    }
+
+    public String getProxyAuthPassword() {
+        return proxyAuthPassword;
+    }
+
+    /**
+     * Proxy authentication password
+     */
+    public void setProxyAuthPassword(String proxyAuthPassword) {
+        this.proxyAuthPassword = proxyAuthPassword;
+    }
+
+    public String getProxyAuthDomain() {
+        return proxyAuthDomain;
+    }
+
+    /**
+     * Proxy authentication domain to use with NTML
+     */
+    public void setProxyAuthDomain(String proxyAuthDomain) {
+        this.proxyAuthDomain = proxyAuthDomain;
+    }
+
+    public String getProxyAuthHost() {
+        return proxyAuthHost;
+    }
+
+    /**
+     * Proxy authentication host to use with NTML
+     */
+    public void setProxyAuthHost(String proxyAuthHost) {
+        this.proxyAuthHost = proxyAuthHost;
+    }
+
+    public int getProxyAuthPort() {
+        return proxyAuthPort;
+    }
+
+    /**
+     * Proxy authentication port
+     */
+    public void setProxyAuthPort(int proxyAuthPort) {
+        this.proxyAuthPort = proxyAuthPort;
+    }
+
+    public String getProxyHost() {
+        return proxyHost;
+    }
+
+    /**
+     * Proxy hostname to use
+     */
+    public void setProxyHost(String proxyHost) {
+        this.proxyHost = proxyHost;
+    }
+
+    public int getProxyPort() {
+        return proxyPort;
+    }
+
+    /**
+     * Proxy port to use
+     */
+    public void setProxyPort(int proxyPort) {
+        this.proxyPort = proxyPort;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConfiguration.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConfiguration.java
index 6a3e646..89d1cf4 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConfiguration.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConfiguration.java
@@ -18,29 +18,71 @@ package org.apache.camel.http.common;
 
 import java.io.Serializable;
 
+import org.apache.camel.spi.Metadata;
+
 public class HttpConfiguration implements Serializable {
     private static final long serialVersionUID = 1L;
 
+    @Metadata(label = "producer,security", description = "Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM.")
     private String authMethod;
+    @Metadata(label = "producer,security", enums = "Basic,Digest,NTLM", description = "Which authentication method to prioritize to use, either as Basic, Digest or NTLM.")
+    private String authMethodPriority;
+    @Metadata(label = "producer,security", secret = true, description = "Authentication username")
     private String authUsername;
+    @Metadata(label = "producer,security", secret = true, description = "Authentication password")
     private String authPassword;
+    @Metadata(label = "producer,security", description = "Authentication domain to use with NTML")
     private String authDomain;
+    @Metadata(label = "producer,security", description = "Authentication host to use with NTML")
     private String authHost;
-
+    @Metadata(label = "producer,proxy", description = "Proxy hostname to use")
+    private String proxyHost;
+    @Metadata(label = "producer,proxy", description = "Proxy port to use")
+    private int proxyPort;
+    @Metadata(label = "producer,proxy", enums = "http,https", description = "Authentication scheme to use")
+    private String proxyAuthScheme;
+    @Metadata(label = "producer,proxy", enums = "Basic,Digest,NTLM", description = "Proxy authentication method to use")
     private String proxyAuthMethod;
+    @Metadata(label = "producer,proxy", secret = true, description = "Proxy authentication username")
     private String proxyAuthUsername;
+    @Metadata(label = "producer,proxy", secret = true, description = "Proxy authentication password")
     private String proxyAuthPassword;
-    private String proxyAuthDomain;
+    @Metadata(label = "producer,proxy", description = "Proxy authentication host")
     private String proxyAuthHost;
+    @Metadata(label = "producer,proxy", description = "Proxy authentication port")
+    private int proxyAuthPort;
+    @Metadata(label = "producer,proxy", description = "Proxy authentication domain to use with NTML")
+    private String proxyAuthDomain;
 
-    private String proxyHost;
-    private int proxyPort;
-    private String authMethodPriority;
+    public String getAuthMethod() {
+        return authMethod;
+    }
+
+    /**
+     * Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM.
+     */
+    public void setAuthMethod(String authMethod) {
+        this.authMethod = authMethod;
+    }
+
+    public String getAuthMethodPriority() {
+        return authMethodPriority;
+    }
+
+    /**
+     * Which authentication method to prioritize to use, either as Basic, Digest or NTLM.
+     */
+    public void setAuthMethodPriority(String authMethodPriority) {
+        this.authMethodPriority = authMethodPriority;
+    }
 
     public String getAuthUsername() {
         return authUsername;
     }
 
+    /**
+     * Authentication username
+     */
     public void setAuthUsername(String authUsername) {
         this.authUsername = authUsername;
     }
@@ -49,6 +91,9 @@ public class HttpConfiguration implements Serializable {
         return authPassword;
     }
 
+    /**
+     * Authentication password
+     */
     public void setAuthPassword(String authPassword) {
         this.authPassword = authPassword;
     }
@@ -57,6 +102,9 @@ public class HttpConfiguration implements Serializable {
         return authDomain;
     }
 
+    /**
+     * Authentication domain to use with NTML
+     */
     public void setAuthDomain(String authDomain) {
         this.authDomain = authDomain;
     }
@@ -65,14 +113,42 @@ public class HttpConfiguration implements Serializable {
         return authHost;
     }
 
+    /**
+     * Authentication host to use with NTML
+     */
     public void setAuthHost(String authHost) {
         this.authHost = authHost;
     }
 
+    public String getProxyAuthScheme() {
+        return proxyAuthScheme;
+    }
+
+    /**
+     * Proxy authentication scheme to use
+     */
+    public void setProxyAuthScheme(String proxyAuthScheme) {
+        this.proxyAuthScheme = proxyAuthScheme;
+    }
+
+    public String getProxyAuthMethod() {
+        return proxyAuthMethod;
+    }
+
+    /**
+     * Proxy authentication method to use
+     */
+    public void setProxyAuthMethod(String proxyAuthMethod) {
+        this.proxyAuthMethod = proxyAuthMethod;
+    }
+
     public String getProxyAuthUsername() {
         return proxyAuthUsername;
     }
 
+    /**
+     * Proxy authentication username
+     */
     public void setProxyAuthUsername(String proxyAuthUsername) {
         this.proxyAuthUsername = proxyAuthUsername;
     }
@@ -81,6 +157,9 @@ public class HttpConfiguration implements Serializable {
         return proxyAuthPassword;
     }
 
+    /**
+     * Proxy authentication password
+     */
     public void setProxyAuthPassword(String proxyAuthPassword) {
         this.proxyAuthPassword = proxyAuthPassword;
     }
@@ -89,6 +168,9 @@ public class HttpConfiguration implements Serializable {
         return proxyAuthDomain;
     }
 
+    /**
+     * Proxy authentication domain to use with NTML
+     */
     public void setProxyAuthDomain(String proxyAuthDomain) {
         this.proxyAuthDomain = proxyAuthDomain;
     }
@@ -97,30 +179,31 @@ public class HttpConfiguration implements Serializable {
         return proxyAuthHost;
     }
 
+    /**
+     * Proxy authentication host
+     */
     public void setProxyAuthHost(String proxyAuthHost) {
         this.proxyAuthHost = proxyAuthHost;
     }
 
-    public String getAuthMethod() {
-        return authMethod;
-    }
-
-    public void setAuthMethod(String authMethod) {
-        this.authMethod = authMethod;
-    }
-
-    public String getProxyAuthMethod() {
-        return proxyAuthMethod;
+    public int getProxyAuthPort() {
+        return proxyAuthPort;
     }
 
-    public void setProxyAuthMethod(String proxyAuthMethod) {
-        this.proxyAuthMethod = proxyAuthMethod;
+    /**
+     * Proxy authentication port
+     */
+    public void setProxyAuthPort(int proxyAuthPort) {
+        this.proxyAuthPort = proxyAuthPort;
     }
 
     public String getProxyHost() {
         return proxyHost;
     }
 
+    /**
+     * Proxy hostname to use
+     */
     public void setProxyHost(String proxyHost) {
         this.proxyHost = proxyHost;
     }
@@ -129,15 +212,10 @@ public class HttpConfiguration implements Serializable {
         return proxyPort;
     }
 
+    /**
+     * Proxy port to use
+     */
     public void setProxyPort(int proxyPort) {
         this.proxyPort = proxyPort;
     }
-
-    public String getAuthMethodPriority() {
-        return authMethodPriority;
-    }
-
-    public void setAuthMethodPriority(String authMethodPriority) {
-        this.authMethodPriority = authMethodPriority;
-    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-http/src/main/docs/http-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-http/src/main/docs/http-component.adoc b/components/camel-http/src/main/docs/http-component.adoc
index 7837b04..d89cadc 100644
--- a/components/camel-http/src/main/docs/http-component.adoc
+++ b/components/camel-http/src/main/docs/http-component.adoc
@@ -141,7 +141,7 @@ The HTTP component supports 6 options which are listed below.
 
 
 // endpoint options: START
-The HTTP component supports 27 endpoint options which are listed below:
+The HTTP component supports 39 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
@@ -158,8 +158,6 @@ The HTTP component supports 27 endpoint options which are listed below:
 | httpMethod | producer |  | HttpMethods | Configure the HTTP method to use. The HttpMethod header cannot override this option if set.
 | ignoreResponseBody | producer | false | boolean | If this option is true The http producer won't read response body and cache the input stream
 | preserveHostHeader | producer | false | boolean | If the option is true HttpProducer will set the Host header to the value contained in the current exchange Host header useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client this allows applications which use the Host header to generate accurate URL's for a proxied service
-| proxyHost | producer |  | String | The proxy host name
-| proxyPort | producer |  | int | The proxy port number
 | throwExceptionOnFailure | producer | true | boolean | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code.
 | transferException | producer | false | boolean | If enabled and an Exchange failed processing on the consumer side and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk.
 | cookieHandler | producer (advanced) |  | CookieHandler | Configure a cookie handler to maintain a HTTP session
@@ -173,7 +171,21 @@ The HTTP component supports 27 endpoint options which are listed below:
 | mapHttpMessageFormUrlEncodedBody | advanced | true | boolean | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping.
 | mapHttpMessageHeaders | advanced | true | boolean | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping.
 | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
-| authMethodPriority | security |  | String | Authentication method for proxy either as Basic Digest or NTLM.
+| proxyAuthDomain | proxy |  | String | Proxy authentication domain to use with NTML
+| proxyAuthHost | proxy |  | String | Proxy authentication host
+| proxyAuthMethod | proxy |  | String | Proxy authentication method to use
+| proxyAuthPassword | proxy |  | String | Proxy authentication password
+| proxyAuthPort | proxy |  | int | Proxy authentication port
+| proxyAuthScheme | proxy |  | String | Proxy authentication scheme to use
+| proxyAuthUsername | proxy |  | String | Proxy authentication username
+| proxyHost | proxy |  | String | Proxy hostname to use
+| proxyPort | proxy |  | int | Proxy port to use
+| authDomain | security |  | String | Authentication domain to use with NTML
+| authHost | security |  | String | Authentication host to use with NTML
+| authMethod | security |  | String | Authentication methods allowed to use as a comma separated list of values Basic Digest or NTLM.
+| authMethodPriority | security |  | String | Which authentication method to prioritize to use either as Basic Digest or NTLM.
+| authPassword | security |  | String | Authentication password
+| authUsername | security |  | String | Authentication username
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
index fcd80c9..e414070 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
@@ -81,16 +81,16 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
         }
 
         // authentication can be endpoint configured
-        String authUsername = getAndRemoveParameter(parameters, "authUsername", String.class);
-        String authMethod = getAndRemoveParameter(parameters, "authMethod", String.class);
+        String authUsername = getParameter(parameters, "authUsername", String.class);
+        String authMethod = getParameter(parameters, "authMethod", String.class);
         // validate that if auth username is given then the auth method is also provided
         if (authUsername != null && authMethod == null) {
             throw new IllegalArgumentException("Option authMethod must be provided to use authentication");
         }
         if (authMethod != null) {
-            String authPassword = getAndRemoveParameter(parameters, "authPassword", String.class);
-            String authDomain = getAndRemoveParameter(parameters, "authDomain", String.class);
-            String authHost = getAndRemoveParameter(parameters, "authHost", String.class);
+            String authPassword = getParameter(parameters, "authPassword", String.class);
+            String authDomain = getParameter(parameters, "authDomain", String.class);
+            String authHost = getParameter(parameters, "authHost", String.class);
             configurer = configureAuth(configurer, authMethod, authUsername, authPassword, authDomain, authHost, authMethods);
         } else if (httpConfiguration != null) {
             // or fallback to use component configuration
@@ -99,16 +99,16 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
         }
 
         // proxy authentication can be endpoint configured
-        String proxyAuthUsername = getAndRemoveParameter(parameters, "proxyAuthUsername", String.class);
-        String proxyAuthMethod = getAndRemoveParameter(parameters, "proxyAuthMethod", String.class);
+        String proxyAuthUsername = getParameter(parameters, "proxyAuthUsername", String.class);
+        String proxyAuthMethod = getParameter(parameters, "proxyAuthMethod", String.class);
         // validate that if proxy auth username is given then the proxy auth method is also provided
         if (proxyAuthUsername != null && proxyAuthMethod == null) {
             throw new IllegalArgumentException("Option proxyAuthMethod must be provided to use proxy authentication");
         }
         if (proxyAuthMethod != null) {
-            String proxyAuthPassword = getAndRemoveParameter(parameters, "proxyAuthPassword", String.class);
-            String proxyAuthDomain = getAndRemoveParameter(parameters, "proxyAuthDomain", String.class);
-            String proxyAuthHost = getAndRemoveParameter(parameters, "proxyAuthHost", String.class);
+            String proxyAuthPassword = getParameter(parameters, "proxyAuthPassword", String.class);
+            String proxyAuthDomain = getParameter(parameters, "proxyAuthDomain", String.class);
+            String proxyAuthHost = getParameter(parameters, "proxyAuthHost", String.class);
             configurer = configureProxyAuth(configurer, proxyAuthMethod, proxyAuthUsername, proxyAuthPassword, proxyAuthDomain, proxyAuthHost, authMethods);
         } else if (httpConfiguration != null) {
             // or fallback to use component configuration
@@ -205,9 +205,6 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
         Map<String, Object> httpClientParameters = new HashMap<String, Object>(parameters);
         // must extract well known parameters before we create the endpoint
         HttpBinding binding = resolveAndRemoveReferenceParameter(parameters, "httpBinding", HttpBinding.class);
-        String proxyHost = getAndRemoveParameter(parameters, "proxyHost", String.class);
-        Integer proxyPort = getAndRemoveParameter(parameters, "proxyPort", Integer.class);
-        String authMethodPriority = getAndRemoveParameter(parameters, "authMethodPriority", String.class);
         HeaderFilterStrategy headerFilterStrategy = resolveAndRemoveReferenceParameter(parameters, "headerFilterStrategy", HeaderFilterStrategy.class);
         UrlRewrite urlRewrite = resolveAndRemoveReferenceParameter(parameters, "urlRewrite", UrlRewrite.class);
         // http client can be configured from URI options
@@ -238,7 +235,14 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
        
         // create the endpoint and connectionManagerParams already be set
         HttpEndpoint endpoint = createHttpEndpoint(endpointUri.toString(), this, clientParams, thisHttpConnectionManager, configurer);
-        
+
+        // configure the endpoint with the common configuration from the component
+        if (getHttpConfiguration() != null) {
+            Map<String, Object> properties = new HashMap<>();
+            IntrospectionSupport.getProperties(getHttpConfiguration(), properties, null);
+            setProperties(endpoint, properties);
+        }
+
         if (headerFilterStrategy != null) {
             endpoint.setHeaderFilterStrategy(headerFilterStrategy);
         } else {
@@ -259,25 +263,6 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
         if (binding != null) {
             endpoint.setBinding(binding);
         }
-        if (proxyHost != null) {
-            endpoint.setProxyHost(proxyHost);
-            endpoint.setProxyPort(proxyPort);
-        } else if (httpConfiguration != null) {
-            endpoint.setProxyHost(httpConfiguration.getProxyHost());
-            endpoint.setProxyPort(httpConfiguration.getProxyPort());
-        }
-        if (authMethodPriority != null) {
-            endpoint.setAuthMethodPriority(authMethodPriority);
-        } else if (httpConfiguration != null && httpConfiguration.getAuthMethodPriority() != null) {
-            endpoint.setAuthMethodPriority(httpConfiguration.getAuthMethodPriority());
-        } else {
-            // no explicit auth method priority configured, so use convention over configuration
-            // and set priority based on auth method
-            if (!authMethods.isEmpty()) {
-                authMethodPriority = CollectionHelper.collectionAsCommaDelimitedString(authMethods);
-                endpoint.setAuthMethodPriority(authMethodPriority);
-            }
-        }
         setProperties(endpoint, parameters);
         // restructure uri to be based on the parameters left as we dont want to include the Camel internal options
         URI httpUri = URISupport.createRemainingURI(new URI(addressUri), parameters);

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-http4/src/main/docs/http4-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/docs/http4-component.adoc b/components/camel-http4/src/main/docs/http4-component.adoc
index facde08..725b877 100644
--- a/components/camel-http4/src/main/docs/http4-component.adoc
+++ b/components/camel-http4/src/main/docs/http4-component.adoc
@@ -60,7 +60,7 @@ The HTTP4 component supports 13 options which are listed below.
 |=======================================================================
 | Name | Group | Default | Java Type | Description
 | httpClientConfigurer | advanced |  | HttpClientConfigurer | To use the custom HttpClientConfigurer to perform configuration of the HttpClient that will be used.
-| clientConnectionManager | advanced |  | HttpClientConnectionManager | To use a custom HttpClientConnectionManager to manage connections
+| clientConnectionManager | advanced |  | HttpClientConnectionManager | To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this component.
 | httpBinding | producer |  | HttpBinding | To use a custom HttpBinding to control the mapping between Camel message and HttpClient.
 | httpConfiguration | producer |  | HttpConfiguration | To use the shared HttpConfiguration as base configuration.
 | allowJavaSerializedObject | producer | false | boolean | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk.
@@ -86,7 +86,7 @@ The HTTP4 component supports 13 options which are listed below.
 
 
 // endpoint options: START
-The HTTP4 component supports 33 endpoint options which are listed below:
+The HTTP4 component supports 48 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
@@ -106,8 +106,6 @@ The HTTP4 component supports 33 endpoint options which are listed below:
 | httpMethod | producer |  | HttpMethods | Configure the HTTP method to use. The HttpMethod header cannot override this option if set.
 | ignoreResponseBody | producer | false | boolean | If this option is true The http producer won't read response body and cache the input stream
 | preserveHostHeader | producer | false | boolean | If the option is true HttpProducer will set the Host header to the value contained in the current exchange Host header useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client this allows applications which use the Host header to generate accurate URL's for a proxied service
-| proxyHost | producer |  | String | The proxy host name
-| proxyPort | producer |  | int | The proxy port number
 | throwExceptionOnFailure | producer | true | boolean | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code.
 | transferException | producer | false | boolean | If enabled and an Exchange failed processing on the consumer side and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk.
 | cookieHandler | producer (advanced) |  | CookieHandler | Configure a cookie handler to maintain a HTTP session
@@ -115,6 +113,7 @@ The HTTP4 component supports 33 endpoint options which are listed below:
 | urlRewrite | producer (advanced) |  | UrlRewrite | Refers to a custom org.apache.camel.component.http.UrlRewrite which allows you to rewrite urls when you bridge/proxy endpoints. See more details at http://camel.apache.org/urlrewrite.html
 | clientBuilder | advanced |  | HttpClientBuilder | Provide access to the http client request parameters used on new RequestConfig instances used by producers or consumers of this endpoint.
 | clientConnectionManager | advanced |  | HttpClientConnectionManager | To use a custom HttpClientConnectionManager to manage connections
+| connectionsPerRoute | advanced | 20 | int | The maximum number of connections per route.
 | httpClient | advanced |  | HttpClient | Gets the HttpClient to be used by org.apache.camel.component.http4.HttpProducer
 | httpClientConfigurer | advanced |  | HttpClientConfigurer | Register a custom configuration strategy for new HttpClient instances created by producers or consumers such as to configure authentication mechanisms etc
 | httpClientOptions | advanced |  | Map | To configure the HttpClient using the key/values from the Map.
@@ -122,9 +121,25 @@ The HTTP4 component supports 33 endpoint options which are listed below:
 | mapHttpMessageBody | advanced | true | boolean | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping.
 | mapHttpMessageFormUrlEncodedBody | advanced | true | boolean | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping.
 | mapHttpMessageHeaders | advanced | true | boolean | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping.
+| maxTotalConnections | advanced | 200 | int | The maximum number of connections.
 | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
 | useSystemProperties | advanced | false | boolean | To use System Properties as fallback for configuration
-| authMethodPriority | security |  | String | Authentication method for proxy either as Basic Digest or NTLM.
+| proxyAuthDomain | proxy |  | String | Proxy authentication domain to use with NTML
+| proxyAuthHost | proxy |  | String | Proxy authentication host
+| proxyAuthMethod | proxy |  | String | Proxy authentication method to use
+| proxyAuthPassword | proxy |  | String | Proxy authentication password
+| proxyAuthPort | proxy |  | int | Proxy authentication port
+| proxyAuthScheme | proxy |  | String | Proxy authentication scheme to use
+| proxyAuthUsername | proxy |  | String | Proxy authentication username
+| proxyHost | proxy |  | String | Proxy hostname to use
+| proxyPort | proxy |  | int | Proxy port to use
+| authDomain | security |  | String | Authentication domain to use with NTML
+| authHost | security |  | String | Authentication host to use with NTML
+| authMethod | security |  | String | Authentication methods allowed to use as a comma separated list of values Basic Digest or NTLM.
+| authMethodPriority | security |  | String | Which authentication method to prioritize to use either as Basic Digest or NTLM.
+| authPassword | security |  | String | Authentication password
+| authUsername | security |  | String | Authentication username
+| x509HostnameVerifier | security |  | HostnameVerifier | To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or org.apache.http.conn.ssl.NoopHostnameVerifier.
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java
index 95b2672..016eeb3 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java
@@ -28,7 +28,7 @@ public interface HttpClientConfigurer {
     /**
      * Configure the HttpClient such as setting the authentication or proxying details
      *
-     * @param client the client
+     * @param clientBuilder the client
      */
     void configureHttpClient(HttpClientBuilder clientBuilder);
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
index b6193fa..f9101e1 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
@@ -125,12 +125,12 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
     }
 
     private HttpClientConfigurer configureBasicAuthentication(Map<String, Object> parameters, HttpClientConfigurer configurer) {
-        String authUsername = getAndRemoveParameter(parameters, "authUsername", String.class);
-        String authPassword = getAndRemoveParameter(parameters, "authPassword", String.class);
+        String authUsername = getParameter(parameters, "authUsername", String.class);
+        String authPassword = getParameter(parameters, "authPassword", String.class);
 
         if (authUsername != null && authPassword != null) {
-            String authDomain = getAndRemoveParameter(parameters, "authDomain", String.class);
-            String authHost = getAndRemoveParameter(parameters, "authHost", String.class);
+            String authDomain = getParameter(parameters, "authDomain", String.class);
+            String authHost = getParameter(parameters, "authHost", String.class);
             
             return CompositeHttpConfigurer.combineConfigurers(configurer, new BasicAuthenticationHttpClientConfigurer(authUsername, authPassword, authDomain, authHost));
         }
@@ -139,19 +139,19 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
     }
 
     private HttpClientConfigurer configureHttpProxy(Map<String, Object> parameters, HttpClientConfigurer configurer, boolean secure) throws Exception {
-        String proxyAuthScheme = getAndRemoveParameter(parameters, "proxyAuthScheme", String.class);
+        String proxyAuthScheme = getParameter(parameters, "proxyAuthScheme", String.class);
         if (proxyAuthScheme == null) {
             // fallback and use either http or https depending on secure
             proxyAuthScheme = secure ? "https" : "http";
         }
-        String proxyAuthHost = getAndRemoveParameter(parameters, "proxyAuthHost", String.class);
-        Integer proxyAuthPort = getAndRemoveParameter(parameters, "proxyAuthPort", Integer.class);
+        String proxyAuthHost = getParameter(parameters, "proxyAuthHost", String.class);
+        Integer proxyAuthPort = getParameter(parameters, "proxyAuthPort", Integer.class);
         
         if (proxyAuthHost != null && proxyAuthPort != null) {
-            String proxyAuthUsername = getAndRemoveParameter(parameters, "proxyAuthUsername", String.class);
-            String proxyAuthPassword = getAndRemoveParameter(parameters, "proxyAuthPassword", String.class);
-            String proxyAuthDomain = getAndRemoveParameter(parameters, "proxyAuthDomain", String.class);
-            String proxyAuthNtHost = getAndRemoveParameter(parameters, "proxyAuthNtHost", String.class);
+            String proxyAuthUsername = getParameter(parameters, "proxyAuthUsername", String.class);
+            String proxyAuthPassword = getParameter(parameters, "proxyAuthPassword", String.class);
+            String proxyAuthDomain = getParameter(parameters, "proxyAuthDomain", String.class);
+            String proxyAuthNtHost = getParameter(parameters, "proxyAuthNtHost", String.class);
             
             if (proxyAuthUsername != null && proxyAuthPassword != null) {
                 return CompositeHttpConfigurer.combineConfigurers(
@@ -205,7 +205,6 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
         HttpClientConfigurer configurer = createHttpClientConfigurer(parameters, secure);
         URI endpointUri = URISupport.createRemainingURI(uriHttpUriAddress, httpClientParameters);
 
-
         // the endpoint uri should use the component name as scheme, so we need to re-create it once more
         String scheme = ObjectHelper.before(uri, "://");
         endpointUri = URISupport.createRemainingURI(
@@ -224,12 +223,21 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
         LOG.debug("Creating endpoint uri {}", endpointUriString);
         final HttpClientConnectionManager localConnectionManager = createConnectionManager(parameters, sslContextParameters);
         HttpEndpoint endpoint = new HttpEndpoint(endpointUriString, this, clientBuilder, localConnectionManager, configurer);
+
+        // configure the endpoint with the common configuration from the component
+        if (getHttpConfiguration() != null) {
+            Map<String, Object> properties = new HashMap<>();
+            IntrospectionSupport.getProperties(getHttpConfiguration(), properties, null);
+            setProperties(endpoint, properties);
+        }
+
         if (urlRewrite != null) {
             // let CamelContext deal with the lifecycle of the url rewrite
             // this ensures its being shutdown when Camel shutdown etc.
             getCamelContext().addService(urlRewrite);
             endpoint.setUrlRewrite(urlRewrite);
         }
+
         // configure the endpoint
         setProperties(endpoint, parameters);
 
@@ -248,6 +256,7 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
                         parameters);
 
         endpoint.setHttpUri(httpUri);
+
         if (headerFilterStrategy != null) {
             endpoint.setHeaderFilterStrategy(headerFilterStrategy);
         } else {
@@ -407,7 +416,8 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
     }
 
     /**
-     * To use a custom HttpClientConnectionManager to manage connections
+     * To use a custom and shared HttpClientConnectionManager to manage connections.
+     * If this has been configured then this is always used for all endpoints created by this component.
      */
     public void setClientConnectionManager(HttpClientConnectionManager clientConnectionManager) {
         this.clientConnectionManager = clientConnectionManager;

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
index f500ec2..aa7843b 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
@@ -20,6 +20,7 @@ import java.io.Closeable;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Map;
+import javax.net.ssl.HostnameVerifier;
 
 import org.apache.camel.Consumer;
 import org.apache.camel.PollingConsumer;
@@ -37,6 +38,7 @@ import org.apache.http.client.CookieStore;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.conn.HttpClientConnectionManager;
+import org.apache.http.conn.ssl.DefaultHostnameVerifier;
 import org.apache.http.impl.client.BasicCookieStore;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.protocol.HttpContext;
@@ -46,7 +48,8 @@ import org.slf4j.LoggerFactory;
 /**
  * For calling out to external HTTP servers using Apache HTTP Client 4.x.
  */
-@UriEndpoint(firstVersion = "2.3.0", scheme = "http4,http4s", title = "HTTP4,HTTP4S", syntax = "http4:httpUri", producerOnly = true, label = "http", lenientProperties = true)
+@UriEndpoint(firstVersion = "2.3.0", scheme = "http4,http4s", title = "HTTP4,HTTP4S", syntax = "http4:httpUri",
+    producerOnly = true, label = "http", lenientProperties = true)
 public class HttpEndpoint extends HttpCommonEndpoint {
 
     private static final Logger LOG = LoggerFactory.getLogger(HttpEndpoint.class);
@@ -73,6 +76,13 @@ public class HttpEndpoint extends HttpCommonEndpoint {
     @UriParam(label = "producer", defaultValue = "true")
     private boolean clearExpiredCookies = true;
 
+    @UriParam(label = "advanced", defaultValue = "200")
+    private int maxTotalConnections;
+    @UriParam(label = "advanced", defaultValue = "20")
+    private int connectionsPerRoute;
+    @UriParam(label = "security")
+    private HostnameVerifier x509HostnameVerifier;
+
     public HttpEndpoint() {
     }
 
@@ -315,4 +325,38 @@ public class HttpEndpoint extends HttpCommonEndpoint {
     public void setUseSystemProperties(boolean useSystemProperties) {
         this.useSystemProperties = useSystemProperties;
     }
+
+    public int getMaxTotalConnections() {
+        return maxTotalConnections;
+    }
+
+    /**
+     * The maximum number of connections.
+     */
+    public void setMaxTotalConnections(int maxTotalConnections) {
+        this.maxTotalConnections = maxTotalConnections;
+    }
+
+    public int getConnectionsPerRoute() {
+        return connectionsPerRoute;
+    }
+
+    /**
+     * The maximum number of connections per route.
+     */
+    public void setConnectionsPerRoute(int connectionsPerRoute) {
+        this.connectionsPerRoute = connectionsPerRoute;
+    }
+
+    public HostnameVerifier getX509HostnameVerifier() {
+        return x509HostnameVerifier;
+    }
+
+    /**
+     * To use a custom X509HostnameVerifier such as {@link DefaultHostnameVerifier}
+     * or {@link org.apache.http.conn.ssl.NoopHostnameVerifier}.
+     */
+    public void setX509HostnameVerifier(HostnameVerifier x509HostnameVerifier) {
+        this.x509HostnameVerifier = x509HostnameVerifier;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointURLTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointURLTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointURLTest.java
index c86e5a6b..3c1124c 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointURLTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointURLTest.java
@@ -48,8 +48,6 @@ public class HttpEndpointURLTest extends CamelTestSupport {
         } catch (ResolveEndpointFailedException ex) {
             assertTrue("Get a wrong exception message", ex.getMessage().indexOf("You have duplicated the http(s) protocol") > 0);
         }
-         
-        
     }
     
     @Test

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-jetty9/src/main/docs/jetty-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-jetty9/src/main/docs/jetty-component.adoc b/components/camel-jetty9/src/main/docs/jetty-component.adoc
index bd735ed..49f465f 100644
--- a/components/camel-jetty9/src/main/docs/jetty-component.adoc
+++ b/components/camel-jetty9/src/main/docs/jetty-component.adoc
@@ -102,7 +102,7 @@ The Jetty 9 component supports 31 options which are listed below.
 
 
 // endpoint options: START
-The Jetty 9 component supports 55 endpoint options which are listed below:
+The Jetty 9 component supports 56 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
@@ -147,8 +147,6 @@ The Jetty 9 component supports 55 endpoint options which are listed below:
 | httpMethod | producer |  | HttpMethods | Configure the HTTP method to use. The HttpMethod header cannot override this option if set.
 | ignoreResponseBody | producer | false | boolean | If this option is true The http producer won't read response body and cache the input stream
 | preserveHostHeader | producer | false | boolean | If the option is true HttpProducer will set the Host header to the value contained in the current exchange Host header useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client this allows applications which use the Host header to generate accurate URL's for a proxied service
-| proxyHost | producer |  | String | The proxy host name
-| proxyPort | producer |  | int | The proxy port number
 | throwExceptionOnFailure | producer | true | boolean | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code.
 | httpClient | producer (advanced) |  | HttpClient | Sets a shared HttpClient to use for all producers created by this endpoint. By default each producer will use a new http client and not share. Important: Make sure to handle the lifecycle of the shared client such as stopping the client when it is no longer in use. Camel will call the start method on the client to ensure its started when this endpoint creates a producer. This options should only be used in special circumstances.
 | httpClientParameters | producer (advanced) |  | Map | Configuration of Jetty's HttpClient. For example setting httpClient.idleTimeout=30000 sets the idle timeout to 30 seconds. And httpClient.timeout=30000 sets the request timeout to 30 seconds in case you want to timeout sooner if you have long running request/response calls.
@@ -160,7 +158,10 @@ The Jetty 9 component supports 55 endpoint options which are listed below:
 | mapHttpMessageFormUrlEncodedBody | advanced | true | boolean | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping.
 | mapHttpMessageHeaders | advanced | true | boolean | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping.
 | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
-| authMethodPriority | security |  | String | Authentication method for proxy either as Basic Digest or NTLM.
+| proxyAuthScheme | proxy |  | String | Proxy authentication scheme to use
+| proxyHost | proxy |  | String | Proxy hostname to use
+| proxyPort | proxy |  | int | Proxy port to use
+| authHost | security |  | String | Authentication host to use with NTML
 | sslContextParameters | security |  | SSLContextParameters | To configure security using SSLContextParameters
 | sslContextParametersRef | security |  | String | To configure security using SSLContextParameters
 |=======================================================================

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java
index 843a098..e4413f4 100644
--- a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java
+++ b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java
@@ -31,8 +31,11 @@ import org.apache.camel.spi.UriEndpoint;
  * The jetty component provides HTTP-based endpoints for consuming and producing HTTP requests.
  */
 @UriEndpoint(firstVersion = "1.2.0", scheme = "jetty", extendsScheme = "http", title = "Jetty 9",
-        syntax = "jetty:httpUri", consumerClass = HttpConsumer.class, label = "http", lenientProperties = true)
+        syntax = "jetty:httpUri", consumerClass = HttpConsumer.class, label = "http", lenientProperties = true,
+        excludeProperties = "authMethod,authMethodPriority,authUsername,authPassword,authDomain,authHost"
+            + "proxyAuthScheme,proxyAuthMethod,proxyAuthUsername,proxyAuthPassword,proxyAuthHost,proxyAuthPort,proxyAuthDomain")
 public class JettyHttpEndpoint9 extends JettyHttpEndpoint implements AsyncEndpoint {
+
     private HttpBinding binding;
 
     public JettyHttpEndpoint9(JettyHttpComponent component, String uri, URI httpURL) throws URISyntaxException {

http://git-wip-us.apache.org/repos/asf/camel/blob/280b1ee8/platforms/spring-boot/components-starter/camel-http4-starter/src/main/java/org/apache/camel/component/http4/springboot/HttpComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-http4-starter/src/main/java/org/apache/camel/component/http4/springboot/HttpComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-http4-starter/src/main/java/org/apache/camel/component/http4/springboot/HttpComponentConfiguration.java
index 12faaf6..9d0e16b 100644
--- a/platforms/spring-boot/components-starter/camel-http4-starter/src/main/java/org/apache/camel/component/http4/springboot/HttpComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-http4-starter/src/main/java/org/apache/camel/component/http4/springboot/HttpComponentConfiguration.java
@@ -43,7 +43,9 @@ public class HttpComponentConfiguration {
     @NestedConfigurationProperty
     private HttpClientConfigurer httpClientConfigurer;
     /**
-     * To use a custom HttpClientConnectionManager to manage connections
+     * To use a custom and shared HttpClientConnectionManager to manage
+     * connections. If this has been configured then this is always used for all
+     * endpoints created by this component.
      */
     @NestedConfigurationProperty
     private HttpClientConnectionManager clientConnectionManager;


Mime
View raw message