38
38
import java .net .http .HttpRequest ;
39
39
import java .net .http .HttpResponse ;
40
40
import java .nio .charset .StandardCharsets ;
41
- import java .util .concurrent .atomic .AtomicInteger ;
42
- import java .util .concurrent .atomic .AtomicReference ;
41
+ import java .util .concurrent .CompletableFuture ;
43
42
import java .util .logging .ConsoleHandler ;
44
43
import java .util .logging .Level ;
45
44
import java .util .logging .Logger ;
@@ -165,9 +164,9 @@ public void testBeforeHandlerSendResponse() throws Exception {
165
164
@ Test
166
165
public void testAfterHandler () throws Exception {
167
166
var handler = new EchoHandler ();
168
- var respCode = new AtomicInteger ();
167
+ var respCode = new CompletableFuture < Integer > ();
169
168
var filter = Filter .afterHandler ("Log response code" ,
170
- e -> respCode .set (e .getResponseCode ()));
169
+ e -> respCode .complete (e .getResponseCode ()));
171
170
var server = HttpServer .create (new InetSocketAddress (LOOPBACK_ADDR , 0 ), 10 );
172
171
server .createContext ("/" , handler ).getFilters ().add (filter );
173
172
server .start ();
@@ -176,7 +175,7 @@ public void testAfterHandler() throws Exception {
176
175
var request = HttpRequest .newBuilder (uri (server , "" )).build ();
177
176
var response = client .send (request , HttpResponse .BodyHandlers .ofString ());
178
177
assertEquals (response .statusCode (), 200 );
179
- assertEquals (response .statusCode (), respCode .get ());
178
+ assertEquals (response .statusCode (), ( int ) respCode .get ());
180
179
} finally {
181
180
server .stop (0 );
182
181
}
@@ -185,12 +184,12 @@ public void testAfterHandler() throws Exception {
185
184
@ Test
186
185
public void testAfterHandlerRepeated () throws Exception {
187
186
var handler = new EchoHandler ();
188
- var attr = new AtomicReference <String >();
187
+ var attr = new CompletableFuture <String >();
189
188
final var value = "some value" ;
190
189
var filter1 = Filter .afterHandler ("Set attribute" ,
191
190
e -> e .setAttribute ("test-attr" , value ));
192
191
var filter2 = Filter .afterHandler ("Read attribute" ,
193
- e -> attr .set ((String ) e .getAttribute ("test-attr" )));
192
+ e -> attr .complete ((String ) e .getAttribute ("test-attr" )));
194
193
var server = HttpServer .create (new InetSocketAddress (LOOPBACK_ADDR , 0 ), 10 );
195
194
var context = server .createContext ("/" , handler );
196
195
context .getFilters ().add (filter2 );
@@ -210,7 +209,7 @@ public void testAfterHandlerRepeated() throws Exception {
210
209
@ Test
211
210
public void testAfterHandlerSendResponse () throws Exception {
212
211
var handler = new NoResponseHandler ();
213
- var respCode = new AtomicInteger ();
212
+ var respCode = new CompletableFuture < Integer > ();
214
213
var filter = Filter .afterHandler ("Log response code and send response" ,
215
214
e -> {
216
215
try (InputStream is = e .getRequestBody ();
@@ -219,7 +218,7 @@ public void testAfterHandlerSendResponse() throws Exception {
219
218
var resp = "hello world" .getBytes (StandardCharsets .UTF_8 );
220
219
e .sendResponseHeaders (200 , resp .length );
221
220
os .write (resp );
222
- respCode .set (e .getResponseCode ());
221
+ respCode .complete (e .getResponseCode ());
223
222
} catch (IOException ioe ) {
224
223
ioe .printStackTrace (System .out );
225
224
throw new UncheckedIOException (ioe );
@@ -233,7 +232,7 @@ public void testAfterHandlerSendResponse() throws Exception {
233
232
var request = HttpRequest .newBuilder (uri (server , "" )).build ();
234
233
var response = client .send (request , HttpResponse .BodyHandlers .ofString ());
235
234
assertEquals (response .statusCode (), 200 );
236
- assertEquals (response .statusCode (), respCode .get ());
235
+ assertEquals (response .statusCode (), ( int ) respCode .get ());
237
236
} finally {
238
237
server .stop (0 );
239
238
}
@@ -242,11 +241,11 @@ public void testAfterHandlerSendResponse() throws Exception {
242
241
@ Test
243
242
public void testBeforeAndAfterHandler () throws Exception {
244
243
var handler = new EchoHandler ();
245
- var respCode = new AtomicInteger ();
244
+ var respCode = new CompletableFuture < Integer > ();
246
245
var beforeFilter = Filter .beforeHandler ("Add x-foo response header" ,
247
246
e -> e .getResponseHeaders ().set ("x-foo" , "bar" ));
248
247
var afterFilter = Filter .afterHandler ("Log response code" ,
249
- e -> respCode .set (e .getResponseCode ()));
248
+ e -> respCode .complete (e .getResponseCode ()));
250
249
var server = HttpServer .create (new InetSocketAddress (LOOPBACK_ADDR , 0 ), 10 );
251
250
var context = server .createContext ("/" , handler );
252
251
context .getFilters ().add (beforeFilter );
@@ -257,9 +256,9 @@ public void testBeforeAndAfterHandler() throws Exception {
257
256
var request = HttpRequest .newBuilder (uri (server , "" )).build ();
258
257
var response = client .send (request , HttpResponse .BodyHandlers .ofString ());
259
258
assertEquals (response .statusCode (), 200 );
260
- assertEquals (response .statusCode (), respCode .get ());
261
259
assertEquals (response .headers ().map ().size (), 3 );
262
260
assertEquals (response .headers ().firstValue ("x-foo" ).orElseThrow (), "bar" );
261
+ assertEquals (response .statusCode (), (int )respCode .get ());
263
262
} finally {
264
263
server .stop (0 );
265
264
}
0 commit comments