Skip to content

Commit d34c3b0

Browse files
committed
ScribeJava shouldn't require any async http client provider to be on the classpath (neither ning neither AHC)
1 parent 42deb8d commit d34c3b0

File tree

3 files changed

+83
-62
lines changed

3 files changed

+83
-62
lines changed

changelog

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
[SNAPSHOT]
2+
* FIX: ScribeJava shouldn't require any async http client provider to be on the classpath (neither ning neither AHC)
3+
14
[2.7.1]
25
* do not hide checked IOException in unchecked IllegalArgumentException
36

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

Lines changed: 78 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,10 @@ public OAuthService(OAuthConfig config) {
4949
}
5050

5151
if (ahcConfig == null) {
52-
final String ningAsyncHttpProviderClassName = config.getNingAsyncHttpProviderClassName();
53-
ningAsyncHttpClient = ningAsyncHttpProviderClassName == null
54-
? new com.ning.http.client.AsyncHttpClient(ningConfig)
55-
: new com.ning.http.client.AsyncHttpClient(ningAsyncHttpProviderClassName, ningConfig);
52+
ningAsyncHttpClient = NingProvider.createClient(config.getNingAsyncHttpProviderClassName(), ningConfig);
5653
ahcAsyncHttpClient = null;
5754
} else {
58-
ahcAsyncHttpClient = new org.asynchttpclient.DefaultAsyncHttpClient(ahcConfig);
55+
ahcAsyncHttpClient = AHCProvider.createClient(ahcConfig);
5956
ningAsyncHttpClient = null;
6057
}
6158
}
@@ -84,72 +81,93 @@ public <T> Future<T> executeAsync(Map<String, String> headers, Verb httpVerb, St
8481
String bodyContents, OAuthAsyncRequestCallback<T> callback,
8582
OAuthRequestAsync.ResponseConverter<T> converter) {
8683
if (ahcAsyncHttpClient == null) {
87-
return ningExecuteAsync(headers, httpVerb, completeUrl, bodyContents, callback, converter);
84+
return NingProvider.ningExecuteAsync(ningAsyncHttpClient, config.getUserAgent(), headers, httpVerb,
85+
completeUrl, bodyContents, callback, converter);
8886
} else {
89-
return ahcExecuteAsync(headers, httpVerb, completeUrl, bodyContents, callback, converter);
87+
return AHCProvider.ahcExecuteAsync(ahcAsyncHttpClient, config.getUserAgent(), headers, httpVerb,
88+
completeUrl, bodyContents, callback, converter);
9089
}
9190
}
9291

