Merge pull request #13364 from nosan:http-webservice-sender-duration-int
* pr/13364: Use Duration in HttpWebServiceMessageSenderBuilder
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package org.springframework.boot.webservices.client;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.time.Duration;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import org.springframework.boot.web.client.ClientHttpRequestFactorySupplier;
|
||||
@@ -35,28 +36,28 @@ import org.springframework.ws.transport.http.ClientHttpRequestMessageSender;
|
||||
*/
|
||||
public class HttpWebServiceMessageSenderBuilder {
|
||||
|
||||
private Integer connectTimeout;
|
||||
private Duration connectTimeout;
|
||||
|
||||
private Integer readTimeout;
|
||||
private Duration readTimeout;
|
||||
|
||||
private Supplier<ClientHttpRequestFactory> requestFactorySupplier;
|
||||
|
||||
/**
|
||||
* Set the connection timeout in milliseconds.
|
||||
* @param connectTimeout the connection timeout in milliseconds
|
||||
* Set the connection timeout.
|
||||
* @param connectTimeout the connection timeout
|
||||
* @return a new builder instance
|
||||
*/
|
||||
public HttpWebServiceMessageSenderBuilder setConnectTimeout(int connectTimeout) {
|
||||
public HttpWebServiceMessageSenderBuilder setConnectTimeout(Duration connectTimeout) {
|
||||
this.connectTimeout = connectTimeout;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the read timeout in milliseconds.
|
||||
* @param readTimeout the read timeout in milliseconds
|
||||
* Set the read timeout.
|
||||
* @param readTimeout the read timeout
|
||||
* @return a new builder instance
|
||||
*/
|
||||
public HttpWebServiceMessageSenderBuilder setReadTimeout(int readTimeout) {
|
||||
public HttpWebServiceMessageSenderBuilder setReadTimeout(Duration readTimeout) {
|
||||
this.readTimeout = readTimeout;
|
||||
return this;
|
||||
}
|
||||
@@ -95,17 +96,18 @@ public class HttpWebServiceMessageSenderBuilder {
|
||||
*/
|
||||
private static class TimeoutRequestFactoryCustomizer {
|
||||
|
||||
private final int timeout;
|
||||
private final Duration timeout;
|
||||
|
||||
private final String methodName;
|
||||
|
||||
TimeoutRequestFactoryCustomizer(int timeout, String methodName) {
|
||||
TimeoutRequestFactoryCustomizer(Duration timeout, String methodName) {
|
||||
this.timeout = timeout;
|
||||
this.methodName = methodName;
|
||||
}
|
||||
|
||||
public void customize(ClientHttpRequestFactory factory) {
|
||||
ReflectionUtils.invokeMethod(findMethod(factory), factory, this.timeout);
|
||||
ReflectionUtils.invokeMethod(findMethod(factory), factory,
|
||||
Math.toIntExact(this.timeout.toMillis()));
|
||||
}
|
||||
|
||||
private Method findMethod(ClientHttpRequestFactory factory) {
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.springframework.boot.webservices.client;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -50,8 +52,9 @@ public class HttpWebServiceMessageSenderBuilderOkHttp3IntegrationTests {
|
||||
|
||||
@Test
|
||||
public void buildWithCustomTimeouts() {
|
||||
WebServiceMessageSender messageSender = this.builder.setConnectTimeout(5000)
|
||||
.setReadTimeout(2000).build();
|
||||
WebServiceMessageSender messageSender = this.builder
|
||||
.setConnectTimeout(Duration.ofSeconds(5))
|
||||
.setReadTimeout(Duration.ofSeconds(2)).build();
|
||||
OkHttp3ClientHttpRequestFactory factory = assertOkHttp3RequestFactory(
|
||||
messageSender);
|
||||
OkHttpClient client = (OkHttpClient) ReflectionTestUtils.getField(factory,
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.springframework.boot.webservices.client;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -49,8 +51,9 @@ public class HttpWebServiceMessageSenderBuilderSimpleIntegrationTests {
|
||||
|
||||
@Test
|
||||
public void buildWithCustomTimeouts() {
|
||||
WebServiceMessageSender messageSender = this.builder.setConnectTimeout(5000)
|
||||
.setReadTimeout(2000).build();
|
||||
WebServiceMessageSender messageSender = this.builder
|
||||
.setConnectTimeout(Duration.ofSeconds(5))
|
||||
.setReadTimeout(Duration.ofSeconds(2)).build();
|
||||
SimpleClientHttpRequestFactory requestFactory = assertSimpleClientRequestFactory(
|
||||
messageSender);
|
||||
assertThat(ReflectionTestUtils.getField(requestFactory, "connectTimeout"))
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.springframework.boot.webservices.client;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
import org.apache.http.client.config.RequestConfig;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -50,7 +52,8 @@ public class HttpWebServiceMessageSenderBuilderTests {
|
||||
ClientHttpRequestMessageSender messageSender = build(
|
||||
new HttpWebServiceMessageSenderBuilder()
|
||||
.requestFactory(SimpleClientHttpRequestFactory::new)
|
||||
.setConnectTimeout(5000).setReadTimeout(2000));
|
||||
.setConnectTimeout(Duration.ofSeconds(5))
|
||||
.setReadTimeout(Duration.ofSeconds(2)));
|
||||
SimpleClientHttpRequestFactory requestFactory = (SimpleClientHttpRequestFactory) messageSender
|
||||
.getRequestFactory();
|
||||
assertThat(ReflectionTestUtils.getField(requestFactory, "connectTimeout"))
|
||||
@@ -62,8 +65,9 @@ public class HttpWebServiceMessageSenderBuilderTests {
|
||||
@Test
|
||||
public void buildUsesHttpComponentsByDefault() {
|
||||
ClientHttpRequestMessageSender messageSender = build(
|
||||
new HttpWebServiceMessageSenderBuilder().setConnectTimeout(5000)
|
||||
.setReadTimeout(2000));
|
||||
new HttpWebServiceMessageSenderBuilder()
|
||||
.setConnectTimeout(Duration.ofSeconds(5))
|
||||
.setReadTimeout(Duration.ofSeconds(2)));
|
||||
ClientHttpRequestFactory requestFactory = messageSender.getRequestFactory();
|
||||
assertThat(requestFactory)
|
||||
.isInstanceOf(HttpComponentsClientHttpRequestFactory.class);
|
||||
|
||||
Reference in New Issue
Block a user