22
33import com .github .scribejava .core .httpclient .AbstractAsyncOnlyHttpClient ;
44import com .github .scribejava .core .httpclient .multipart .MultipartPayload ;
5- import com .github .scribejava .core .java8 .Consumer ;
65import com .github .scribejava .core .model .OAuthAsyncRequestCallback ;
76import com .github .scribejava .core .model .OAuthConstants ;
87import com .github .scribejava .core .model .OAuthRequest ;
@@ -43,7 +42,7 @@ public void close() throws IOException {
4342 @ Override
4443 public <T > Future <T > executeAsync (String userAgent , Map <String , String > headers , Verb httpVerb , String completeUrl ,
4544 byte [] bodyContents , OAuthAsyncRequestCallback <T > callback , OAuthRequest .ResponseConverter <T > converter ) {
46- return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , new ByteArrayConsumer ( bodyContents ) , callback ,
45+ return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , BodySetter . BYTE_ARRAY , bodyContents , callback ,
4746 converter );
4847 }
4948
@@ -58,19 +57,19 @@ public <T> Future<T> executeAsync(String userAgent, Map<String, String> headers,
5857 @ Override
5958 public <T > Future <T > executeAsync (String userAgent , Map <String , String > headers , Verb httpVerb , String completeUrl ,
6059 String bodyContents , OAuthAsyncRequestCallback <T > callback , OAuthRequest .ResponseConverter <T > converter ) {
61- return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , new StringConsumer ( bodyContents ) , callback ,
60+ return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , BodySetter . STRING , bodyContents , callback ,
6261 converter );
6362 }
6463
6564 @ Override
6665 public <T > Future <T > executeAsync (String userAgent , Map <String , String > headers , Verb httpVerb , String completeUrl ,
6766 File bodyContents , OAuthAsyncRequestCallback <T > callback , OAuthRequest .ResponseConverter <T > converter ) {
68- return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , new FileConsumer ( bodyContents ) , callback ,
67+ return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , BodySetter . FILE , bodyContents , callback ,
6968 converter );
7069 }
7170
7271 private <T > Future <T > doExecuteAsync (String userAgent , Map <String , String > headers , Verb httpVerb ,
73- String completeUrl , Consumer < BoundRequestBuilder > bodySetter , OAuthAsyncRequestCallback <T > callback ,
72+ String completeUrl , BodySetter bodySetter , Object bodyContents , OAuthAsyncRequestCallback <T > callback ,
7473 OAuthRequest .ResponseConverter <T > converter ) {
7574 final BoundRequestBuilder boundRequestBuilder ;
7675 switch (httpVerb ) {
@@ -94,7 +93,7 @@ private <T> Future<T> doExecuteAsync(String userAgent, Map<String, String> heade
9493 if (!headers .containsKey (CONTENT_TYPE )) {
9594 boundRequestBuilder .addHeader (CONTENT_TYPE , DEFAULT_CONTENT_TYPE );
9695 }
97- bodySetter .accept (boundRequestBuilder );
96+ bodySetter .setBody (boundRequestBuilder , bodyContents );
9897 }
9998
10099 for (Map .Entry <String , String > header : headers .entrySet ()) {
@@ -108,45 +107,26 @@ private <T> Future<T> doExecuteAsync(String userAgent, Map<String, String> heade
108107 return boundRequestBuilder .execute (new OAuthAsyncCompletionHandler <>(callback , converter ));
109108 }
110109
111- private static class ByteArrayConsumer implements Consumer <BoundRequestBuilder > {
112-
113- private final byte [] bodyContents ;
114-
115- private ByteArrayConsumer (byte [] bodyContents ) {
116- this .bodyContents = bodyContents ;
117- }
118-
119- @ Override
120- public void accept (BoundRequestBuilder requestBuilder ) {
121- requestBuilder .setBody (bodyContents );
122- }
123- }
124-
125- private static class StringConsumer implements Consumer <BoundRequestBuilder > {
126-
127- private final String bodyContents ;
128-
129- private StringConsumer (String bodyContents ) {
130- this .bodyContents = bodyContents ;
131- }
132-
133- @ Override
134- public void accept (BoundRequestBuilder requestBuilder ) {
135- requestBuilder .setBody (bodyContents );
136- }
137- }
138-
139- private static class FileConsumer implements Consumer <BoundRequestBuilder > {
140-
141- private final File bodyContents ;
142-
143- private FileConsumer (File bodyContents ) {
144- this .bodyContents = bodyContents ;
145- }
110+ private enum BodySetter {
111+ BYTE_ARRAY {
112+ @ Override
113+ BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder , Object bodyContents ) {
114+ return requestBuilder .setBody ((byte []) bodyContents );
115+ }
116+ },
117+ STRING {
118+ @ Override
119+ BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder , Object bodyContents ) {
120+ return requestBuilder .setBody ((String ) bodyContents );
121+ }
122+ },
123+ FILE {
124+ @ Override
125+ BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder , Object bodyContents ) {
126+ return requestBuilder .setBody ((File ) bodyContents );
127+ }
128+ };
146129
147- @ Override
148- public void accept (BoundRequestBuilder requestBuilder ) {
149- requestBuilder .setBody (bodyContents );
150- }
130+ abstract BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder , Object bodyContents );
151131 }
152132}
0 commit comments