Skip to content

Commit 8dc7883

Browse files
committed
move JDK HTTP client specific config (connectTimeout and readTimeout) to separate class (JDKHttpClientConfig)
1 parent dae4fe6 commit 8dc7883

9 files changed

Lines changed: 118 additions & 42 deletions

File tree

scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.github.scribejava.core.builder.api.BaseApi;
44
import com.github.scribejava.core.httpclient.HttpClient;
55
import com.github.scribejava.core.httpclient.HttpClientConfig;
6+
import com.github.scribejava.core.httpclient.jdk.JDKHttpClientConfig;
67
import com.github.scribejava.core.model.OAuthConfig;
78
import com.github.scribejava.core.model.OAuthConstants;
89
import com.github.scribejava.core.model.SignatureType;
@@ -26,11 +27,6 @@ public class ServiceBuilder {
2627
private String responseType = "code";
2728
private String userAgent;
2829

29-
//sync version only
30-
private Integer connectTimeout;
31-
private Integer readTimeout;
32-
33-
//not-default httpclient only
3430
private HttpClientConfig httpClientConfig;
3531
private HttpClient httpClient;
3632

@@ -123,15 +119,43 @@ public ServiceBuilder responseType(String responseType) {
123119
return this;
124120
}
125121

122+
/**
123+
*
124+
* @param connectTimeout connectTimeout
125+
* @return ServiceBuilder to chain methods
126+
* @deprecated use {@link com.github.scribejava.core.httpclient.jdk.JDKHttpClientConfig} and
127+
* <br> {@link #httpClientConfig(com.github.scribejava.core.httpclient.HttpClientConfig) }
128+
*/
129+
@Deprecated
126130
public ServiceBuilder connectTimeout(Integer connectTimeout) {
127-
Preconditions.checkNotNull(connectTimeout, "Connection timeout can't be null");
128-
this.connectTimeout = connectTimeout;
131+
final JDKHttpClientConfig jdkHttpClientConfig;
132+
if (httpClientConfig instanceof JDKHttpClientConfig) {
133+
jdkHttpClientConfig = (JDKHttpClientConfig) httpClientConfig;
134+
} else {
135+
jdkHttpClientConfig = new JDKHttpClientConfig();
136+
httpClientConfig = jdkHttpClientConfig;
137+
}
138+
jdkHttpClientConfig.setConnectTimeout(connectTimeout);
129139
return this;
130140
}
131141

142+
/**
143+
*
144+
* @param readTimeout readTimeout
145+
* @return ServiceBuilder to chain methods
146+
* @deprecated use {@link com.github.scribejava.core.httpclient.jdk.JDKHttpClientConfig} and
147+
* <br> {@link #httpClientConfig(com.github.scribejava.core.httpclient.HttpClientConfig) }
148+
*/
149+
@Deprecated
132150
public ServiceBuilder readTimeout(Integer readTimeout) {
133-
Preconditions.checkNotNull(readTimeout, "Read timeout can't be null");
134-
this.readTimeout = readTimeout;
151+
final JDKHttpClientConfig jdkHttpClientConfig;
152+
if (httpClientConfig instanceof JDKHttpClientConfig) {
153+
jdkHttpClientConfig = (JDKHttpClientConfig) httpClientConfig;
154+
} else {
155+
jdkHttpClientConfig = new JDKHttpClientConfig();
156+
httpClientConfig = jdkHttpClientConfig;
157+
}
158+
jdkHttpClientConfig.setReadTimeout(readTimeout);
135159
return this;
136160
}
137161

@@ -169,7 +193,7 @@ public void checkPreconditions() {
169193
private OAuthConfig createConfig() {
170194
checkPreconditions();
171195
return new OAuthConfig(apiKey, apiSecret, callback, signatureType, scope, debugStream, state, responseType,
172-
userAgent, connectTimeout, readTimeout, httpClientConfig, httpClient);
196+
userAgent, httpClientConfig, httpClient);
173197
}
174198

175199
/**
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.github.scribejava.core.httpclient.jdk;
2+
3+
import com.github.scribejava.core.httpclient.HttpClientConfig;
4+
5+
public class JDKHttpClientConfig implements HttpClientConfig {
6+
7+
private Integer connectTimeout;
8+
private Integer readTimeout;
9+
10+
@Override
11+
public JDKHttpClientConfig createDefaultConfig() {
12+
return defaultConfig();
13+
}
14+
15+
public static JDKHttpClientConfig defaultConfig() {
16+
return new JDKHttpClientConfig();
17+
}
18+
19+
public Integer getConnectTimeout() {
20+
return connectTimeout;
21+
}
22+
23+
public void setConnectTimeout(Integer connectTimeout) {
24+
this.connectTimeout = connectTimeout;
25+
}
26+
27+
public Integer getReadTimeout() {
28+
return readTimeout;
29+
}
30+
31+
public void setReadTimeout(Integer readTimeout) {
32+
this.readTimeout = readTimeout;
33+
}
34+
}

scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.github.scribejava.core.model;
22

3+
import com.github.scribejava.core.httpclient.HttpClient;
34
import com.github.scribejava.core.httpclient.HttpClientConfig;
5+
import com.github.scribejava.core.httpclient.jdk.JDKHttpClientConfig;
46
import java.io.IOException;
57
import java.io.OutputStream;
68

@@ -19,22 +21,16 @@ public class OAuthConfig {
1921
private final String responseType;
2022
private final String userAgent;
2123

22-
//sync only version
23-
private final Integer connectTimeout;
24-
private final Integer readTimeout;
25-
26-
//async version only
2724
private HttpClientConfig httpClientConfig;
28-
private com.github.scribejava.core.httpclient.HttpClient httpClient;
25+
private HttpClient httpClient;
2926

3027
public OAuthConfig(String key, String secret) {
31-
this(key, secret, null, null, null, null, null, null, null, null, null, null, null);
28+
this(key, secret, null, null, null, null, null, null, null, null, null);
3229
}
3330

3431
public OAuthConfig(String apiKey, String apiSecret, String callback, SignatureType signatureType, String scope,
35-
OutputStream debugStream, String state, String responseType, String userAgent, Integer connectTimeout,
36-
Integer readTimeout, HttpClientConfig httpClientConfig,
37-
com.github.scribejava.core.httpclient.HttpClient httpClient) {
32+
OutputStream debugStream, String state, String responseType, String userAgent,
33+
HttpClientConfig httpClientConfig, HttpClient httpClient) {
3834
this.apiKey = apiKey;
3935
this.apiSecret = apiSecret;
4036
this.callback = callback;
@@ -44,8 +40,6 @@ public OAuthConfig(String apiKey, String apiSecret, String callback, SignatureTy
4440
this.state = state;
4541
this.responseType = responseType;
4642
this.userAgent = userAgent;
47-
this.connectTimeout = connectTimeout;
48-
this.readTimeout = readTimeout;
4943
this.httpClientConfig = httpClientConfig;
5044
this.httpClient = httpClient;
5145
}
@@ -93,19 +87,37 @@ public void log(String message) {
9387
}
9488
}
9589

90+
/**
91+
*
92+
* @return Connect Timeout
93+
* @deprecated use {@link JDKHttpClientConfig}
94+
*/
95+
@Deprecated
9696
public Integer getConnectTimeout() {
97-
return connectTimeout;
97+
if (httpClientConfig instanceof JDKHttpClientConfig) {
98+
return ((JDKHttpClientConfig) httpClientConfig).getConnectTimeout();
99+
}
100+
return null;
98101
}
99102

103+
/**
104+
*
105+
* @return Read Timeout
106+
* @deprecated use {@link JDKHttpClientConfig}
107+
*/
108+
@Deprecated
100109
public Integer getReadTimeout() {
101-
return readTimeout;
110+
if (httpClientConfig instanceof JDKHttpClientConfig) {
111+
return ((JDKHttpClientConfig) httpClientConfig).getReadTimeout();
112+
}
113+
return null;
102114
}
103115

104116
public HttpClientConfig getHttpClientConfig() {
105117
return httpClientConfig;
106118
}
107119

108-
public com.github.scribejava.core.httpclient.HttpClient getHttpClient() {
120+
public HttpClient getHttpClient() {
109121
return httpClient;
110122
}
111123
}

scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequest.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Map;
66
import com.github.scribejava.core.exceptions.OAuthConnectionException;
77
import com.github.scribejava.core.exceptions.OAuthException;
8+
import com.github.scribejava.core.httpclient.jdk.JDKHttpClientConfig;
89
import java.io.File;
910
import java.net.URL;
1011
import java.net.UnknownHostException;
@@ -29,26 +30,27 @@ public OAuthRequest(Verb verb, String url, OAuthConfig config) {
2930
this(verb, url);
3031
}
3132

32-
public Response send(OAuthConfig config) {
33+
public Response send(String userAgent, JDKHttpClientConfig httpClientConfig) {
3334
try {
34-
return doSend(config, isFollowRedirects(), getHeaders(), getVerb(), getCompleteUrl(), this);
35+
return doSend(userAgent, httpClientConfig, isFollowRedirects(), getHeaders(), getVerb(), getCompleteUrl(),
36+
this);
3537
} catch (IOException | RuntimeException e) {
3638
throw new OAuthConnectionException(getCompleteUrl(), e);
3739
}
3840
}
3941

40-
private static Response doSend(OAuthConfig config, boolean followRedirects, Map<String, String> headers,
41-
Verb httpVerb, String completeUrl, OAuthRequest request) throws IOException {
42+
private static Response doSend(String userAgent, JDKHttpClientConfig httpClientConfig, boolean followRedirects,
43+
Map<String, String> headers, Verb httpVerb, String completeUrl, OAuthRequest request) throws IOException {
4244
final HttpURLConnection connection = (HttpURLConnection) new URL(completeUrl).openConnection();
4345
connection.setInstanceFollowRedirects(followRedirects);
4446
connection.setRequestMethod(httpVerb.name());
45-
if (config.getConnectTimeout() != null) {
46-
connection.setConnectTimeout(config.getConnectTimeout());
47+
if (httpClientConfig.getConnectTimeout() != null) {
48+
connection.setConnectTimeout(httpClientConfig.getConnectTimeout());
4749
}
48-
if (config.getReadTimeout() != null) {
49-
connection.setReadTimeout(config.getReadTimeout());
50+
if (httpClientConfig.getReadTimeout() != null) {
51+
connection.setReadTimeout(httpClientConfig.getReadTimeout());
5052
}
51-
addHeaders(connection, headers, config.getUserAgent());
53+
addHeaders(connection, headers, userAgent);
5254
if (httpVerb == Verb.POST || httpVerb == Verb.PUT || httpVerb == Verb.DELETE) {
5355
final File filePayload = request.getFilePayload();
5456
if (filePayload != null) {

scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.github.scribejava.core.model.AbstractRequest;
55
import com.github.scribejava.core.httpclient.HttpClient;
66
import com.github.scribejava.core.httpclient.HttpClientConfig;
7+
import com.github.scribejava.core.httpclient.jdk.JDKHttpClientConfig;
78
import com.github.scribejava.core.model.OAuthAsyncRequestCallback;
89
import com.github.scribejava.core.model.OAuthConfig;
910
import com.github.scribejava.core.model.OAuthRequest;
@@ -102,6 +103,9 @@ public Response execute(OAuthRequestAsync request) throws InterruptedException,
102103
}
103104

104105
public Response execute(OAuthRequest request) {
105-
return request.send(config);
106+
final HttpClientConfig httpClientConfig = config.getHttpClientConfig();
107+
return request.send(config.getUserAgent(),
108+
httpClientConfig instanceof JDKHttpClientConfig ? (JDKHttpClientConfig) httpClientConfig
109+
: JDKHttpClientConfig.defaultConfig());
106110
}
107111
}

scribejava-httpclient-ahc/src/main/java/com/github/scribejava/httpclient/ahc/AhcHttpClientConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ public AsyncHttpClientConfig getClientConfig() {
1616
}
1717

1818
@Override
19-
public HttpClientConfig createDefaultConfig() {
19+
public AhcHttpClientConfig createDefaultConfig() {
2020
return defaultConfig();
2121
}
2222

23-
public static HttpClientConfig defaultConfig() {
23+
public static AhcHttpClientConfig defaultConfig() {
2424
return new AhcHttpClientConfig(null);
2525
}
2626
}

scribejava-httpclient-ning/src/main/java/com/github/scribejava/httpclient/ning/NingHttpClientConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ public AsyncHttpClientConfig getConfig() {
2525
}
2626

2727
@Override
28-
public HttpClientConfig createDefaultConfig() {
28+
public NingHttpClientConfig createDefaultConfig() {
2929
return defaultConfig();
3030
}
3131

32-
public static HttpClientConfig defaultConfig() {
32+
public static NingHttpClientConfig defaultConfig() {
3333
return new NingHttpClientConfig(null);
3434
}
3535
}

scribejava-httpclient-okhttp/src/main/java/com/github/scribejava/httpclient/okhttp/OkHttpHttpClientConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ public OkHttpClient.Builder getClientBuilder() {
1616
}
1717

1818
@Override
19-
public HttpClientConfig createDefaultConfig() {
19+
public OkHttpHttpClientConfig createDefaultConfig() {
2020
return defaultConfig();
2121
}
2222

23-
public static HttpClientConfig defaultConfig() {
23+
public static OkHttpHttpClientConfig defaultConfig() {
2424
return new OkHttpHttpClientConfig(null);
2525
}
2626
}

scribejava-httpclient-okhttp/src/test/java/com/github/scribejava/httpclient/okhttp/OkHttpHttpClientTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class OkHttpHttpClientTest {
2727
public void setUp() {
2828
final HttpClient client = new OkHttpHttpClient(new OkHttpClient());
2929
oAuthService = new OAuth20Service(null,
30-
new OAuthConfig("test", "test", null, null, null, null, null, null, null, null, null, null, client));
30+
new OAuthConfig("test", "test", null, null, null, null, null, null, null, null, client));
3131
}
3232

3333

0 commit comments

Comments
 (0)