Skip to content

Commit 63d739f

Browse files
committed
Consistent handler method names, close AsyncHttpClient#929
1 parent 0e27eda commit 63d739f

File tree

22 files changed

+121
-378
lines changed

22 files changed

+121
-378
lines changed

api/src/main/java/org/asynchttpclient/AsyncCompletionHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public void onThrowable(Throwable t) {
8686
*
8787
* @return a {@link org.asynchttpclient.AsyncHandler.State} telling to CONTINUE or ABORT the current processing.
8888
*/
89-
public State onHeaderWriteCompleted() {
89+
public State onHeadersWritten() {
9090
return State.CONTINUE;
9191
}
9292

@@ -96,7 +96,7 @@ public State onHeaderWriteCompleted() {
9696
*
9797
* @return a {@link org.asynchttpclient.AsyncHandler.State} telling to CONTINUE or ABORT the current processing.
9898
*/
99-
public State onContentWriteCompleted() {
99+
public State onContentWriten() {
100100
return State.CONTINUE;
101101
}
102102

api/src/main/java/org/asynchttpclient/handler/AsyncHandlerExtensions.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,29 +21,23 @@
2121
* For now, those methods are in a dedicated interface in order not to break the
2222
* existing API, but could be merged into one of the existing ones in AHC 2.
2323
*
24-
* More additional hooks might come, such as:
25-
* <ul>
26-
* <li>onConnectionClosed()</li>
27-
* <li>onBytesSent(long numberOfBytes)</li>
28-
* <li>onBytesReceived(long numberOfBytes)</li>
29-
* </ul>
3024
*/
3125
public interface AsyncHandlerExtensions {
3226

3327
/**
3428
* Notify the callback when trying to open a new connection.
3529
*/
36-
void onOpenConnection();
30+
void onConnectionOpen();
3731

3832
/**
3933
* Notify the callback when a new connection was successfully opened.
4034
*/
41-
void onConnectionOpen();
35+
void onConnectionOpened();
4236

4337
/**
4438
* Notify the callback when trying to fetch a connection from the pool.
4539
*/
46-
void onPoolConnection();
40+
void onConnectionPool();
4741

4842
/**
4943
* Notify the callback when a new connection was successfully fetched from
@@ -58,7 +52,7 @@ public interface AsyncHandlerExtensions {
5852
*
5953
* @param request the real request object as passed to the provider
6054
*/
61-
void onSendRequest(Object request);
55+
void onRequestSend(Object request);
6256

6357
/**
6458
* Notify the callback every time a request is being retried.

api/src/main/java/org/asynchttpclient/handler/ProgressAsyncHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ public interface ProgressAsyncHandler<T> extends AsyncHandler<T> {
2727
*
2828
* @return a {@link AsyncHandler.State} telling to CONTINUE or ABORT the current processing.
2929
*/
30-
State onHeaderWriteCompleted();
30+
State onHeadersWritten();
3131

3232
/**
3333
* Invoked when the content (a {@link java.io.File}, {@link String} or {@link java.io.FileInputStream} has been fully
3434
* written on the I/O socket.
3535
*
3636
* @return a {@link AsyncHandler.State} telling to CONTINUE or ABORT the current processing.
3737
*/
38-
State onContentWriteCompleted();
38+
State onContentWriten();
3939

4040
/**
4141
* Invoked when the I/O operation associated with the {@link Request} body wasn't fully written in a single I/O write

api/src/main/java/org/asynchttpclient/handler/TransferCompletionHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public Response onCompleted(Response response) throws Exception {
158158
}
159159

160160
@Override
161-
public State onHeaderWriteCompleted() {
161+
public State onHeadersWritten() {
162162
if (headers != null) {
163163
fireOnHeadersSent(headers);
164164
}

api/src/main/java/org/asynchttpclient/simple/SimpleAsyncHttpClient.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -707,12 +707,12 @@ public ResumableBodyConsumerAsyncHandler(long byteTransferred, ProgressAsyncHand
707707
this.delegate = delegate;
708708
}
709709

710-
public AsyncHandler.State onHeaderWriteCompleted() {
711-
return delegate.onHeaderWriteCompleted();
710+
public AsyncHandler.State onHeadersWritten() {
711+
return delegate.onHeadersWritten();
712712
}
713713

714-
public AsyncHandler.State onContentWriteCompleted() {
715-
return delegate.onContentWriteCompleted();
714+
public AsyncHandler.State onContentWriten() {
715+
return delegate.onContentWriten();
716716
}
717717

718718
public AsyncHandler.State onContentWriteProgress(long amount, long current, long total) {

api/src/test/java/org/asynchttpclient/AsyncProvidersBasicTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import org.asynchttpclient.proxy.ProxyServer;
5656
import org.asynchttpclient.request.body.multipart.Part;
5757
import org.asynchttpclient.request.body.multipart.StringPart;
58+
import org.asynchttpclient.test.EventCollectingHandler;
5859
import org.testng.annotations.Test;
5960

6061
public abstract class AsyncProvidersBasicTest extends AbstractBasicTest {
@@ -1402,4 +1403,28 @@ public void mirrorByteTest() throws Exception {
14021403
assertEquals(new String(response.getResponseBodyAsBytes(), UTF_8), "MIRROR");
14031404
}
14041405
}
1406+
1407+
@Test(groups = { "standalone", "default_provider", "async" })
1408+
public void testNewConnectionEventsFired() throws Exception {
1409+
Request request = new RequestBuilder("GET").setUrl("http://127.0.0.1:" + port1 + "/Test").build();
1410+
1411+
try (AsyncHttpClient client = getAsyncHttpClient(null)) {
1412+
EventCollectingHandler handler = new EventCollectingHandler();
1413+
client.executeRequest(request, handler).get(3, TimeUnit.SECONDS);
1414+
handler.waitForCompletion(3, TimeUnit.SECONDS);
1415+
1416+
List<String> expectedEvents = Arrays.asList(
1417+
"ConnectionPool",
1418+
"ConnectionOpen",
1419+
"DnsResolved",
1420+
"ConnectionOpened",
1421+
"RequestSend",
1422+
"HeadersWriten",
1423+
"StatusReceived",
1424+
"HeadersReceived",
1425+
"Completed");
1426+
1427+
assertEquals(handler.firedEvents, expectedEvents, "Got " + Arrays.toString(handler.firedEvents.toArray()));
1428+
}
1429+
}
14051430
}

api/src/test/java/org/asynchttpclient/BasicHttpsTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,16 @@
2222

2323
import org.asynchttpclient.AsyncHttpClient;
2424
import org.asynchttpclient.AsyncHttpClientConfig.Builder;
25+
import org.asynchttpclient.test.EventCollectingHandler;
2526
import org.testng.annotations.Test;
2627

2728
import javax.servlet.http.HttpServletResponse;
2829

30+
import java.util.Arrays;
31+
import java.util.List;
2932
import java.util.concurrent.ExecutionException;
3033
import java.util.concurrent.TimeUnit;
34+
import java.util.concurrent.TimeoutException;
3135
import java.util.concurrent.atomic.AtomicBoolean;
3236

3337
public abstract class BasicHttpsTest extends AbstractBasicHttpsTest {
@@ -113,4 +117,27 @@ public void failInstantlyIfNotAllowedSelfSignedCertificate() throws Throwable {
113117
}
114118
}
115119
}
120+
121+
@Test(groups = { "standalone", "default_provider" })
122+
public void testNormalEventsFired() throws InterruptedException, TimeoutException, ExecutionException {
123+
try (AsyncHttpClient client = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().setSSLContext(createSSLContext(new AtomicBoolean(true))).build())) {
124+
EventCollectingHandler handler = new EventCollectingHandler();
125+
client.preparePost(getTargetUrl()).setBody("whatever").execute(handler).get(3, TimeUnit.SECONDS);
126+
handler.waitForCompletion(3, TimeUnit.SECONDS);
127+
128+
List<String> expectedEvents = Arrays.asList(
129+
"ConnectionPool",
130+
"ConnectionOpen",
131+
"DnsResolved",
132+
"SslHandshakeCompleted",
133+
"ConnectionOpened",
134+
"RequestSend",
135+
"HeadersWritten",
136+
"StatusReceived",
137+
"HeadersReceived",
138+
"Completed");
139+
140+
assertEquals(handler.firedEvents, expectedEvents, "Got " + Arrays.toString(handler.firedEvents.toArray()));
141+
}
142+
}
116143
}

api/src/test/java/org/asynchttpclient/channel/pool/ConnectionPoolTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import java.io.IOException;
2424
import java.util.ArrayList;
25+
import java.util.Arrays;
2526
import java.util.List;
2627
import java.util.Map;
2728
import java.util.concurrent.ConcurrentHashMap;
@@ -39,6 +40,7 @@
3940
import org.asynchttpclient.Request;
4041
import org.asynchttpclient.RequestBuilder;
4142
import org.asynchttpclient.Response;
43+
import org.asynchttpclient.test.EventCollectingHandler;
4244
import org.slf4j.Logger;
4345
import org.slf4j.LoggerFactory;
4446
import org.testng.annotations.Test;
@@ -269,4 +271,30 @@ public void nonPoolableConnectionReleaseSemaphoresTest() throws Throwable {
269271
client.executeRequest(request).get();
270272
}
271273
}
274+
275+
@Test(groups = { "standalone", "default_provider" })
276+
public void testPooledEventsFired() throws Exception {
277+
Request request = new RequestBuilder("GET").setUrl("http://127.0.0.1:" + port1 + "/Test").build();
278+
279+
try (AsyncHttpClient client = getAsyncHttpClient(null)) {
280+
EventCollectingHandler firstHandler = new EventCollectingHandler();
281+
client.executeRequest(request, firstHandler).get(3, TimeUnit.SECONDS);
282+
firstHandler.waitForCompletion(3, TimeUnit.SECONDS);
283+
284+
EventCollectingHandler secondHandler = new EventCollectingHandler();
285+
client.executeRequest(request, secondHandler).get(3, TimeUnit.SECONDS);
286+
secondHandler.waitForCompletion(3, TimeUnit.SECONDS);
287+
288+
List<String> expectedEvents = Arrays.asList(
289+
"ConnectionPool",
290+
"ConnectionPooled",
291+
"RequestSend",
292+
"HeadersWritten",
293+
"StatusReceived",
294+
"HeadersReceived",
295+
"Completed");
296+
297+
assertEquals(secondHandler.firedEvents, expectedEvents, "Got " + Arrays.toString(secondHandler.firedEvents.toArray()));
298+
}
299+
}
272300
}

api/src/test/java/org/asynchttpclient/request/body/ZeroCopyFileTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ public void zeroCopyPostTest() throws IOException, ExecutionException, TimeoutEx
7676

7777
Response resp = client.preparePost("http://127.0.0.1:" + port1 + "/").setBody(SIMPLE_TEXT_FILE).execute(new AsyncCompletionHandler<Response>() {
7878

79-
public State onHeaderWriteCompleted() {
79+
public State onHeadersWritten() {
8080
headerSent.set(true);
8181
return State.CONTINUE;
8282
}
8383

84-
public State onContentWriteCompleted() {
84+
public State onContentWriten() {
8585
operationCompleted.set(true);
8686
return State.CONTINUE;
8787
}

api/src/test/java/org/asynchttpclient/test/EventCollectingHandler.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -58,30 +58,30 @@ public State onHeadersReceived(HttpResponseHeaders headers) throws Exception {
5858
}
5959

6060
@Override
61-
public State onHeaderWriteCompleted() {
62-
firedEvents.add("HeaderWriteCompleted");
63-
return super.onHeaderWriteCompleted();
61+
public State onHeadersWritten() {
62+
firedEvents.add("HeadersWritten");
63+
return super.onHeadersWritten();
6464
}
6565

6666
@Override
67-
public State onContentWriteCompleted() {
68-
firedEvents.add("ContentWriteCompleted");
69-
return super.onContentWriteCompleted();
67+
public State onContentWriten() {
68+
firedEvents.add("ContentWritten");
69+
return super.onContentWriten();
7070
}
7171

7272
@Override
73-
public void onOpenConnection() {
74-
firedEvents.add("OpenConnection");
73+
public void onConnectionOpen() {
74+
firedEvents.add("ConnectionOpen");
7575
}
7676

7777
@Override
78-
public void onConnectionOpen() {
79-
firedEvents.add("ConnectionOpen");
78+
public void onConnectionOpened() {
79+
firedEvents.add("ConnectionOpened");
8080
}
8181

8282
@Override
83-
public void onPoolConnection() {
84-
firedEvents.add("PoolConnection");
83+
public void onConnectionPool() {
84+
firedEvents.add("ConnectionPool");
8585
}
8686

8787
@Override
@@ -90,8 +90,8 @@ public void onConnectionPooled() {
9090
}
9191

9292
@Override
93-
public void onSendRequest(Object request) {
94-
firedEvents.add("SendRequest");
93+
public void onRequestSend(Object request) {
94+
firedEvents.add("RequestSend");
9595
}
9696

9797
@Override

providers/netty3/src/main/java/org/asynchttpclient/netty/channel/NettyConnectListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ private void writeRequest(Channel channel) {
7878
future.attachChannel(channel, false);
7979

8080
if (future.getAsyncHandler() instanceof AsyncHandlerExtensions)
81-
AsyncHandlerExtensions.class.cast(future.getAsyncHandler()).onConnectionOpen();
81+
AsyncHandlerExtensions.class.cast(future.getAsyncHandler()).onConnectionOpened();
8282

8383
channelManager.registerOpenChannel(channel, partitionKey);
8484
requestSender.writeRequest(future, channel);

providers/netty3/src/main/java/org/asynchttpclient/netty/request/NettyRequestSender.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ private <T> ListenableFuture<T> sendRequestWithNewChannel(//
274274
}
275275

276276
if (asyncHandler instanceof AsyncHandlerExtensions)
277-
AsyncHandlerExtensions.class.cast(asyncHandler).onOpenConnection();
277+
AsyncHandlerExtensions.class.cast(asyncHandler).onConnectionOpen();
278278

279279
ChannelFuture channelFuture = connect(request, uri, proxy, useProxy, bootstrap, asyncHandler);
280280
channelFuture.addListener(new NettyConnectListener<T>(future, this, channelManager, channelPreempted, partitionKey));
@@ -325,7 +325,7 @@ public <T> void writeRequest(NettyResponseFuture<T> future, Channel channel) {
325325

326326
if (!future.isHeadersAlreadyWrittenOnContinue()) {
327327
if (future.getAsyncHandler() instanceof AsyncHandlerExtensions)
328-
AsyncHandlerExtensions.class.cast(future.getAsyncHandler()).onSendRequest(nettyRequest);
328+
AsyncHandlerExtensions.class.cast(future.getAsyncHandler()).onRequestSend(nettyRequest);
329329
channel.write(httpRequest).addListener(new ProgressListener(config, future.getAsyncHandler(), future, true));
330330
}
331331

@@ -506,7 +506,7 @@ else if (!request.getMethod().equals(HttpMethod.GET.getName()))
506506
public Channel pollAndVerifyCachedChannel(Uri uri, ProxyServer proxy, ConnectionPoolPartitioning connectionPoolPartitioning, AsyncHandler<?> asyncHandler) {
507507

508508
if (asyncHandler instanceof AsyncHandlerExtensions)
509-
AsyncHandlerExtensions.class.cast(asyncHandler).onPoolConnection();
509+
AsyncHandlerExtensions.class.cast(asyncHandler).onConnectionPool();
510510

511511
final Channel channel = channelManager.poll(uri, proxy, connectionPoolPartitioning);
512512

providers/netty3/src/main/java/org/asynchttpclient/netty/request/ProgressListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ public void operationComplete(ChannelFuture cf) {
7777

7878
if (startPublishing && asyncHandler instanceof ProgressAsyncHandler) {
7979
if (notifyHeaders) {
80-
ProgressAsyncHandler.class.cast(asyncHandler).onHeaderWriteCompleted();
80+
ProgressAsyncHandler.class.cast(asyncHandler).onHeadersWritten();
8181
} else {
82-
ProgressAsyncHandler.class.cast(asyncHandler).onContentWriteCompleted();
82+
ProgressAsyncHandler.class.cast(asyncHandler).onContentWriten();
8383
}
8484
}
8585
}

0 commit comments

Comments
 (0)