HttpManagedHandlerDecorator(AbstractDecoratingHttpHandler handler, final FastHttp http, final RouteOptions options) { super(handler, http); this.options = options; this.wrappers = new LazyInit<>(() -> HttpWrappers.assembleWrappers(http, options)); }
static HttpWrapper[] assembleWrappers(FastHttp http, RouteOptions options) { List<HttpWrapper> wrappers = U.list(); wrappers.add(new HttpAuthWrapper(options.roles())); TransactionMode txMode = U.or(options.transaction(), TransactionMode.NONE); if (txMode != TransactionMode.NONE) { wrappers.add(new HttpTxWrapper(txMode)); } Collections.addAll(wrappers, getConfiguredWrappers(http, options)); return U.arrayOf(HttpWrapper.class, wrappers); }
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; } } };
@Override public HttpWrapper[] call() { return HttpWrappers.assembleWrappers(http, options); } });
static HttpWrapper[] assembleWrappers(FastHttp http, RouteOptions options) { List<HttpWrapper> wrappers = U.list(); wrappers.add(new HttpAuthWrapper(options.roles())); TransactionMode txMode = U.or(options.transaction(), TransactionMode.NONE); if (txMode != TransactionMode.NONE) { wrappers.add(new HttpTxWrapper(txMode)); } Collections.addAll(wrappers, getConfiguredWrappers(http, options)); return U.arrayOf(HttpWrapper.class, wrappers); }
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; } } };