Skip to content

Commit 99d6dd9

Browse files
committed
Code cleanup, refactored code to reduce length of functions.
1 parent de4fec3 commit 99d6dd9

File tree

2 files changed

+63
-37
lines changed

2 files changed

+63
-37
lines changed

apache-http-client/src/main/java/io/refactoring/http5/client/example/async/helper/UserAsyncHttpRequestHelper.java

+35-15
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.refactoring.http5.client.example.helper.BaseHttpRequestHelper;
99
import io.refactoring.http5.client.example.model.User;
1010
import java.net.URI;
11+
import java.net.URISyntaxException;
1112
import java.nio.ByteBuffer;
1213
import java.nio.charset.StandardCharsets;
1314
import java.security.KeyManagementException;
@@ -424,6 +425,13 @@ private Map<Long, String> getUserWithParallelRequests(
424425
}
425426
}
426427

428+
handleFutureResults(futuresMap, userResponseMap);
429+
430+
return userResponseMap;
431+
}
432+
433+
private void handleFutureResults(
434+
Map<Long, Future<SimpleHttpResponse>> futuresMap, Map<Long, String> userResponseMap) {
427435
log.debug("Got {} futures.", futuresMap.size());
428436

429437
for (Map.Entry<Long, Future<SimpleHttpResponse>> futureEntry : futuresMap.entrySet()) {
@@ -441,8 +449,6 @@ private Map<Long, String> getUserWithParallelRequests(
441449
userResponseMap.put(currentUserId, message);
442450
}
443451
}
444-
445-
return userResponseMap;
446452
}
447453

