IntStream.range(0, numChunks).forEach(i -> content.append(chunk)); server.requestHandler(req -> { req.response().headersEndHandler(v -> {
@Test public void testResponseEndHandlersSendFile() throws Exception { waitFor(2); AtomicInteger cnt = new AtomicInteger(); String content = "iqdioqwdqwiojqwijdwqd"; File toSend = setupFile("somefile.txt", content); server.requestHandler(req -> { req.response().headersEndHandler(v -> { // Insert another header req.response().putHeader("extraheader", "wibble"); assertEquals(0, cnt.getAndIncrement()); }); req.response().bodyEndHandler(v -> { assertEquals(content.length(), req.response().bytesWritten()); assertEquals(1, cnt.getAndIncrement()); complete(); }); req.response().sendFile(toSend.getAbsolutePath()); }).listen(onSuccess(server -> { client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/", onSuccess(res -> { assertEquals(200, res.statusCode()); assertEquals("wibble", res.headers().get("extraheader")); res.bodyHandler(buff -> { assertEquals(Buffer.buffer(content), buff); complete(); }); })).end(); })); await(); }
@Test public void testResponseEndHandlers2() { waitFor(2); AtomicInteger cnt = new AtomicInteger(); String content = "blah"; server.requestHandler(req -> { req.response().headersEndHandler(v -> { // Insert another header req.response().putHeader("extraheader", "wibble"); assertEquals(0, cnt.getAndIncrement()); }); req.response().bodyEndHandler(v -> { assertEquals(content.length(), req.response().bytesWritten()); assertEquals(1, cnt.getAndIncrement()); complete(); }); req.response().end(content); }).listen(onSuccess(server -> { client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/", onSuccess(res -> { assertEquals(200, res.statusCode()); assertEquals("wibble", res.headers().get("extraheader")); res.bodyHandler(buff -> { assertEquals(Buffer.buffer(content), buff); complete(); }); })).end(); })); await(); }
@Test public void testResponseEndHandlers1() { waitFor(2); AtomicInteger cnt = new AtomicInteger(); server.requestHandler(req -> { req.response().headersEndHandler(v -> { // Insert another header req.response().putHeader("extraheader", "wibble"); assertEquals(0, cnt.getAndIncrement()); }); req.response().bodyEndHandler(v -> { assertEquals(0, req.response().bytesWritten()); assertEquals(1, cnt.getAndIncrement()); complete(); }); req.response().end(); }).listen(onSuccess(server -> { client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/", onSuccess(res -> { assertEquals(200, res.statusCode()); assertEquals("wibble", res.headers().get("extraheader")); complete(); })).end(); })); await(); }
private Map<Integer, Handler<Void>> getHeadersEndHandlers() { if (headersEndHandlers == null) { // order is important we we should traverse backwards headersEndHandlers = new TreeMap<>(Collections.reverseOrder()); response().headersEndHandler(v -> headersEndHandlers.values().forEach(handler -> handler.handle(null))); } return headersEndHandlers; }
private void prepareEmptyResponse() { committed = true; response.setStatusCode(getStatus()); transformHeaders(this, response, providerFactory); response.headersEndHandler(h -> { response.headers().remove(HttpHeaders.CONTENT_LENGTH); response.headers().set(HttpHeaders.CONNECTION, HttpHeaders.KEEP_ALIVE); }); }
/** * Provide a handler that will be called just before the headers are written to the wire.<p> * This provides a hook allowing you to add any more headers or do any more operations before this occurs. * @param handler the handler * @return a reference to this, so the API can be used fluently */ public io.vertx.rxjava.core.http.HttpServerResponse headersEndHandler(Handler<Void> handler) { delegate.headersEndHandler(handler); return this; }
@Override public HttpServerResponse headersEndHandler(Handler<Void> handler) { wrapped.headersEndHandler(handler); return this; }
@Override public HttpServerResponse headersEndHandler(Handler<Void> handler) { return response.headersEndHandler(handler); }
/** * Provide a handler that will be called just before the headers are written to the wire.<p> * This provides a hook allowing you to add any more headers or do any more operations before this occurs. * @param handler the handler * @return a reference to this, so the API can be used fluently */ public io.vertx.rxjava.core.http.HttpServerResponse headersEndHandler(Handler<Void> handler) { delegate.headersEndHandler(handler); return this; }
IntStream.range(0, numChunks).forEach(i -> content.append(chunk)); server.requestHandler(req -> { req.response().headersEndHandler(v -> {
@Test public void testResponseEndHandlers2() { waitFor(2); AtomicInteger cnt = new AtomicInteger(); String content = "blah"; server.requestHandler(req -> { req.response().headersEndHandler(v -> { // Insert another header req.response().putHeader("extraheader", "wibble"); assertEquals(0, cnt.getAndIncrement()); }); req.response().bodyEndHandler(v -> { assertEquals(content.length(), req.response().bytesWritten()); assertEquals(1, cnt.getAndIncrement()); complete(); }); req.response().end(content); }).listen(onSuccess(server -> { client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/", res -> { assertEquals(200, res.statusCode()); assertEquals("wibble", res.headers().get("extraheader")); res.bodyHandler(buff -> { assertEquals(Buffer.buffer(content), buff); complete(); }); }).end(); })); await(); }
private Map<Integer, Handler<Void>> getHeadersEndHandlers() { if (headersEndHandlers == null) { // order is important we we should traverse backwards headersEndHandlers = new TreeMap<>(Collections.reverseOrder()); response().headersEndHandler(v -> headersEndHandlers.values().forEach(handler -> handler.handle(null))); } return headersEndHandlers; }
@Test public void testResponseEndHandlers1() { waitFor(2); AtomicInteger cnt = new AtomicInteger(); server.requestHandler(req -> { req.response().headersEndHandler(v -> { // Insert another header req.response().putHeader("extraheader", "wibble"); assertEquals(0, cnt.getAndIncrement()); }); req.response().bodyEndHandler(v -> { assertEquals(0, req.response().bytesWritten()); assertEquals(1, cnt.getAndIncrement()); complete(); }); req.response().end(); }).listen(onSuccess(server -> { client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/", res -> { assertEquals(200, res.statusCode()); assertEquals("wibble", res.headers().get("extraheader")); complete(); }).end(); })); await(); }
@Test public void testResponseEndHandlersSendFile() throws Exception { waitFor(2); AtomicInteger cnt = new AtomicInteger(); String content = "iqdioqwdqwiojqwijdwqd"; File toSend = setupFile("somefile.txt", content); server.requestHandler(req -> { req.response().headersEndHandler(v -> { // Insert another header req.response().putHeader("extraheader", "wibble"); assertEquals(0, cnt.getAndIncrement()); }); req.response().bodyEndHandler(v -> { assertEquals(content.length(), req.response().bytesWritten()); assertEquals(1, cnt.getAndIncrement()); complete(); }); req.response().sendFile(toSend.getAbsolutePath()); }).listen(onSuccess(server -> { client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/", res -> { assertEquals(200, res.statusCode()); assertEquals("wibble", res.headers().get("extraheader")); res.bodyHandler(buff -> { assertEquals(Buffer.buffer(content), buff); complete(); }); }).end(); })); await(); }
resp.bodyEndHandler(null); resp.closeHandler(null); resp.headersEndHandler(null); } catch (Exception e) { fail("Was expecting to set to null the handlers when the response is completed");
private void prepareEmptyResponse() { committed = true; response.setStatusCode(getStatus()); transformHeaders(this, response, providerFactory); response.headersEndHandler(new Handler<Void>() { @Override public void handle(Void event) { response.headers().remove(HttpHeaders.CONTENT_LENGTH); response.headers().set(HttpHeaders.CONNECTION, HttpHeaders.KEEP_ALIVE); } }); }
@Override public void prepareChunkStream() { super.prepareChunkStream(); // fix bugs in superclass if(isWithoutBody()) { response.setChunked(false); response.headersEndHandler(h -> { response.headers().remove(HttpHeaders.CONTENT_LENGTH); response.headers().remove(HttpHeaders.CONTENT_TYPE); }); } }
@Override public void prepareChunkStream() { super.prepareChunkStream(); // fix bugs in superclass if(isWithoutBody()) { response.setChunked(false); response.headersEndHandler(h -> { response.headers().remove(HttpHeaders.CONTENT_LENGTH); response.headers().remove(HttpHeaders.CONTENT_TYPE); }); } }
@Override @Suspendable public void handle(RoutingContext routingContext) { try { FilterContext filterContext = buildFilterContext(routingContext); targetFilter.beforeHandleEndpoint(filterContext); routingContext.data().putAll(filterContext.getFilterVariables()); copyMultiMap(filterContext.getRequest().getHeaders(), routingContext.request().headers()); copyMultiMap(filterContext.getRequest().getParams(), routingContext.request().params()); // Ensure beforeSendHeaders and afterResponseSent are called insertIntoFilterChain(routingContext); routingContext.response().headersEndHandler(event -> dispatchToFilterChain(routingContext, Filter::afterHandleEndpoint)); routingContext.response().bodyEndHandler(event -> dispatchToFilterChain(routingContext, Filter::afterResponseSent)); if (filterContext.isSendResponseFromFilter()) { // Filter decided to send its own response endWithResponse(routingContext, filterContext); } else { routingContext.next(); } } catch (Throwable t) { LOG.error("Error occurred in handleBefore() on filterClassName=" + targetFilter.getClass().getName(), t); routingContext.next(); } }