From 5b159a6bd099ca2801223ab7840d76205a3908fa Mon Sep 17 00:00:00 2001 From: Dmytro Nosan Date: Tue, 5 Jun 2018 13:00:05 +0300 Subject: [PATCH] Use Duration in HttpWebServiceMessageSenderBuilder Closes gh-13364 --- .../HttpWebServiceMessageSenderBuilder.java | 24 ++++++++++--------- ...eSenderBuilderOkHttp3IntegrationTests.java | 7 ++++-- ...geSenderBuilderSimpleIntegrationTests.java | 7 ++++-- ...tpWebServiceMessageSenderBuilderTests.java | 10 +++++--- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilder.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilder.java index 1192a9a1f6..2c97d952ba 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilder.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilder.java @@ -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 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) { diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderOkHttp3IntegrationTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderOkHttp3IntegrationTests.java index cfce3e2348..6c1b93dc81 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderOkHttp3IntegrationTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderOkHttp3IntegrationTests.java @@ -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, diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderSimpleIntegrationTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderSimpleIntegrationTests.java index 4f3b93bfac..4892675c55 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderSimpleIntegrationTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderSimpleIntegrationTests.java @@ -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")) diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderTests.java index 82cf988dbd..02cffe982f 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilderTests.java @@ -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);