mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-17 16:39:29 +00:00
Merge branch '6.2.x'
This commit is contained in:
+1
-46
@@ -38,7 +38,6 @@ import org.apache.hc.client5.http.impl.classic.HttpClients;
|
||||
import org.apache.hc.client5.http.io.HttpClientConnectionManager;
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.core5.http.ClassicHttpRequest;
|
||||
import org.apache.hc.core5.http.io.SocketConfig;
|
||||
import org.apache.hc.core5.http.protocol.HttpContext;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
@@ -68,8 +67,6 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest
|
||||
|
||||
private @Nullable BiFunction<HttpMethod, URI, HttpContext> httpContextFactory;
|
||||
|
||||
private long connectTimeout = -1;
|
||||
|
||||
private long connectionRequestTimeout = -1;
|
||||
|
||||
private long readTimeout = -1;
|
||||
@@ -110,44 +107,6 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest
|
||||
return this.httpClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the connection timeout for the underlying {@link RequestConfig}.
|
||||
* A timeout value of 0 specifies an infinite timeout.
|
||||
* <p>Additional properties can be configured by specifying a
|
||||
* {@link RequestConfig} instance on a custom {@link HttpClient}.
|
||||
* <p>This options does not affect connection timeouts for SSL
|
||||
* handshakes or CONNECT requests; for that, it is required to
|
||||
* use the {@link SocketConfig} on the
|
||||
* {@link HttpClient} itself.
|
||||
* @param connectTimeout the timeout value in milliseconds
|
||||
* @see RequestConfig#getConnectTimeout()
|
||||
* @see SocketConfig#getSoTimeout
|
||||
*/
|
||||
public void setConnectTimeout(int connectTimeout) {
|
||||
Assert.isTrue(connectTimeout >= 0, "Timeout must be a non-negative value");
|
||||
this.connectTimeout = connectTimeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the connection timeout for the underlying {@link RequestConfig}.
|
||||
* A timeout value of 0 specifies an infinite timeout.
|
||||
* <p>Additional properties can be configured by specifying a
|
||||
* {@link RequestConfig} instance on a custom {@link HttpClient}.
|
||||
* <p>This options does not affect connection timeouts for SSL
|
||||
* handshakes or CONNECT requests; for that, it is required to
|
||||
* use the {@link SocketConfig} on the
|
||||
* {@link HttpClient} itself.
|
||||
* @param connectTimeout the timeout as a {@code Duration}.
|
||||
* @since 6.1
|
||||
* @see RequestConfig#getConnectTimeout()
|
||||
* @see SocketConfig#getSoTimeout
|
||||
*/
|
||||
public void setConnectTimeout(Duration connectTimeout) {
|
||||
Assert.notNull(connectTimeout, "ConnectTimeout must not be null");
|
||||
Assert.isTrue(!connectTimeout.isNegative(), "Timeout must be a non-negative value");
|
||||
this.connectTimeout = connectTimeout.toMillis();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the timeout in milliseconds used when requesting a connection
|
||||
* from the connection manager using the underlying {@link RequestConfig}.
|
||||
@@ -295,16 +254,12 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest
|
||||
* @return the merged request config
|
||||
* @since 4.2
|
||||
*/
|
||||
@SuppressWarnings("deprecation") // setConnectTimeout
|
||||
protected RequestConfig mergeRequestConfig(RequestConfig clientConfig) {
|
||||
if (this.connectTimeout == -1 && this.connectionRequestTimeout == -1 && this.readTimeout == -1) { // nothing to merge
|
||||
if (this.connectionRequestTimeout == -1 && this.readTimeout == -1) { // nothing to merge
|
||||
return clientConfig;
|
||||
}
|
||||
|
||||
RequestConfig.Builder builder = RequestConfig.copy(clientConfig);
|
||||
if (this.connectTimeout >= 0) {
|
||||
builder.setConnectTimeout(this.connectTimeout, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
if (this.connectionRequestTimeout >= 0) {
|
||||
builder.setConnectionRequestTimeout(this.connectionRequestTimeout, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
-7
@@ -61,11 +61,9 @@ class HttpComponentsClientHttpRequestFactoryTests extends AbstractHttpRequestFac
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("deprecation")
|
||||
void assertCustomConfig() throws Exception {
|
||||
HttpClient httpClient = HttpClientBuilder.create().build();
|
||||
HttpComponentsClientHttpRequestFactory hrf = new HttpComponentsClientHttpRequestFactory(httpClient);
|
||||
hrf.setConnectTimeout(1234);
|
||||
hrf.setConnectionRequestTimeout(4321);
|
||||
hrf.setReadTimeout(5678);
|
||||
|
||||
@@ -76,7 +74,6 @@ class HttpComponentsClientHttpRequestFactoryTests extends AbstractHttpRequestFac
|
||||
assertThat(config).as("Request config should be set").isNotNull();
|
||||
assertThat(config).as("Wrong request config type " + config.getClass().getName()).isInstanceOf(RequestConfig.class);
|
||||
RequestConfig requestConfig = (RequestConfig) config;
|
||||
assertThat(requestConfig.getConnectTimeout()).as("Wrong custom connection timeout").isEqualTo(Timeout.of(1234, MILLISECONDS));
|
||||
assertThat(requestConfig.getConnectionRequestTimeout()).as("Wrong custom connection request timeout").isEqualTo(Timeout.of(4321, MILLISECONDS));
|
||||
assertThat(requestConfig.getResponseTimeout()).as("Wrong custom response timeout").isEqualTo(Timeout.of(5678, MILLISECONDS));
|
||||
}
|
||||
@@ -103,10 +100,8 @@ class HttpComponentsClientHttpRequestFactoryTests extends AbstractHttpRequestFac
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("deprecation")
|
||||
void localSettingsOverrideClientDefaultSettings() throws Exception {
|
||||
RequestConfig defaultConfig = RequestConfig.custom()
|
||||
.setConnectTimeout(1234, MILLISECONDS)
|
||||
.setConnectionRequestTimeout(6789, MILLISECONDS)
|
||||
.setResponseTimeout(4321, MILLISECONDS)
|
||||
.build();
|
||||
@@ -116,11 +111,9 @@ class HttpComponentsClientHttpRequestFactoryTests extends AbstractHttpRequestFac
|
||||
given(configurable.getConfig()).willReturn(defaultConfig);
|
||||
|
||||
HttpComponentsClientHttpRequestFactory hrf = new HttpComponentsClientHttpRequestFactory(client);
|
||||
hrf.setConnectTimeout(5000);
|
||||
hrf.setReadTimeout(Duration.ofMillis(4000));
|
||||
|
||||
RequestConfig requestConfig = retrieveRequestConfig(hrf);
|
||||
assertThat(requestConfig.getConnectTimeout()).isEqualTo(Timeout.of(5000, MILLISECONDS));
|
||||
assertThat(requestConfig.getConnectionRequestTimeout()).isEqualTo(Timeout.of(6789, MILLISECONDS));
|
||||
assertThat(requestConfig.getResponseTimeout()).isEqualTo(Timeout.of(4000, MILLISECONDS));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user