Skip to content

Commit 76a006a

Browse files
committed
#59 - Add support for setting connection timeout on the Builder
1 parent 1379563 commit 76a006a

File tree

7 files changed

+34
-2
lines changed

7 files changed

+34
-2
lines changed

client/src/main/java/io/avaje/http/client/DBaseBuilder.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ abstract class DBaseBuilder {
2323
java.net.http.HttpClient client;
2424
String baseUrl;
2525
boolean requestLogging = true;
26+
Duration connectionTimeout = Duration.ofSeconds(20);
2627
Duration requestTimeout = Duration.ofSeconds(20);
2728
BodyAdapter bodyAdapter;
2829
RetryHandler retryHandler;
@@ -92,9 +93,9 @@ private RequestIntercept buildIntercept() {
9293
}
9394

9495
private java.net.http.HttpClient defaultClient() {
95-
final java.net.http.HttpClient.Builder builder = java.net.http.HttpClient.newBuilder()
96+
final var builder = java.net.http.HttpClient.newBuilder()
9697
.followRedirects(redirect)
97-
.connectTimeout(Duration.ofSeconds(20));
98+
.connectTimeout(connectionTimeout);
9899
if (cookieHandler != null) {
99100
builder.cookieHandler(cookieHandler);
100101
}

client/src/main/java/io/avaje/http/client/DHttpClientBuilder.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ public HttpClient.Builder baseUrl(String baseUrl) {
2727
return this;
2828
}
2929

30+
@Override
31+
public HttpClient.Builder connectionTimeout(Duration connectionTimeout) {
32+
this.connectionTimeout = connectionTimeout;
33+
return this;
34+
}
35+
3036
@Override
3137
public HttpClient.Builder requestTimeout(Duration requestTimeout) {
3238
this.requestTimeout = requestTimeout;

client/src/main/java/io/avaje/http/client/DHttpClientContextBuilder.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ public HttpClientContext.Builder baseUrl(String baseUrl) {
2828
return this;
2929
}
3030

31+
@Override
32+
public HttpClientContext.Builder connectionTimeout(Duration connectionTimeout) {
33+
this.connectionTimeout = connectionTimeout;
34+
return this;
35+
}
36+
3137
@Override
3238
public HttpClientContext.Builder requestTimeout(Duration requestTimeout) {
3339
this.requestTimeout = requestTimeout;

client/src/main/java/io/avaje/http/client/HttpClient.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,13 @@ interface Builder {
125125
*/
126126
Builder baseUrl(String baseUrl);
127127

128+
/**
129+
* Set the connection timeout to use.
130+
*
131+
* @see java.net.http.HttpClient.Builder#connectTimeout(Duration)
132+
*/
133+
Builder connectionTimeout(Duration connectionTimeout);
134+
128135
/**
129136
* Set the default request timeout.
130137
*

client/src/main/java/io/avaje/http/client/HttpClientContext.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,13 @@ interface Builder {
102102
*/
103103
Builder baseUrl(String baseUrl);
104104

105+
/**
106+
* Set the connection timeout to use.
107+
*
108+
* @see java.net.http.HttpClient.Builder#connectTimeout(Duration)
109+
*/
110+
Builder connectionTimeout(Duration connectionTimeout);
111+
105112
/**
106113
* Set the default request timeout.
107114
*

client/src/test/java/io/avaje/http/client/BaseWebTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import org.junit.jupiter.api.AfterAll;
77
import org.junit.jupiter.api.BeforeAll;
88

9+
import java.time.Duration;
10+
911
public class BaseWebTest {
1012

1113
static Javalin webServer;
@@ -26,6 +28,8 @@ public static void shutdown() {
2628
public static HttpClientContext client() {
2729
return HttpClientContext.builder()
2830
.baseUrl(baseUrl)
31+
.connectionTimeout(Duration.ofSeconds(1))
32+
.requestTimeout(Duration.ofSeconds(1))
2933
.bodyAdapter(new JacksonBodyAdapter(new ObjectMapper()))
3034
.build();
3135
}

client/src/test/java/io/avaje/http/client/HelloControllerTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class HelloControllerTest extends BaseWebTest {
3636
void newClientTest() {
3737
HttpClient client = HttpClient.builder()
3838
.baseUrl("http://localhost:8887")
39+
.connectionTimeout(Duration.ofSeconds(1))
3940
.bodyAdapter(new JacksonBodyAdapter())
4041
.build();
4142

0 commit comments

Comments
 (0)