You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2023/03/24 14:50:38 UTC
[camel] branch CAMEL-19191/downgrade-httpcomponents-to-5.1 created (now 771e5eb19b7)
This is an automated email from the ASF dual-hosted git repository.
nfilotto pushed a change to branch CAMEL-19191/downgrade-httpcomponents-to-5.1
in repository https://gitbox.apache.org/repos/asf/camel.git
at 771e5eb19b7 CAMEL-19191: Use 5.1.x version to be compatible with SB
This branch includes the following new commits:
new 771e5eb19b7 CAMEL-19191: Use 5.1.x version to be compatible with SB
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[camel] 01/01: CAMEL-19191: Use 5.1.x version to be compatible with SB
Posted by nf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
nfilotto pushed a commit to branch CAMEL-19191/downgrade-httpcomponents-to-5.1
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 771e5eb19b7dd722ce6d13bc17a9baa35966e7e9
Author: Nicolas Filotto <nf...@talend.com>
AuthorDate: Fri Mar 24 15:50:14 2023 +0100
CAMEL-19191: Use 5.1.x version to be compatible with SB
---
camel-dependencies/pom.xml | 2 +-
.../component/http/HttpComponentConfigurer.java | 6 ----
.../org/apache/camel/component/http/http.json | 1 -
.../org/apache/camel/component/http/https.json | 1 -
.../camel-http/src/main/docs/http-component.adoc | 16 +++++++---
.../apache/camel/component/http/HttpComponent.java | 35 +++-------------------
.../apache/camel/component/http/HttpEndpoint.java | 18 -----------
.../apache/camel/component/http/HttpProducer.java | 3 +-
.../ROOT/pages/camel-4-migration-guide.adoc | 10 +++----
parent/pom.xml | 2 +-
10 files changed, 24 insertions(+), 70 deletions(-)
diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index ba4245404c1..a354b5fcea9 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -217,7 +217,7 @@
<hsqldb-version>2.7.1</hsqldb-version>
<httpunit-version>1.7</httpunit-version>
<httpcore-version>5.2.1</httpcore-version>
- <httpclient-version>5.2.1</httpclient-version>
+ <httpclient-version>5.1.4</httpclient-version>
<httpcore4-version>4.4.16</httpcore4-version>
<httpclient4-version>4.5.14</httpclient4-version>
<httpasyncclient-version>4.1.5</httpasyncclient-version>
diff --git a/components/camel-http/src/generated/java/org/apache/camel/component/http/HttpComponentConfigurer.java b/components/camel-http/src/generated/java/org/apache/camel/component/http/HttpComponentConfigurer.java
index 58d39840502..ea1f621a314 100644
--- a/components/camel-http/src/generated/java/org/apache/camel/component/http/HttpComponentConfigurer.java
+++ b/components/camel-http/src/generated/java/org/apache/camel/component/http/HttpComponentConfigurer.java
@@ -95,8 +95,6 @@ public class HttpComponentConfigurer extends PropertyConfigurerSupport implement
case "skipResponseHeaders": target.setSkipResponseHeaders(property(camelContext, boolean.class, value)); return true;
case "sotimeout":
case "soTimeout": target.setSoTimeout(property(camelContext, org.apache.hc.core5.util.Timeout.class, value)); return true;
- case "sockettimeout":
- case "socketTimeout": target.setSocketTimeout(property(camelContext, org.apache.hc.core5.util.Timeout.class, value)); return true;
case "sslcontextparameters":
case "sslContextParameters": target.setSslContextParameters(property(camelContext, org.apache.camel.support.jsse.SSLContextParameters.class, value)); return true;
case "useglobalsslcontextparameters":
@@ -184,8 +182,6 @@ public class HttpComponentConfigurer extends PropertyConfigurerSupport implement
case "skipResponseHeaders": return boolean.class;
case "sotimeout":
case "soTimeout": return org.apache.hc.core5.util.Timeout.class;
- case "sockettimeout":
- case "socketTimeout": return org.apache.hc.core5.util.Timeout.class;
case "sslcontextparameters":
case "sslContextParameters": return org.apache.camel.support.jsse.SSLContextParameters.class;
case "useglobalsslcontextparameters":
@@ -274,8 +270,6 @@ public class HttpComponentConfigurer extends PropertyConfigurerSupport implement
case "skipResponseHeaders": return target.isSkipResponseHeaders();
case "sotimeout":
case "soTimeout": return target.getSoTimeout();
- case "sockettimeout":
- case "socketTimeout": return target.getSocketTimeout();
case "sslcontextparameters":
case "sslContextParameters": return target.getSslContextParameters();
case "useglobalsslcontextparameters":
diff --git a/components/camel-http/src/generated/resources/org/apache/camel/component/http/http.json b/components/camel-http/src/generated/resources/org/apache/camel/component/http/http.json
index 2cf9827c77e..b53ad508b86 100644
--- a/components/camel-http/src/generated/resources/org/apache/camel/component/http/http.json
+++ b/components/camel-http/src/generated/resources/org/apache/camel/component/http/http.json
@@ -64,7 +64,6 @@
"connectionRequestTimeout": { "kind": "property", "displayName": "Connection Request Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Returns the connection lease request timeout used when requesting a connection from the connection manager. A timeout value of zero is interpreted as a disabled time [...]
"connectTimeout": { "kind": "property", "displayName": "Connect Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Determines the timeout until a new connection is fully established. A timeout value of zero is interpreted as an infinite timeout." },
"responseTimeout": { "kind": "property", "displayName": "Response Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0", "description": "Determines the timeout until arrival of a response from the opposite endpoint. A timeout value of zero is interpreted as an infinite timeout. Please note that response timeout may be unsupport [...]
- "socketTimeout": { "kind": "property", "displayName": "Socket Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "null (undefined)", "description": "Determines the default socket timeout value for I\/O operations." },
"soTimeout": { "kind": "property", "displayName": "So Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Determines the default socket timeout value for blocking I\/O operations." }
},
"headers": {
diff --git a/components/camel-http/src/generated/resources/org/apache/camel/component/http/https.json b/components/camel-http/src/generated/resources/org/apache/camel/component/http/https.json
index 36e3597ad93..8769a911e4a 100644
--- a/components/camel-http/src/generated/resources/org/apache/camel/component/http/https.json
+++ b/components/camel-http/src/generated/resources/org/apache/camel/component/http/https.json
@@ -64,7 +64,6 @@
"connectionRequestTimeout": { "kind": "property", "displayName": "Connection Request Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Returns the connection lease request timeout used when requesting a connection from the connection manager. A timeout value of zero is interpreted as a disabled time [...]
"connectTimeout": { "kind": "property", "displayName": "Connect Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Determines the timeout until a new connection is fully established. A timeout value of zero is interpreted as an infinite timeout." },
"responseTimeout": { "kind": "property", "displayName": "Response Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0", "description": "Determines the timeout until arrival of a response from the opposite endpoint. A timeout value of zero is interpreted as an infinite timeout. Please note that response timeout may be unsupport [...]
- "socketTimeout": { "kind": "property", "displayName": "Socket Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "null (undefined)", "description": "Determines the default socket timeout value for I\/O operations." },
"soTimeout": { "kind": "property", "displayName": "So Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Determines the default socket timeout value for blocking I\/O operations." }
},
"headers": {
diff --git a/components/camel-http/src/main/docs/http-component.adoc b/components/camel-http/src/main/docs/http-component.adoc
index 64d9794e2d1..62e03c85ea0 100644
--- a/components/camel-http/src/main/docs/http-component.adoc
+++ b/components/camel-http/src/main/docs/http-component.adoc
@@ -455,7 +455,7 @@ Using HTTPS to authenticate gotchas
An end user reported that he had problem with authenticating with HTTPS.
The problem was eventually resolved by providing a custom configured
-`org.apache.http.protocol.HttpContext`:
+`org.apache.hc.core5.http.protocol.HttpContext`:
* 1. Create a (Spring) factory for HttpContexts:
@@ -465,15 +465,23 @@ public class HttpContextFactory {
private String httpHost = "localhost";
private String httpPort = 9001;
+ private String user = "some-user";
+ private String password = "my-secret";
- private BasicHttpContext httpContext = new BasicHttpContext();
+ private HttpClientContext context = HttpClientContext.create();
private BasicAuthCache authCache = new BasicAuthCache();
private BasicScheme basicAuth = new BasicScheme();
public HttpContext getObject() {
- authCache.put(new HttpHost(httpHost, httpPort), basicAuth);
+ UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(user, password.toCharArray());
+ BasicCredentialsProvider provider = new BasicCredentialsProvider();
+ HttpHost host = new HttpHost(httpHost, httpPort);
+ provider.setCredentials(host, credentials);
- httpContext.setAttribute(ClientContext.AUTH_CACHE, authCache);
+ authCache.put(host, basicAuth);
+
+ httpContext.setAuthCache(authCache);
+ httpContext.setCredentialsProvider(provider);
return httpContext;
}
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 322831c8566..974fb3c49df 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
@@ -53,7 +53,6 @@ import org.apache.camel.util.PropertiesHelper;
import org.apache.camel.util.StringHelper;
import org.apache.camel.util.URISupport;
import org.apache.camel.util.UnsafeUriCharactersEncoder;
-import org.apache.hc.client5.http.config.ConnectionConfig;
import org.apache.hc.client5.http.config.RequestConfig;
import org.apache.hc.client5.http.cookie.CookieStore;
import org.apache.hc.client5.http.impl.DefaultRedirectStrategy;
@@ -118,10 +117,6 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
+ " A timeout value of zero is interpreted as an infinite timeout.",
javaType = "org.apache.hc.core5.util.Timeout")
protected Timeout connectTimeout = Timeout.ofMinutes(3);
- @Metadata(label = "timeout", defaultValue = "null (undefined)",
- description = "Determines the default socket timeout value for I/O operations.",
- javaType = "org.apache.hc.core5.util.Timeout")
- protected Timeout socketTimeout;
@Metadata(label = "timeout", defaultValue = "3 minutes",
description = "Determines the default socket timeout value for blocking I/O operations.",
javaType = "org.apache.hc.core5.util.Timeout")
@@ -315,15 +310,11 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
if (!Timeout.ofMilliseconds(0).equals(valResponseTimeout)) {
httpClientOptions.put("responseTimeout", valResponseTimeout);
}
- final Map<String, Object> httpConnectionOptions = new HashMap<>();
Timeout valConnectTimeout = getAndRemoveParameter(parameters, "connectTimeout", Timeout.class, connectTimeout);
if (!Timeout.ofMinutes(3).equals(valConnectTimeout)) {
- httpConnectionOptions.put("connectTimeout", valConnectTimeout);
- }
- Timeout valSocketTimeout = getAndRemoveParameter(parameters, "socketTimeout", Timeout.class, socketTimeout);
- if (valSocketTimeout != null) {
- httpConnectionOptions.put("socketTimeout", valSocketTimeout);
+ httpClientOptions.put("connectTimeout", valConnectTimeout);
}
+ final Map<String, Object> httpConnectionOptions = new HashMap<>();
Timeout valSoTimeout = getAndRemoveParameter(parameters, "soTimeout", Timeout.class, soTimeout);
if (!Timeout.ofMinutes(3).equals(valSoTimeout)) {
httpConnectionOptions.put("soTimeout", valSoTimeout);
@@ -396,7 +387,6 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
final HttpClientBuilder clientBuilder = createHttpClientBuilder(uri, parameters, httpClientOptions);
HttpEndpoint endpoint = new HttpEndpoint(endpointUriString, this, clientBuilder, localConnectionManager, configurer);
endpoint.setResponseTimeout(valResponseTimeout);
- endpoint.setSocketTimeout(valSocketTimeout);
endpoint.setSoTimeout(valSoTimeout);
endpoint.setConnectTimeout(valConnectTimeout);
endpoint.setConnectionRequestTimeout(valConnectionRequestTimeout);
@@ -480,11 +470,9 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
httpConnectionOptions.putAll(PropertiesHelper.extractProperties(parameters, "httpConnection."));
SocketConfig.Builder socketConfigBuilder = SocketConfig.custom();
PropertyBindingSupport.bindProperties(getCamelContext(), socketConfigBuilder, httpConnectionOptions);
- ConnectionConfig.Builder connectionConfigBuilder = ConnectionConfig.custom();
- PropertyBindingSupport.bindProperties(getCamelContext(), connectionConfigBuilder, httpConnectionOptions);
return createConnectionManager(connectionRegistry, maxTotalConnections, connectionsPerRoute,
- socketConfigBuilder.build(), connectionConfigBuilder.build());
+ socketConfigBuilder.build());
}
protected HttpClientBuilder createHttpClientBuilder(
@@ -554,7 +542,7 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
protected HttpClientConnectionManager createConnectionManager(
Registry<ConnectionSocketFactory> registry, int maxTotalConnections, int connectionsPerRoute,
- SocketConfig defaultSocketConfig, ConnectionConfig defaultConnectionConfig) {
+ SocketConfig defaultSocketConfig) {
// setup the connection live time
PoolingHttpClientConnectionManager answer = new PoolingHttpClientConnectionManager(
registry, PoolConcurrencyPolicy.STRICT, TimeValue.ofMilliseconds(getConnectionTimeToLive()), null);
@@ -566,7 +554,6 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
answer.setMaxTotal(localMaxTotalConnections);
}
answer.setDefaultSocketConfig(defaultSocketConfig);
- answer.setDefaultConnectionConfig(defaultConnectionConfig);
int localConnectionsPerRoute = connectionsPerRoute;
if (localConnectionsPerRoute == 0) {
localConnectionsPerRoute = getConnectionsPerRoute();
@@ -796,20 +783,6 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
this.connectTimeout = connectTimeout;
}
- public Timeout getSocketTimeout() {
- return socketTimeout;
- }
-
- /**
- * Determines the default socket timeout value for I/O operations.
- * <p>
- * Default: {@code null} (undefined)
- * </p>
- */
- public void setSocketTimeout(Timeout socketTimeout) {
- this.socketTimeout = socketTimeout;
- }
-
public Timeout getSoTimeout() {
return soTimeout;
}
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
index bdf448ae8b2..309ef7ff39c 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
@@ -104,10 +104,6 @@ public class HttpEndpoint extends HttpCommonEndpoint {
+ " A timeout value of zero is interpreted as an infinite timeout.",
javaType = "org.apache.hc.core5.util.Timeout")
private Timeout connectTimeout = Timeout.ofMinutes(3);
- @Metadata(label = "timeout", defaultValue = "null (undefined)",
- description = "Determines the default socket timeout value for I/O operations.",
- javaType = "org.apache.hc.core5.util.Timeout")
- private Timeout socketTimeout;
@Metadata(label = "timeout", defaultValue = "3 minutes",
description = "Determines the default socket timeout value for blocking I/O operations.",
javaType = "org.apache.hc.core5.util.Timeout")
@@ -544,20 +540,6 @@ public class HttpEndpoint extends HttpCommonEndpoint {
this.connectTimeout = connectTimeout;
}
- public Timeout getSocketTimeout() {
- return socketTimeout;
- }
-
- /**
- * Determines the default socket timeout value for I/O operations.
- * <p>
- * Default: {@code null} (undefined)
- * </p>
- */
- public void setSocketTimeout(Timeout socketTimeout) {
- this.socketTimeout = socketTimeout;
- }
-
public Timeout getSoTimeout() {
return soTimeout;
}
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
index 0c9eb99ab75..a1a0c3e1f5f 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
@@ -25,7 +25,6 @@ import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
-import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
@@ -145,7 +144,7 @@ public class HttpProducer extends DefaultProducer {
boolean cookies = !getEndpoint().getComponent().isCookieManagementDisabled();
if (cookies && getEndpoint().isClearExpiredCookies() && !getEndpoint().isBridgeEndpoint()) {
// create the cookies before the invocation
- getEndpoint().getCookieStore().clearExpired(Instant.now());
+ getEndpoint().getCookieStore().clearExpired(new Date());
}
// if we bridge endpoint then we need to skip matching headers with the HTTP_QUERY to avoid sending
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc b/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
index 856730757a4..47a500cda9d 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
@@ -156,14 +156,14 @@ The underlying `hapi-fhir` library has been upgraded from 4.2.0 to 6.2.4. Only t
=== camel-http
-The component has been upgraded to use Apache HttpComponents v5 which has an impact on how the underlying client is configured. There are 5 different
-timeouts (`connectionRequestTimeout`, `connectTimeout`, `socketTimeout`, `soTimeout` and `responseTimeout`) instead of initially 3
-(`connectionRequestTimeout`, `connectTimeout` and `socketTimeout`) and their default values have changed for some of them so please refer to the documentation
+The component has been upgraded to use Apache HttpComponents v5 which has an impact on how the underlying client is configured. There are 4 different
+timeouts (`connectionRequestTimeout`, `connectTimeout`, `soTimeout` and `responseTimeout`) instead of initially 3
+(`connectionRequestTimeout`, `connectTimeout` and `socketTimeout`) and the default value of some of them has changed so please refer to the documentation
for more details.
-There is also a noticeable behavior change regarding the `socketTimeout`, it is now needed to configure it with the option `soTimeout` to get the previous behavior.
+Please note that the `socketTimeout` has been removed from the possible configuration parameters of `HttpClient`, .
-Finally, the options `connectTimeout` and `socketTimeout` along with any parameters included into `SocketConfig` and `ConnectionConfig`, need to be prefixed by `httpConnection.`,
+Finally, the option `soTimeout` along with any parameters included into `SocketConfig`, need to be prefixed by `httpConnection.`,
the rest of the parameters including those defined into `HttpClientBuilder` and `RequestConfig` still need to be prefixed by `httpClient.` like before.
=== camel-http-common
diff --git a/parent/pom.xml b/parent/pom.xml
index b12ce0bfeca..ec5624d0f2e 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -212,7 +212,7 @@
<hsqldb-version>2.7.1</hsqldb-version>
<httpunit-version>1.7</httpunit-version>
<httpcore-version>5.2.1</httpcore-version>
- <httpclient-version>5.2.1</httpclient-version>
+ <httpclient-version>5.1.4</httpclient-version>
<httpcore4-version>4.4.16</httpcore4-version>
<httpclient4-version>4.5.14</httpclient4-version>
<httpasyncclient-version>4.1.5</httpasyncclient-version>