public HttpServerExchange addExchangeCompleteListener(final ExchangeCompletionListener listener) { if(isComplete() || this.exchangeCompletionListenersCount == -1) { throw UndertowMessages.MESSAGES.exchangeAlreadyComplete(); } final int exchangeCompletionListenersCount = this.exchangeCompletionListenersCount++; ExchangeCompletionListener[] exchangeCompleteListeners = this.exchangeCompleteListeners; if (exchangeCompleteListeners == null || exchangeCompleteListeners.length == exchangeCompletionListenersCount) { ExchangeCompletionListener[] old = exchangeCompleteListeners; this.exchangeCompleteListeners = exchangeCompleteListeners = new ExchangeCompletionListener[exchangeCompletionListenersCount + 2]; if(old != null) { System.arraycopy(old, 0, exchangeCompleteListeners, 0, exchangeCompletionListenersCount); } } exchangeCompleteListeners[exchangeCompletionListenersCount] = listener; return this; }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { if(!exchange.isComplete()) { final long start = System.currentTimeMillis(); exchange.addExchangeCompleteListener(new ExchangeCompletionListener() { @Override public void exchangeEvent(HttpServerExchange exchange, NextListener nextListener) { long time = System.currentTimeMillis() - start; totalResult.update((int) time, exchange.getStatusCode()); nextListener.proceed(); } }); } next.handleRequest(exchange); }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { proxyHandler.handleRequest(exchange); if(!exchange.isDispatched() && !exchange.isComplete()) { exchange.setStatusCode(200); next.handleRequest(exchange); } } };
@Override public final void handleRequest(HttpServerExchange exchange) throws Exception { PathTemplateMatch params = exchange.getAttachment(PathTemplateMatch.ATTACHMENT_KEY); String name = URLDecoder.decode(params.getParameters().get("name"), UTF_8); try { Object result = doOperation(exchange, name); if (exchange.isComplete()) { return; } if (result == null) { exchange.setStatusCode(StatusCodes.OK); } else if (result instanceof Context) { exchange.setStatusCode(StatusCodes.NO_CONTENT); } else { doMarshall(exchange, result); } } catch (Throwable e) { sendException(exchange, StatusCodes.INTERNAL_SERVER_ERROR, e); } }
/** * Only allow the request through if successfully authenticated or if authentication is not required. * * @see io.undertow.server.HttpHandler#handleRequest(io.undertow.server.HttpServerExchange) */ @Override public void handleRequest(final HttpServerExchange exchange) throws Exception { if(exchange.isInIoThread()) { exchange.dispatch(this); return; } SecurityContext context = exchange.getSecurityContext(); if (context.authenticate()) { if(!exchange.isComplete()) { next.handleRequest(exchange); } } else { exchange.endExchange(); } }
if(result == RunResult.RUN && (exchange.isComplete() || !exchange.isDispatched())) { entryPoint.requestComplete(); } else if(result == RunResult.RUN) {
public HttpServerExchange addExchangeCompleteListener(final ExchangeCompletionListener listener) { if(isComplete() || this.exchangeCompletionListenersCount == -1) { throw UndertowMessages.MESSAGES.exchangeAlreadyComplete(); } final int exchangeCompletionListenersCount = this.exchangeCompletionListenersCount++; ExchangeCompletionListener[] exchangeCompleteListeners = this.exchangeCompleteListeners; if (exchangeCompleteListeners == null || exchangeCompleteListeners.length == exchangeCompletionListenersCount) { ExchangeCompletionListener[] old = exchangeCompleteListeners; this.exchangeCompleteListeners = exchangeCompleteListeners = new ExchangeCompletionListener[exchangeCompletionListenersCount + 2]; if(old != null) { System.arraycopy(old, 0, exchangeCompleteListeners, 0, exchangeCompletionListenersCount); } } exchangeCompleteListeners[exchangeCompletionListenersCount] = listener; return this; }
public HttpServerExchange addExchangeCompleteListener(final ExchangeCompletionListener listener) { if(isComplete() || this.exchangeCompletionListenersCount == -1) { throw UndertowMessages.MESSAGES.exchangeAlreadyComplete(); } final int exchangeCompletionListenersCount = this.exchangeCompletionListenersCount++; ExchangeCompletionListener[] exchangeCompleteListeners = this.exchangeCompleteListeners; if (exchangeCompleteListeners == null || exchangeCompleteListeners.length == exchangeCompletionListenersCount) { ExchangeCompletionListener[] old = exchangeCompleteListeners; this.exchangeCompleteListeners = exchangeCompleteListeners = new ExchangeCompletionListener[exchangeCompletionListenersCount + 2]; if(old != null) { System.arraycopy(old, 0, exchangeCompleteListeners, 0, exchangeCompletionListenersCount); } } exchangeCompleteListeners[exchangeCompletionListenersCount] = listener; return this; }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { if(!exchange.isComplete()) { final long start = System.currentTimeMillis(); exchange.addExchangeCompleteListener(new ExchangeCompletionListener() { @Override public void exchangeEvent(HttpServerExchange exchange, NextListener nextListener) { long time = System.currentTimeMillis() - start; totalResult.update((int) time, exchange.getStatusCode()); nextListener.proceed(); } }); } next.handleRequest(exchange); }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { if(!exchange.isComplete()) { final long start = System.currentTimeMillis(); exchange.addExchangeCompleteListener(new ExchangeCompletionListener() { @Override public void exchangeEvent(HttpServerExchange exchange, NextListener nextListener) { long time = System.currentTimeMillis() - start; totalResult.update((int) time, exchange.getStatusCode()); nextListener.proceed(); } }); } next.handleRequest(exchange); }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { proxyHandler.handleRequest(exchange); if(!exchange.isDispatched() && !exchange.isComplete()) { exchange.setStatusCode(200); next.handleRequest(exchange); } } };
private boolean intercept(Interceptor.Type type, HttpServerExchange exchange, String url) { Exchange requestExchange = new Exchange(exchange); List<Interceptor> matches = interceptors.stream().filter(i -> i.match(type, url)).collect(Collectors.toList()); for (Interceptor interceptor : matches) { try { interceptor.intercept(requestExchange); } catch (Exception ex) { logger.error("Error handling {} interceptor for url {}, next interceptor will not proceed", type.name(), url); if (Interceptor.Type.BEFORE.equals(type)) { ErrorHandler<Exception> orFallback = exceptionMapper.getOrFallback(ex); orFallback.onException(ex, requestExchange); } if (!exchange.isComplete()) { exchange.endExchange(); } return false; } } return true; }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { proxyHandler.handleRequest(exchange); if(!exchange.isDispatched() && !exchange.isComplete()) { exchange.setStatusCode(200); next.handleRequest(exchange); } } };
/** * Only allow the request through if successfully authenticated or if authentication is not required. * * @see io.undertow.server.HttpHandler#handleRequest(io.undertow.server.HttpServerExchange) */ @Override public void handleRequest(final HttpServerExchange exchange) throws Exception { SecurityContext context = exchange.getSecurityContext(); if (context.authenticate()) { if(!exchange.isComplete()) { next.handleRequest(exchange); } } else { exchange.endExchange(); } } }
@Override public void handleRequest(HttpServerExchange exchange, RequestContext context) throws Exception { final long requestStartTime = context.getRequestStartTime(); if (!exchange.isComplete()) { exchange.addExchangeCompleteListener((httpServerExchange, nextListener) -> { addMetrics(requestStartTime, httpServerExchange, context); nextListener.proceed(); }); } if (!exchange.isResponseComplete() && getNext() != null) { next(exchange, context); } }
/** * Only allow the request through if successfully authenticated or if authentication is not required. * * @see io.undertow.server.HttpHandler#handleRequest(io.undertow.server.HttpServerExchange) */ @Override public void handleRequest(final HttpServerExchange exchange) throws Exception { if(exchange.isInIoThread()) { exchange.dispatch(this); return; } SecurityContext context = exchange.getSecurityContext(); if (context.authenticate()) { if(!exchange.isComplete()) { next.handleRequest(exchange); } } else { exchange.endExchange(); } }
/** * Only allow the request through if successfully authenticated or if authentication is not required. * * @throws java.lang.Exception * @see io.undertow.server.HttpHandler#handleRequest(io.undertow.server.HttpServerExchange) */ @Override public void handleRequest(HttpServerExchange exchange, RequestContext context) throws Exception { if(exchange.isInIoThread()) { exchange.dispatch(this); return; } SecurityContext rcontext = exchange.getSecurityContext(); if (rcontext.authenticate()) { if(!exchange.isComplete()) { next(exchange, context); } } else { exchange.endExchange(); } }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { final long startTime = clock.monotonicTime(); if (!exchange.isComplete()) { exchange.addExchangeCompleteListener((exchange1, nextListener) -> { getTimeBuilder(exchange).register(registry) .record(clock.monotonicTime() - startTime, TimeUnit.NANOSECONDS); nextListener.proceed(); }); } next.handleRequest(exchange); }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { final boolean proceed = service.beginRequest(); try { if (proceed) { next.handleRequest(exchange); } else { exchange.setStatusCode(503); exchange.endExchange(); } } finally { if (proceed && (exchange.isComplete() || !exchange.isDispatched())) { service.endRequest(); } else if (proceed) { exchange.addExchangeCompleteListener(listener); } } }
@Override public void close() { ActionContext ctx = ctx(); if (!exchange.isComplete()) { try { UndertowRequest req = (UndertowRequest) ctx.req(); req.closeAndDrainRequest(); } finally { ActResponse resp = ctx.resp(); resp.close(); } } else { try { UndertowRequest req = (UndertowRequest) ctx.req(); req.freeResources(); } finally { UndertowResponse resp = (UndertowResponse) ctx.resp(); resp.freeResources(); } } }