@@ -38,28 +38,28 @@ public void close() throws IOException {
3838 public <T > Future <T > executeAsync (String userAgent , Map <String , String > headers , Verb httpVerb , String completeUrl ,
3939 byte [] bodyContents , OAuthAsyncRequestCallback <T > callback ,
4040 OAuthRequestAsync .ResponseConverter <T > converter ) {
41- return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , new ByteArrayBodySetter ( bodyContents ) ,
42- callback , converter );
41+ return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , BodySetter . BYTE_ARRAY , bodyContents , callback ,
42+ converter );
4343 }
4444
4545 @ Override
4646 public <T > Future <T > executeAsync (String userAgent , Map <String , String > headers , Verb httpVerb , String completeUrl ,
4747 String bodyContents , OAuthAsyncRequestCallback <T > callback ,
4848 OAuthRequestAsync .ResponseConverter <T > converter ) {
49- return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , new StringBodySetter ( bodyContents ) , callback ,
49+ return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , BodySetter . STRING , bodyContents , callback ,
5050 converter );
5151 }
5252
5353 @ Override
5454 public <T > Future <T > executeAsync (String userAgent , Map <String , String > headers , Verb httpVerb , String completeUrl ,
5555 File bodyContents , OAuthAsyncRequestCallback <T > callback ,
5656 OAuthRequestAsync .ResponseConverter <T > converter ) {
57- return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , new FileBodySetter ( bodyContents ) , callback ,
57+ return doExecuteAsync (userAgent , headers , httpVerb , completeUrl , BodySetter . FILE , bodyContents , callback ,
5858 converter );
5959 }
6060
6161 private <T > Future <T > doExecuteAsync (String userAgent , Map <String , String > headers , Verb httpVerb ,
62- String completeUrl , BodySetter bodySetter , OAuthAsyncRequestCallback <T > callback ,
62+ String completeUrl , BodySetter bodySetter , Object bodyContents , OAuthAsyncRequestCallback <T > callback ,
6363 OAuthRequestAsync .ResponseConverter <T > converter ) {
6464 BoundRequestBuilder boundRequestBuilder ;
6565 switch (httpVerb ) {
@@ -83,7 +83,7 @@ private <T> Future<T> doExecuteAsync(String userAgent, Map<String, String> heade
8383 if (!headers .containsKey (AbstractRequest .CONTENT_TYPE )) {
8484 boundRequestBuilder = boundRequestBuilder .addHeader (AbstractRequest .CONTENT_TYPE , DEFAULT_CONTENT_TYPE );
8585 }
86- boundRequestBuilder = bodySetter .setBody (boundRequestBuilder );
86+ boundRequestBuilder = bodySetter .setBody (boundRequestBuilder , bodyContents );
8787 }
8888
8989 for (Map .Entry <String , String > header : headers .entrySet ()) {
@@ -93,55 +93,29 @@ private <T> Future<T> doExecuteAsync(String userAgent, Map<String, String> heade
9393 boundRequestBuilder .setHeader (OAuthConstants .USER_AGENT_HEADER_NAME , userAgent );
9494 }
9595
96- return boundRequestBuilder
97- .execute (new OAuthAsyncCompletionHandler <>(
98- callback , converter ));
99- }
100-
101- private interface BodySetter {
102-
103- BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder );
96+ return boundRequestBuilder .execute (new OAuthAsyncCompletionHandler <>(callback , converter ));
10497 }
10598
106- private static class ByteArrayBodySetter implements BodySetter {
107-
108- private final byte [] bodyContents ;
109-
110- private ByteArrayBodySetter (byte [] bodyContents ) {
111- this .bodyContents = bodyContents ;
112- }
113-
114- @ Override
115- public BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder ) {
116- return requestBuilder .setBody (bodyContents );
117- }
118- }
119-
120- private static class StringBodySetter implements BodySetter {
121-
122- private final String bodyContents ;
123-
124- private StringBodySetter (String bodyContents ) {
125- this .bodyContents = bodyContents ;
126- }
127-
128- @ Override
129- public BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder ) {
130- return requestBuilder .setBody (bodyContents );
131- }
132- }
133-
134- private static class FileBodySetter implements BodySetter {
135-
136- private final File bodyContents ;
137-
138- private FileBodySetter (File bodyContents ) {
139- this .bodyContents = bodyContents ;
140- }
99+ private enum BodySetter {
100+ BYTE_ARRAY {
101+ @ Override
102+ BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder , Object bodyContents ) {
103+ return requestBuilder .setBody ((byte []) bodyContents );
104+ }
105+ },
106+ STRING {
107+ @ Override
108+ BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder , Object bodyContents ) {
109+ return requestBuilder .setBody ((String ) bodyContents );
110+ }
111+ },
112+ FILE {
113+ @ Override
114+ BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder , Object bodyContents ) {
115+ return requestBuilder .setBody ((File ) bodyContents );
116+ }
117+ };
141118
142- @ Override
143- public BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder ) {
144- return requestBuilder .setBody (bodyContents );
145- }
119+ abstract BoundRequestBuilder setBody (BoundRequestBuilder requestBuilder , Object bodyContents );
146120 }
147121}
0 commit comments