1414import java .net .URI ;
1515import java .util .Map ;
1616import java .util .Objects ;
17+ import java .util .concurrent .CompletableFuture ;
1718import java .util .concurrent .ExecutionException ;
1819import java .util .concurrent .TimeUnit ;
1920import java .util .concurrent .TimeoutException ;
2021import org .eclipse .jetty .client .ContentResponse ;
21- import org .eclipse .jetty .client .FutureResponseListener ;
2222import org .eclipse .jetty .client .HttpClient ;
2323import org .eclipse .jetty .client .Request ;
2424import org .eclipse .jetty .client .Response ;
@@ -39,7 +39,7 @@ public abstract class AbstractJettyClient12Test extends AbstractHttpClientTest<R
3939 protected HttpClient httpsClient ;
4040
4141 @ BeforeEach
42- public void before () throws Exception {
42+ void before () throws Exception {
4343 client .setConnectTimeout (CONNECTION_TIMEOUT .toMillis ());
4444 client .start ();
4545
@@ -50,7 +50,7 @@ public void before() throws Exception {
5050 }
5151
5252 @ AfterEach
53- public void after () throws Exception {
53+ void after () throws Exception {
5454 client .stop ();
5555 httpsClient .stop ();
5656 }
@@ -118,25 +118,12 @@ public void sendRequestWithCallback(
118118 void callbacksCalled () throws InterruptedException , ExecutionException {
119119 URI uri = resolveAddress ("/success" );
120120 Request request = client .newRequest (uri ).method ("GET" );
121- FutureResponseListener responseListener =
122- new FutureResponseListener (request ) {
123- @ Override
124- public void onHeaders (Response response ) {
125- testing .runWithSpan ("onHeaders" , () -> super .onHeaders (response ));
126- }
127121
128- @ Override
129- public void onSuccess (Response response ) {
130- testing .runWithSpan ("onSuccess" , () -> super .onSuccess (response ));
131- }
122+ CompletableFuture <Response > responseFuture = new CompletableFuture <>();
123+ TracingResponseListener responseListener = new TracingResponseListener (responseFuture );
132124
133- @ Override
134- public void onComplete (Result result ) {
135- testing .runWithSpan ("onComplete" , () -> super .onComplete (result ));
136- }
137- };
138125 testing .runWithSpan ("parent" , () -> request .send (responseListener ));
139- Response response = responseListener .get ();
126+ Response response = responseFuture .get ();
140127
141128 assertThat (response .getStatus ()).isEqualTo (200 );
142129 testing .waitAndAssertTraces (
@@ -162,6 +149,39 @@ public void onComplete(Result result) {
162149 .hasParent (trace .getSpan (0 ))));
163150 }
164151
152+ private class TracingResponseListener
153+ implements Response .HeadersListener , Response .SuccessListener , Response .CompleteListener {
154+
155+ private final CompletableFuture <Response > responseFuture ;
156+
157+ TracingResponseListener (CompletableFuture <Response > responseFuture ) {
158+ this .responseFuture = responseFuture ;
159+ }
160+
161+ @ Override
162+ public void onHeaders (Response response ) {
163+ testing .runWithSpan ("onHeaders" , () -> {});
164+ }
165+
166+ @ Override
167+ public void onSuccess (Response response ) {
168+ testing .runWithSpan ("onSuccess" , () -> {});
169+ }
170+
171+ @ Override
172+ public void onComplete (Result result ) {
173+ testing .runWithSpan (
174+ "onComplete" ,
175+ () -> {
176+ if (result .isSucceeded ()) {
177+ responseFuture .complete (result .getResponse ());
178+ } else {
179+ responseFuture .completeExceptionally (result .getFailure ());
180+ }
181+ });
182+ }
183+ }
184+
165185 private static class JettyClientListener
166186 implements Request .FailureListener , Response .FailureListener {
167187 volatile Throwable failure ;
0 commit comments