From e1bd4d42504119e5b9aaf5933bf15917fde5fe2c Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 2 Dec 2022 20:57:35 +0100 Subject: [PATCH] Upgrade to Apache HttpClient 5.2 Includes JRuby 9.4, Groovy 4.0.6, Hibernate ORM 5.6.14, HSQLDB 2.7.1, SLF4J 2.0.5, Caffeine 3.1.2, Gson 2.10, POI 5.2.3, Protobuf 3.21.10, WebJars Locator 0.52, HtmlUnit 2.67, Mockito 4.9, Checkstyle 10.5 Closes gh-29627 --- framework-platform/framework-platform.gradle | 73 +++++++++---------- .../HttpComponentsClientHttpRequest.java | 2 + ...ttpComponentsClientHttpRequestFactory.java | 15 ++++ 3 files changed, 53 insertions(+), 37 deletions(-) diff --git a/framework-platform/framework-platform.gradle b/framework-platform/framework-platform.gradle index fc172371ef02..cf8af500dcda 100644 --- a/framework-platform/framework-platform.gradle +++ b/framework-platform/framework-platform.gradle @@ -13,23 +13,23 @@ dependencies { api(platform("io.netty:netty5-bom:5.0.0.Alpha5")) api(platform("io.projectreactor:reactor-bom:2022.0.8")) api(platform("io.rsocket:rsocket-bom:1.1.3")) - api(platform("org.apache.groovy:groovy-bom:4.0.12")) - api(platform("org.apache.logging.log4j:log4j-bom:2.20.0")) - api(platform("org.eclipse.jetty:jetty-bom:11.0.15")) - api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.1")) - api(platform("org.jetbrains.kotlinx:kotlinx-serialization-bom:1.5.1")) - api(platform("org.junit:junit-bom:5.9.3")) - api(platform("org.mockito:mockito-bom:5.4.0")) + api(platform("org.apache.groovy:groovy-bom:4.0.6")) + api(platform("org.apache.logging.log4j:log4j-bom:2.19.0")) + api(platform("org.eclipse.jetty:jetty-bom:11.0.12")) + api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.4")) + api(platform("org.jetbrains.kotlinx:kotlinx-serialization-bom:1.4.0")) + api(platform("org.junit:junit-bom:5.9.1")) + api(platform("org.mockito:mockito-bom:4.9.0")) constraints { - api("com.fasterxml:aalto-xml:1.3.2") - api("com.fasterxml.woodstox:woodstox-core:6.5.1") - api("com.github.ben-manes.caffeine:caffeine:3.1.6") + api("com.fasterxml:aalto-xml:1.3.1") + api("com.fasterxml.woodstox:woodstox-core:6.4.0") + api("com.github.ben-manes.caffeine:caffeine:3.1.2") api("com.github.librepdf:openpdf:1.3.30") api("com.google.code.findbugs:findbugs:3.0.1") api("com.google.code.findbugs:jsr305:3.0.2") - api("com.google.code.gson:gson:2.10.1") - api("com.google.protobuf:protobuf-java-util:3.23.2") + api("com.google.code.gson:gson:2.10") + api("com.google.protobuf:protobuf-java-util:3.21.10") api("com.googlecode.protobuf-java-format:protobuf-java-format:1.4") api("com.h2database:h2:2.1.214") api("com.jayway.jsonpath:json-path:2.8.0") @@ -88,7 +88,7 @@ dependencies { api("jaxen:jaxen:1.2.0") api("junit:junit:4.13.2") api("net.sf.jopt-simple:jopt-simple:5.0.4") - api("net.sourceforge.htmlunit:htmlunit:2.70.0") + api("net.sourceforge.htmlunit:htmlunit:2.67.0") api("org.apache-extras.beanshell:bsh:2.0b6") api("org.apache.activemq:activemq-broker:5.17.4") api("org.apache.activemq:activemq-kahadb-store:5.17.4") @@ -97,23 +97,22 @@ dependencies { api("org.apache.derby:derby:10.16.1.1") api("org.apache.derby:derbyclient:10.16.1.1") api("org.apache.derby:derbytools:10.16.1.1") - api("org.apache.httpcomponents.client5:httpclient5:5.2.1") - api("org.apache.httpcomponents.core5:httpcore5-reactive:5.2.1") + api("org.apache.httpcomponents.client5:httpclient5:5.2") + api("org.apache.httpcomponents.core5:httpcore5-reactive:5.2") api("org.apache.poi:poi-ooxml:5.2.3") - api("org.apache.tomcat.embed:tomcat-embed-core:10.1.10") - api("org.apache.tomcat.embed:tomcat-embed-websocket:10.1.10") - api("org.apache.tomcat:tomcat-util:10.1.10") - api("org.apache.tomcat:tomcat-websocket:10.1.10") - api("org.aspectj:aspectjrt:1.9.19") - api("org.aspectj:aspectjtools:1.9.19") - api("org.aspectj:aspectjweaver:1.9.19") - api("org.assertj:assertj-core:3.24.2") - api("org.awaitility:awaitility:4.2.0") - api("org.bouncycastle:bcpkix-jdk18on:1.72") - api("org.codehaus.jettison:jettison:1.5.4") - api("org.crac:crac:0.1.3") - api("org.dom4j:dom4j:2.1.4") - api("org.eclipse.jetty:jetty-reactive-httpclient:3.0.8") + api("org.apache.tomcat.embed:tomcat-embed-core:10.1.1") + api("org.apache.tomcat.embed:tomcat-embed-websocket:10.1.1") + api("org.apache.tomcat:tomcat-util:10.1.1") + api("org.apache.tomcat:tomcat-websocket:10.1.1") + api("org.aspectj:aspectjrt:1.9.9.1") + api("org.aspectj:aspectjtools:1.9.9.1") + api("org.aspectj:aspectjweaver:1.9.9.1") + api("org.assertj:assertj-core:3.23.1") + api("org.awaitility:awaitility:3.1.6") + api("org.bouncycastle:bcpkix-jdk18on:1.71") + api("org.codehaus.jettison:jettison:1.3.8") + api("org.dom4j:dom4j:2.1.3") + api("org.eclipse.jetty:jetty-reactive-httpclient:3.0.7") api("org.eclipse.persistence:org.eclipse.persistence.jpa:3.0.3") api("org.eclipse:yasson:2.0.4") api("org.ehcache:ehcache:3.10.8") @@ -126,11 +125,11 @@ dependencies { api("org.glassfish:jakarta.el:4.0.2") api("org.graalvm.sdk:graal-sdk:22.3.1") api("org.hamcrest:hamcrest:2.2") - api("org.hibernate:hibernate-core-jakarta:5.6.15.Final") + api("org.hibernate:hibernate-core-jakarta:5.6.14.Final") api("org.hibernate:hibernate-validator:7.0.5.Final") api("org.hsqldb:hsqldb:2.7.1") api("org.javamoney:moneta:1.4.2") - api("org.jruby:jruby:9.4.3.0") + api("org.jruby:jruby:9.4.0.0") api("org.junit.support:testng-engine:1.0.4") api("org.mozilla:rhino:1.7.14") api("org.ogce:xpp3:1.1.6") @@ -138,13 +137,13 @@ dependencies { api("org.quartz-scheduler:quartz:2.3.2") api("org.seleniumhq.selenium:htmlunit-driver:2.70.0") api("org.seleniumhq.selenium:selenium-java:3.141.59") - api("org.skyscreamer:jsonassert:1.5.1") - api("org.slf4j:slf4j-api:2.0.7") - api("org.testng:testng:7.8.0") + api("org.skyscreamer:jsonassert:1.5.0") + api("org.slf4j:slf4j-api:2.0.5") + api("org.testng:testng:7.6.1") api("org.webjars:underscorejs:1.8.3") api("org.webjars:webjars-locator-core:0.52") - api("org.xmlunit:xmlunit-assertj:2.9.1") - api("org.xmlunit:xmlunit-matchers:2.9.1") - api("org.yaml:snakeyaml:2.0") + api("org.xmlunit:xmlunit-assertj:2.9.0") + api("org.xmlunit:xmlunit-matchers:2.9.0") + api("org.yaml:snakeyaml:1.30") } } diff --git a/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequest.java b/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequest.java index ec1e6d33ee5f..fe3614935240 100644 --- a/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequest.java +++ b/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequest.java @@ -84,6 +84,8 @@ HttpContext getHttpContext() { return this.httpContext; } + + @SuppressWarnings("deprecation") // execute(ClassicHttpRequest, HttpContext) @Override protected ClientHttpResponse executeInternal(HttpHeaders headers, @Nullable Body body) throws IOException { addHeaders(this.httpRequest, headers); diff --git a/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java b/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java index f7c9119c46e8..ed99c75ddc1b 100644 --- a/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java @@ -139,6 +139,21 @@ public void setConnectionRequestTimeout(int connectionRequestTimeout) { this.connectionRequestTimeout = connectionRequestTimeout; } + /** + * As of version 6.0, setting this property has no effect. + *

To change the socket read timeout, use {@link SocketConfig.Builder#setSoTimeout(Timeout)}, + * supply the resulting {@link SocketConfig} to + * {@link org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder#setDefaultSocketConfig(SocketConfig)}, + * use the resulting connection manager for + * {@link org.apache.hc.client5.http.impl.classic.HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}, + * and supply the built {@link HttpClient} to {@link #HttpComponentsClientHttpRequestFactory(HttpClient)}. + * @deprecated as of 6.0, in favor of {@link SocketConfig.Builder#setSoTimeout(Timeout)}, see above. + */ + @Deprecated(since = "6.0", forRemoval = true) + public void setReadTimeout(int timeout) { + logger.warn("HttpComponentsClientHttpRequestFactory.setReadTimeout has no effect"); + } + /** * Indicates whether this request factory should buffer the request body internally. *

Default is {@code true}. When sending large amounts of data via POST or PUT, it is