448454
/**
@@ -478,18 +484,8 @@ public Map<Integer, String> executeRequestsWithInterceptors(
478484
.build();
479485
for (int i = 0; i < count; i++) {
480486
try {
481-
// Update request
482-
httpGetRequest.removeHeaders("x-req-exec-number");
483-
httpGetRequest.addHeader("x-req-exec-number", String.valueOf(i));
484-
log.debug(
485-
"Executing {} request: {} on host {}",
486-
httpGetRequest.getMethod(),
487-
httpGetRequest.getUri(),
488-
httpHost);
489-
490487
final Future<SimpleHttpResponse> future =
491-
closeableHttpAsyncClient.execute(
492-
httpGetRequest, new SimpleHttpResponseCallback(httpGetRequest, ""));
488+
executeInterceptorRequest(closeableHttpAsyncClient, httpGetRequest, i, httpHost);
493489
futuresMap.put(i, future);
494490
} catch (RequestProcessingException e) {
495491
userResponseMap.put(i, e.getMessage());
@@ -501,6 +497,32 @@ public Map<Integer, String> executeRequestsWithInterceptors(
501497
throw new RequestProcessingException(message, e);
502498
}
503499

500+
handleInterceptorFutureResults(futuresMap, userResponseMap);
501+
502+
return userResponseMap;
503+
}
504+
505+
private Future<SimpleHttpResponse> executeInterceptorRequest(
506+
CloseableHttpAsyncClient closeableHttpAsyncClient,
507+
SimpleHttpRequest httpGetRequest,
508+
int i,
509+
HttpHost httpHost)
510+
throws URISyntaxException {
511+
// Update request
512+
httpGetRequest.removeHeaders("x-req-exec-number");
513+
httpGetRequest.addHeader("x-req-exec-number", String.valueOf(i));
514+
log.debug(
515+
"Executing {} request: {} on host {}",
516+
httpGetRequest.getMethod(),
517+
httpGetRequest.getUri(),
518+
httpHost);
519+
520+
return closeableHttpAsyncClient.execute(
521+
httpGetRequest, new SimpleHttpResponseCallback(httpGetRequest, ""));
522+
}
523+
524+
private void handleInterceptorFutureResults(
525+
Map<Integer, Future<SimpleHttpResponse>> futuresMap, Map<Integer, String> userResponseMap) {
504526
log.debug("Got {} futures.", futuresMap.size());
505527

506528
for (Map.Entry<Integer, Future<SimpleHttpResponse>> futureEntry : futuresMap.entrySet()) {
@@ -514,8 +536,6 @@ public Map<Integer, String> executeRequestsWithInterceptors(
514536
userResponseMap.put(currentRequestId, message);
515537
}
516538
}
517-
518-
return userResponseMap;
519539
}
520540

521541
/**

apache-http-client/src/main/java/io/refactoring/http5/client/example/config/interceptor/UserResponseAsyncExecChainHandler.java

+28-22
Original file line numberDiff line numberDiff line change
@@ -32,30 +32,9 @@ public void execute(
3232
&& httpRequest.containsHeader("x-req-exec-number")) {
3333
final String path = httpRequest.getPath();
3434
if (StringUtils.startsWith(path, "/api/users/")) {
35-
final Header baseNumberHeader = httpRequest.getFirstHeader("x-base-number");
36-
final String baseNumberStr = baseNumberHeader.getValue();
37-
int baseNumber = Integer.parseInt(baseNumberStr);
38-
39-
final Header reqExecNumberHeader = httpRequest.getFirstHeader("x-req-exec-number");
40-
final String reqExecNumberStr = reqExecNumberHeader.getValue();
41-
int reqExecNumber = Integer.parseInt(reqExecNumberStr);
42-
43-
// check if user id is multiple of base value
44-
if (reqExecNumber % baseNumber == 0) {
45-
final String reasonPhrase = "Multiple of " + baseNumber;
46-
final HttpResponse response = new BasicHttpResponse(HttpStatus.SC_OK, reasonPhrase);
47-
final ByteBuffer content =
48-
ByteBuffer.wrap(reasonPhrase.getBytes(StandardCharsets.US_ASCII));
49-
final AsyncDataConsumer asyncDataConsumer =
50-
asyncExecCallback.handleResponse(
51-
response, new BasicEntityDetails(content.remaining(), ContentType.TEXT_PLAIN));
52-
asyncDataConsumer.consume(content);
53-
asyncDataConsumer.streamEnd(null);
54-
requestHandled = true;
55-
}
35+
requestHandled = handleUserRequest(httpRequest, asyncExecCallback);
5636
}
5737
}
58-
5938
if (!requestHandled) {
6039
asyncExecChain.proceed(httpRequest, asyncEntityProducer, scope, asyncExecCallback);
6140
}
@@ -65,4 +44,31 @@ public void execute(
6544
throw new RequestProcessingException(msg, ex);
6645
}
6746
}
47+
48+
private boolean handleUserRequest(HttpRequest httpRequest, AsyncExecCallback asyncExecCallback)
49+
throws HttpException, IOException {
50+
boolean requestHandled = false;
51+
final Header baseNumberHeader = httpRequest.getFirstHeader("x-base-number");
52+
final String baseNumberStr = baseNumberHeader.getValue();
53+
int baseNumber = Integer.parseInt(baseNumberStr);
54+
55+
final Header reqExecNumberHeader = httpRequest.getFirstHeader("x-req-exec-number");
56+
final String reqExecNumberStr = reqExecNumberHeader.getValue();
57+
int reqExecNumber = Integer.parseInt(reqExecNumberStr);
58+
59+
// check if user id is multiple of base value
60+
if (reqExecNumber % baseNumber == 0) {
61+
final String reasonPhrase = "Multiple of " + baseNumber;
62+
final HttpResponse response = new BasicHttpResponse(HttpStatus.SC_OK, reasonPhrase);
63+
final ByteBuffer content = ByteBuffer.wrap(reasonPhrase.getBytes(StandardCharsets.US_ASCII));
64+
final BasicEntityDetails entityDetails =
65+
new BasicEntityDetails(content.remaining(), ContentType.TEXT_PLAIN);
66+
final AsyncDataConsumer asyncDataConsumer =
67+
asyncExecCallback.handleResponse(response, entityDetails);
68+
asyncDataConsumer.consume(content);
69+
asyncDataConsumer.streamEnd(null);
70+
requestHandled = true;
71+
}
72+
return requestHandled;
73+
}
6874
}

0 commit comments

Comments
 (0)