93-
private <T> Future<T> ningExecuteAsync(Map<String, String> headers, Verb httpVerb, String completeUrl,
94-
String bodyContents, OAuthAsyncRequestCallback<T> callback,
95-
OAuthRequestAsync.ResponseConverter<T> converter) {
96-
final com.ning.http.client.AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
97-
switch (httpVerb) {
98-
case GET:
99-
boundRequestBuilder = ningAsyncHttpClient.prepareGet(completeUrl);
100-
break;
101-
case POST:
102-
com.ning.http.client.AsyncHttpClient.BoundRequestBuilder requestBuilder
103-
= ningAsyncHttpClient.preparePost(completeUrl);
104-
if (!headers.containsKey(AbstractRequest.CONTENT_TYPE)) {
105-
requestBuilder = requestBuilder.addHeader(AbstractRequest.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
106-
}
107-
boundRequestBuilder = requestBuilder.setBody(bodyContents);
108-
break;
109-
default:
110-
throw new IllegalArgumentException("message build error: unknown verb type");
111-
}
92+
private static class NingProvider {
11293

113-
for (Map.Entry<String, String> header : headers.entrySet()) {
114-
boundRequestBuilder.addHeader(header.getKey(), header.getValue());
115-
}
116-
final String userAgent = config.getUserAgent();
117-
if (userAgent != null) {
118-
boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
94+
private static com.ning.http.client.AsyncHttpClient createClient(String ningAsyncHttpProviderClassName,
95+
com.ning.http.client.AsyncHttpClientConfig ningConfig) {
96+
return ningAsyncHttpProviderClassName == null
97+
? new com.ning.http.client.AsyncHttpClient(ningConfig)
98+
: new com.ning.http.client.AsyncHttpClient(ningAsyncHttpProviderClassName, ningConfig);
11999
}
120100

121-
return boundRequestBuilder
122-
.execute(new com.github.scribejava.core.async.ning.OAuthAsyncCompletionHandler<>(callback, converter));
123-
}
101+
private static <T> Future<T> ningExecuteAsync(com.ning.http.client.AsyncHttpClient ningAsyncHttpClient,
102+
String userAgent, Map<String, String> headers, Verb httpVerb, String completeUrl, String bodyContents,
103+
OAuthAsyncRequestCallback<T> callback, OAuthRequestAsync.ResponseConverter<T> converter) {
104+
final com.ning.http.client.AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
105+
switch (httpVerb) {
106+
case GET:
107+
boundRequestBuilder = ningAsyncHttpClient.prepareGet(completeUrl);
108+
break;
109+
case POST:
110+
com.ning.http.client.AsyncHttpClient.BoundRequestBuilder requestBuilder
111+
= ningAsyncHttpClient.preparePost(completeUrl);
112+
if (!headers.containsKey(AbstractRequest.CONTENT_TYPE)) {
113+
requestBuilder = requestBuilder.addHeader(AbstractRequest.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
114+
}
115+
boundRequestBuilder = requestBuilder.setBody(bodyContents);
116+
break;
117+
default:
118+
throw new IllegalArgumentException("message build error: unknown verb type");
119+
}
124120

125-
private <T> Future<T> ahcExecuteAsync(Map<String, String> headers, Verb httpVerb, String completeUrl,
126-
String bodyContents, OAuthAsyncRequestCallback<T> callback,
127-
OAuthRequestAsync.ResponseConverter<T> converter) {
128-
final org.asynchttpclient.BoundRequestBuilder boundRequestBuilder;
129-
switch (httpVerb) {
130-
case GET:
131-
boundRequestBuilder = ahcAsyncHttpClient.prepareGet(completeUrl);
132-
break;
133-
case POST:
134-
org.asynchttpclient.BoundRequestBuilder requestBuilder = ahcAsyncHttpClient.preparePost(completeUrl);
135-
if (!headers.containsKey(AbstractRequest.CONTENT_TYPE)) {
136-
requestBuilder = requestBuilder.addHeader(AbstractRequest.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
137-
}
138-
boundRequestBuilder = requestBuilder.setBody(bodyContents);
139-
break;
140-
default:
141-
throw new IllegalArgumentException("message build error: unknown verb type");
142-
}
121+
for (Map.Entry<String, String> header : headers.entrySet()) {
122+
boundRequestBuilder.addHeader(header.getKey(), header.getValue());
123+
}
124+
if (userAgent != null) {
125+
boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
126+
}
143127

144-
for (Map.Entry<String, String> header : headers.entrySet()) {
145-
boundRequestBuilder.addHeader(header.getKey(), header.getValue());
128+
return boundRequestBuilder
129+
.execute(new com.github.scribejava.core.async.ning.OAuthAsyncCompletionHandler<>(
130+
callback, converter));
146131
}
147-
final String userAgent = config.getUserAgent();
148-
if (userAgent != null) {
149-
boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
132+
}
133+
134+
private static class AHCProvider {
135+
136+
private static org.asynchttpclient.AsyncHttpClient createClient(
137+
org.asynchttpclient.AsyncHttpClientConfig ahcConfig) {
138+
return new org.asynchttpclient.DefaultAsyncHttpClient(ahcConfig);
150139
}
151140

152-
return boundRequestBuilder
153-
.execute(new com.github.scribejava.core.async.ahc.OAuthAsyncCompletionHandler<>(callback, converter));
141+
private static <T> Future<T> ahcExecuteAsync(org.asynchttpclient.AsyncHttpClient ahcAsyncHttpClient,
142+
String userAgent, Map<String, String> headers, Verb httpVerb, String completeUrl, String bodyContents,
143+
OAuthAsyncRequestCallback<T> callback, OAuthRequestAsync.ResponseConverter<T> converter) {
144+
final org.asynchttpclient.BoundRequestBuilder boundRequestBuilder;
145+
switch (httpVerb) {
146+
case GET:
147+
boundRequestBuilder = ahcAsyncHttpClient.prepareGet(completeUrl);
148+
break;
149+
case POST:
150+
org.asynchttpclient.BoundRequestBuilder requestBuilder
151+
= ahcAsyncHttpClient.preparePost(completeUrl);
152+
if (!headers.containsKey(AbstractRequest.CONTENT_TYPE)) {
153+
requestBuilder = requestBuilder.addHeader(AbstractRequest.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
154+
}
155+
boundRequestBuilder = requestBuilder.setBody(bodyContents);
156+
break;
157+
default:
158+
throw new IllegalArgumentException("message build error: unknown verb type");
159+
}
160+
161+
for (Map.Entry<String, String> header : headers.entrySet()) {
162+
boundRequestBuilder.addHeader(header.getKey(), header.getValue());
163+
}
164+
if (userAgent != null) {
165+
boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
166+
}
167+
168+
return boundRequestBuilder
169+
.execute(new com.github.scribejava.core.async.ahc.OAuthAsyncCompletionHandler<>(
170+
callback, converter));
171+
}
154172
}
155173
}

scribejava-core/src/main/java/com/github/scribejava/core/utils/StreamUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public abstract class StreamUtils {
1616
*
1717
* @param is input stream
1818
* @return string contents
19-
* @throws java.io.IOException
19+
* @throws java.io.IOException in any. SocketTimeout in example
2020
*/
2121
public static String getStreamContents(InputStream is) throws IOException {
2222
Preconditions.checkNotNull(is, "Cannot get String from a null object");
@@ -39,7 +39,7 @@ public static String getStreamContents(InputStream is) throws IOException {
3939
*
4040
* @param is input stream
4141
* @return string contents
42-
* @throws java.io.IOException
42+
* @throws java.io.IOException in any. SocketTimeout in example
4343
*/
4444
public static String getGzipStreamContents(InputStream is) throws IOException {
4545
Preconditions.checkNotNull(is, "Cannot get String from a null object");

0 commit comments

Comments
 (0)