Filter next = pipeline.next(); if (next instanceof Route.ZeroArgHandler) { ref.set(((Route.ZeroArgHandler) next).handle()); } else if (next instanceof Route.OneArgHandler) { ref.set(((Route.OneArgHandler) next).handle(req));
Filter next = pipeline.next(); if (next instanceof Route.ZeroArgHandler) { ref.set(((Route.ZeroArgHandler) next).handle()); } else if (next instanceof Route.OneArgHandler) { ref.set(((Route.OneArgHandler) next).handle(req));
public RouteImpl(final Filter filter, final Definition route, final String method, final String path, final List<MediaType> produces, final Map<Object, String> vars, final Mapper<?> mapper, final Source source) { this.filter = filter; if (mapper != null) { if (filter instanceof Route.OneArgHandler) { this.filter = new MappedHandler((req, rsp) -> ((Route.OneArgHandler) filter).handle(req), mapper); } else if (filter instanceof Route.ZeroArgHandler) { this.filter = new MappedHandler((req, rsp) -> ((Route.ZeroArgHandler) filter).handle(), mapper); } else if (filter instanceof MvcHandler) { if (((MvcHandler) filter).method().getReturnType() == void.class) { this.filter = filter; } else { this.filter = new MappedHandler((req, rsp, chain) -> ((MvcHandler) filter).invoke(req, rsp, chain), mapper); } } else { this.filter = filter; } } this.route = route; this.method = method; this.produces = produces; this.vars = vars; this.source = source; this.path = Route.unerrpath(path); }
/** * Functional version of {@link Deferred#Deferred(Initializer)}. To use ideally with one * or more {@link Executor}: * * <pre>{@code * { * executor("cached", Executors.newCachedExecutor()); * * get("/fork", deferred("cached", () -> { * return "OK"; * })); * } * }</pre> * * This handler automatically {@link Deferred#resolve(Object)} or * {@link Deferred#reject(Throwable)} a route handler response. * * @param executor Executor to run the deferred. * @param handler Application block. * @return A new deferred handler. */ @Nonnull public static Deferred deferred(final String executor, final Route.ZeroArgHandler handler) { return deferred(executor, req -> handler.handle()); }
@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); }
public RouteImpl(final Filter filter, final Definition route, final String method, final String path, final List<MediaType> produces, final Map<Object, String> vars, final Mapper<?> mapper, final Source source) { this.filter = filter; if (mapper != null) { if (filter instanceof Route.OneArgHandler) { this.filter = new MappedHandler((req, rsp) -> ((Route.OneArgHandler) filter).handle(req), mapper); } else if (filter instanceof Route.ZeroArgHandler) { this.filter = new MappedHandler((req, rsp) -> ((Route.ZeroArgHandler) filter).handle(), mapper); } else if (filter instanceof MvcHandler) { if (((MvcHandler) filter).method().getReturnType() == void.class) { this.filter = filter; } else { this.filter = new MappedHandler((req, rsp, chain) -> ((MvcHandler) filter).invoke(req, rsp, chain), mapper); } } else { this.filter = filter; } } this.route = route; this.method = method; this.produces = produces; this.vars = vars; this.source = source; this.path = Route.unerrpath(path); }
/** * Functional version of {@link Deferred#Deferred(Initializer)}. To use ideally with one * or more {@link Executor}: * * <pre>{@code * { * executor("cached", Executors.newCachedExecutor()); * * get("/fork", deferred("cached", () -> { * return "OK"; * })); * } * }</pre> * * This handler automatically {@link Deferred#resolve(Object)} or * {@link Deferred#reject(Throwable)} a route handler response. * * @param executor Executor to run the deferred. * @param handler Application block. * @return A new deferred handler. */ @Nonnull public static Deferred deferred(final String executor, final Route.ZeroArgHandler handler) { return deferred(executor, req -> handler.handle()); }
@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); }