@Test public void testUseResponseAfterComplete() throws Exception { server.requestHandler(req -> { HttpServerResponse resp = req.response(); assertFalse(resp.ended()); resp.end(); assertTrue(resp.ended()); checkHttpServerResponse(resp); testComplete(); }); startServer(); client.getNow(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, DEFAULT_TEST_URI, noOpHandler()); await(); }
@Test public void testServerChainingSendFile() throws Exception { File file = setupFile("test-server-chaining.dat", "blah"); server.requestHandler(req -> { assertTrue(req.response().sendFile(file.getAbsolutePath()) == req.response()); assertTrue(req.response().ended()); file.delete(); testComplete(); }); server.listen(onSuccess(server -> { client.request(HttpMethod.PUT, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, DEFAULT_TEST_URI, noOpHandler()).end(); })); await(); }
assertEquals(1, respEndHandlerCount.get()); assertTrue(resp.closed()); assertFalse(resp.ended()); try { resp.end();
private boolean valid() { return !httpServerResponse.closed() && !httpServerResponse.ended(); }
@Override public String getFormattedItem(AccessLogParam<RoutingContext> accessLogParam) { HttpServerResponse response = accessLogParam.getContextData().response(); if (null == response) { return EMPTY_RESULT; } if (response.closed() && !response.ended()) { LOGGER.warn( "Response is closed before sending any data. " + "Please check idle connection timeout for provider is properly configured."); return EMPTY_RESULT; } return String.valueOf(response.getStatusCode()); } }
@Test public void testUseResponseAfterComplete() throws Exception { server.requestHandler(req -> { HttpServerResponse resp = req.response(); assertFalse(resp.ended()); resp.end(); assertTrue(resp.ended()); checkHttpServerResponse(resp); testComplete(); }); startServer(); client.getNow(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, DEFAULT_TEST_URI, noOpHandler()); await(); }
/** * @return has the response already ended? */ public boolean ended() { boolean ret = delegate.ended(); return ret; }
protected void unhandledFailure(int statusCode, Throwable failure, RouterImpl router) { int code = statusCode != -1 ? statusCode : 500; Handler<RoutingContext> errorHandler = router.getErrorHandlerByStatusCode(code); if (errorHandler != null) { try { errorHandler.handle(this); } catch (Throwable t) { log.error("Error in error handler", t); } } if (!response().ended()) { try { response().setStatusCode(code); } catch (IllegalArgumentException e) { // means that there are invalid chars in the status message response() .setStatusMessage(HttpResponseStatus.valueOf(code).reasonPhrase()) .setStatusCode(code); } response().end(response().getStatusMessage()); } } }
when(request.path()).thenReturn("/path"); when(request.response()).thenReturn(response); when(response.ended()).thenReturn(true); router.handle(request); future.complete();
@Test public void testServerChainingSendFile() throws Exception { File file = setupFile("test-server-chaining.dat", "blah"); server.requestHandler(req -> { assertTrue(req.response().sendFile(file.getAbsolutePath()) == req.response()); assertTrue(req.response().ended()); file.delete(); testComplete(); }); server.listen(onSuccess(server -> { client.request(HttpMethod.PUT, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, DEFAULT_TEST_URI, noOpHandler()).end(); })); await(); }
private static void endQuietly(HttpServerResponse response) { if (response.ended()) { return; } try { response.end(); } catch (IllegalStateException e) { // Ignore it. } } }
assertEquals(1, respEndHandlerCount.get()); assertTrue(resp.closed()); assertFalse(resp.ended()); try { resp.end();
@Test public void testNextAfterResponseEnded() throws Exception { String path = "/blah"; router.route(path).handler(rc -> { rc.response().end(); rc.next(); // Call next }); router.route(path).handler(rc -> assertTrue(rc.response().ended())); testRequest(HttpMethod.GET, path, 200, "OK"); }
if (log.isTraceEnabled()) log.trace("IllegalArgumentException thrown during iteration", e); if (!this.response().ended()) unhandledFailure((e instanceof IllegalArgumentException) ? 400 : -1, e, route.router()); return true;
@Override protected void checkAndCloseResponse(int retry) { final HttpServerResponse response = context.response(); if (retry == 0 && !response.ended()) { response.end(); } }
protected void doNext(final HttpServerRequest request, final HttpServerResponse response) { // If response end it means that it's not needed to move next. if (!response.ended()) { this.context.next(); } }
protected void doNext(final HttpServerRequest request, final HttpServerResponse response) { // If response end it means that it's not needed to move next. if (!response.ended()) { this.context.next(); } }
@Override protected void respond(byte[] result, int statuscode) { final HttpServerResponse response = context.response(); if (!response.ended()) { ResponseExecution.updateHeaderAndStatuscode(headers, statuscode, response); if (result != null) { response.end(Buffer.buffer(result)); } else { response.end(); } } }
private void handleError(HttpServerResponse rep, Throwable e) { log.error(e); if (!rep.ended()) { rep.setStatusCode(500); rep.end(); } }
@Test public void testNextAfterResponseEnded() throws Exception { String path = "/blah"; router.route(path).handler(rc -> { rc.response().end(); rc.next(); // Call next }); router.route(path).handler(rc -> assertTrue(rc.response().ended())); testRequest(HttpMethod.GET, path, 200, "OK"); }