@Override public Object getParamValue(Req req) { return req.response(); }
public static void resultToResponse(Req req, Object result) { if (result instanceof Req) { if (req != result) { req.response().result("Unknown request instance was received as result!"); } } else if (result instanceof Resp) { if (req.response() != result) { req.response().result("Unknown response instance was received as result!"); } } else if (!(result instanceof HttpStatus)) { req.response().result(result); } }
@Override protected Object handleReq(Channel channel, boolean isKeepAlive, Req req) throws Exception { return handler.execute(req, req.response()); }
@Override public Object getParamValue(Req req) { return req.response().screen(); }
@Override protected Object handleReq(Channel channel, boolean isKeepAlive, Req req) throws Exception { return handler.execute(req.response()); }
@Override protected Object handleReq(Channel ctx, boolean isKeepAlive, Req req) throws Exception { return handler.execute(req, req.response()); }
@Override public void setHeader(String name, String value) { req().response().header(name, value); }
public static void saveTokenBeforeRenderingHeaders(Req req, Map<String, Serializable> tokenData) { String token = Tokens.serialize(tokenData); setResponseTokenCookie(req.response(), token); }
@Override public String view() { return req().response().view(); }
@Override public Object execute(Req x) { String domain = this.domain.getOrNull(); String loginURL = OAuth.getLoginURL(x, provider, domain); return x.response().redirect(loginURL); }
public static Object resultOf(Req req, Object result) { result = HandlerResultProcessor.INSTANCE.postProcessResult(req, result); HttpUtils.resultToResponse(req, result); return req.response().result(); }
public static void reload(Req x) { Map<String, String> sel = U.map("body", PAGE_RELOAD); x.response().json(U.map("_sel_", sel)); }
public static Object err(Req req, String msg) { if (isCurl(req)) { return req.response().plain(AnsiColor.red(msg + "\n")); } return details(msg, false); }
public static Object ok(Req req, String msg) { if (isCurl(req)) { return req.response().plain(AnsiColor.green(msg + "\n")); } return details(msg, true); }
void error(final Req req, final Throwable error, LogLevel logLevel) { try { logError(req, error, logLevel); Resp resp = req.response().code(500).result(null); Object result = Customization.of(req).errorHandler().handleError(req, resp, error); HttpUtils.resultOf(req, result); } catch (Exception e) { Log.error("An error occurred inside the error handler!", e); HttpUtils.resultToResponse(req, HttpUtils.getErrorInfo(req.response(), e)); } }
protected Object defaultErrorHandling(Req req, Throwable error) { if (error instanceof NotFound) { Resp resp = req.response().code(404); if (resp.contentType() == MediaType.JSON) { return error; } else { return resp.view("404").result(U.map("req", req)); } } return error; }
@Override public void renderPage(Req req, String content, OutputStream out) { U.notNull(content, "page content"); Resp resp = req.response(); if (isFullPage(req, content)) { WritableUtils.writeUTF8(new WritableOutputStream(out), content); return; } Screen screen = resp.screen(); screen.content(GUI.hardcoded(content)); screen.render(out); }
private Object transform(Mapper<Object, Object> transformation, Object resultOrError) throws Exception { U.notNull(transformation, "transformation"); if (HttpWrappers.shouldTransform(resultOrError)) { return transformation.map(resultOrError); } else { Resp resp = req.response(); if (HttpWrappers.shouldTransform(resp.result())) { resp.result(transformation.map(resp.result())); } return resultOrError; } } };
@SuppressWarnings("unchecked") public Object postProcessResult(Req req, Object result) { if (result instanceof HttpStatus) { return result; } else if (result instanceof Req) { U.must(req == result, "Unknown request instance was received as result!"); return reqToStatus(req, result); } else if (result instanceof Resp) { U.must(req != null && req.response() == result, "Unknown response instance was received as result!"); return reqToStatus(req, result); } else if (result == null || result instanceof NotFound) { // not found return HttpStatus.NOT_FOUND; } else if ((result instanceof Future<?>) || (result instanceof org.rapidoid.concurrent.Future<?>)) { // async if (req != null) { req.async(); } return HttpStatus.ASYNC; } else if (result instanceof Results) { return ((Results) result).all(); // fetch while still inside tx (potentially) } else { return result; } }
private void execHandlerJob(final Channel channel, final boolean isKeepAlive, final MediaType contentType, final Req req) { With.tag(CTX_TAG_HANDLER).exchange(req).run(() -> { try { req.response() .view(options.view()) .contentType(options.contentType()) .mvc(options.mvc()); handleWithWrappers(channel, isKeepAlive, contentType, req, wrappers.get()); } catch (Throwable e) { handleError(req, e); } }); }