@Override public void handle(final Request req, final Response rsp, final Chain chain) throws Throwable { Optional<String> origin = req.header("Origin").toOptional(); Cors cors = this.cors.orElseGet(() -> req.require(Cors.class)); if (cors.enabled() && origin.isPresent()) { cors(cors, req, rsp, origin.get()); } chain.next(req, rsp); }
@Override public void handle(final Request req, final Response rsp, final Route.Chain chain) throws Throwable { logger.debug("open handle"); Handle handle = jdbi.open(); Optional.ofNullable(trx.configurer).ifPresent(c -> c.accept(handle)); req.set(trx.handle(), handle); logger.debug("new transaction: {}", handle); handle.begin(); rsp.after(new CommitTransaction(handle)); rsp.complete(new RollbackTransaction(handle)); rsp.complete(new CloseHandle(handle)); chain.next(req, rsp); } }
@Override public void handle(final Request req, final Response rsp, final Route.Chain chain) throws Throwable { /** * Get or generate a token */ Session session = req.session(); String token = session.get(name).toOptional().orElseGet(() -> { String newToken = generator.apply(req); session.set(name, newToken); return newToken; }); req.set(name, token); if (requireToken.test(req)) { String candidate = req.header(name).toOptional() .orElseGet(() -> req.param(name).toOptional().orElse(null)); if (!token.equals(candidate)) { throw new Err(Status.FORBIDDEN, "Invalid Csrf token: " + candidate); } } chain.next(req, rsp); } }
@Override public void handle(final Request req, final Response rsp, final Chain chain) throws Throwable { Object input = supplier.apply(req, rsp, chain); Object output = Try .apply(() -> mapper.map(input)) .recover(ClassCastException.class, input) .get(); rsp.send(output); chain.next(req, rsp); }
@Override default void handle(final Request req, final Response rsp, final Chain chain) throws Throwable { rsp.complete(this); chain.next(req, rsp); }
@Override default void handle(final Request req, final Response rsp, final Chain chain) throws Throwable { handle(req, rsp); chain.next(req, rsp); }
@Override default void handle(final Request req, final Response rsp, final Chain chain) throws Throwable { rsp.after(this); chain.next(req, rsp); }
@Override public void handle(final Request req, final Response rsp, final Route.Chain chain) throws Throwable { String path = req.path(); for (Route.Definition router : routes) { // ignore glob route if (!router.glob()) { Optional<Route> ifRoute = router .matches(Route.GET, path, MediaType.all, MediaType.ALL); if (ifRoute.isPresent()) { // route found rsp.length(0); ((RouteImpl) ifRoute.get()).handle(req, rsp, chain); return; } } } // not handled, just call next chain.next(req, rsp); } }
@Override public void handle(Request req, Response rsp, Route.Chain chain) throws Throwable { Object result = invoke(req, rsp, chain); if (!rsp.committed()) { Class<?> returnType = handler.getReturnType(); if (returnType == void.class) { rsp.status(Status.NO_CONTENT); } else { rsp.status(Status.OK); rsp.send(result); } } chain.next(req, rsp); }
@Override default void handle(final Request req, final Response rsp, final Chain chain) throws Throwable { handle(req, rsp); chain.next(req, rsp); }
@Override default void handle(final Request req, final Response rsp, final Route.Chain chain) throws Throwable { handle(req, rsp); chain.next(req, rsp); }
@Override public Object adapt(WebContext context, Object... parameters) throws Throwable { chain.next(req, rsp); return null; } }
@Override public void handle(final Request req, final Response rsp, final Chain chain) throws Throwable { RootUnitOfWork uow = (RootUnitOfWork) req.require(UnitOfWork.class); // start transaction uow.begin(); rsp.after(after(uow)); rsp.complete(complete(uow)); // move next chain.next(req, rsp); }
@Override default void handle(final Request req, final Response rsp, final Chain chain) throws Throwable { rsp.after(this); chain.next(req, rsp); }
@Override default void handle(final Request req, final Response rsp, final Route.Chain chain) throws Throwable { Object result = handle(); rsp.send(result); chain.next(req, rsp); }
@Override public void handle(final Request req, final Response rsp, final Chain chain) throws Throwable { Object input = supplier.apply(req, rsp, chain); Object output = Try .apply(() -> mapper.map(input)) .recover(ClassCastException.class, input) .get(); rsp.send(output); chain.next(req, rsp); }
@Override public void handle(final Request req, final Response rsp, final Route.Chain chain) throws Throwable { Optional<String> value = req.cookie(cname).toOptional(); Map<String, String> source = value.map(decoder::apply) .orElseGet(HashMap::new); FlashMap flashScope = new FlashMap(source); req.set(FlashScope.NAME, flashScope); // wrap & proceed rsp.after(finalizeFlash(source, flashScope)); chain.next(req, rsp); }
/** * Invokes the next route in the chain. * * @param req A HTTP request. * @param rsp A HTTP response. * @throws Throwable If invocation goes wrong. */ default void next(final Request req, final Response rsp) throws Throwable { next(null, req, rsp); }
@Override default void handle(final Request req, final Response rsp, final Route.Chain chain) throws Throwable { Object result = handle(req); rsp.send(result); chain.next(req, rsp); }
@Override default void handle(final Request req, final Response rsp, final Chain chain) throws Throwable { rsp.complete(this); chain.next(req, rsp); }