This is an automated email from the ASF dual-hosted git repository.
nfilotto pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new b48f1202cfc CAMEL-19191: Use 5.1.x version to be compatible with SB
(#9632)
b48f1202cfc is described below
commit b48f1202cfc0bed1edfcdf2c9e71010c0aaa9f9c
Author: Nicolas Filotto <[email protected]>
AuthorDate: Fri Mar 24 17:31:46 2023 +0100
CAMEL-19191: Use 5.1.x version to be compatible with SB (#9632)
## Motivation
SpringBoot still uses Http Components v 5.1 which is not fully compatible
with v 5.2, we need to downgrade the version to prevent conflicts when using
the SpringBoot runtime.
## Modifications:
* Downgrade the version to `5.1.4`
* Remove the option `socketTimeout` since it has been removed from the
potential configuration of an `HttpClient` instance
* Adapt the documentation of `camel-http` to version 5
* Adapt the upgrade guide to version 5.1
---
camel-dependencies/pom.xml | 4 +--
.../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 | 26 ++++++++++------
.../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 | 4 +--
10 files changed, 31 insertions(+), 77 deletions(-)
diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index ba4245404c1..90fc5a90fb3 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -216,8 +216,8 @@
<hk2-version>2.6.1</hk2-version>
<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>
+ <httpcore-version>5.1.4</httpcore-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..24bd6686bad 100644
--- a/components/camel-http/src/main/docs/http-component.adoc
+++ b/components/camel-http/src/main/docs/http-component.adoc
@@ -402,17 +402,17 @@ Spring DSL based configuration of endpoint
Configuring Apache HTTP Client Directly
Basically camel-http component is built on the top of
-http://hc.apache.org/httpcomponents-client-ga/[Apache HttpClient].
+https://hc.apache.org/httpcomponents-client-5.1.x/[Apache HttpClient].
Please refer to
https://hc.apache.org/httpcomponents-client-4.5.x/current/tutorial/html/connmgmt.html[SSL/TLS
-customization] for details or have a look into the
+customization] (even if the link is referring to an article about version 4,
it is still more or less relevant moreover there is no equivalent for version
5) for details or have a look into the
`org.apache.camel.component.http.HttpsServerTestSupport` unit test base
class. +
You can also implement a custom
`org.apache.camel.component.http.HttpClientConfigurer` to do some
configuration on the http client if you need full control of it.
-However if you _just_ want to specify the keystore and truststore you
+However, if you _just_ want to specify the keystore and truststore you
can do this with Apache HTTP `HttpClientConfigurer`, for example:
[source,java]
@@ -447,7 +447,7 @@ If you are doing this using the Spring DSL, you can specify
your
<to
uri="https://myhostname.com:443/myURL?httpClientConfigurer=myHttpClientConfigurer"/>
-----------------------------------------------------------------------------------------
-As long as you implement the HttpClientConfigurer and configure your
+As long as you implement the `HttpClientConfigurer` and configure your
keystore and truststore as described above, it will work fine.
[[HTTP-UsingHTTPStoauthenticategotchas]]
@@ -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;
}
@@ -482,7 +490,7 @@ public class HttpContextFactory {
}
------------------------------------------------------------------
-* 2. Declare an HttpContext in the Spring application context file:
+* 2. Declare an` HttpContext` in the Spring application context file:
[source,xml]
---------------------------------------------------------------------------------------
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..a61a5fd5e33 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`, use `responseTimeout` instead.
-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..2fe170b8f25 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -211,8 +211,8 @@
<hk2-version>2.6.1</hk2-version>
<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>
+ <httpcore-version>5.1.4</httpcore-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>