private HttpResponse onError(ServiceRequestContext ctx, Throwable cause) { return exceptionHandler.handleException(ctx, ctx.request(), cause); }
private static ArmeriaServerHttpRequest request(ServiceRequestContext ctx) { return new ArmeriaServerHttpRequest(ctx, ctx.request(), DataBufferFactoryWrapper.DEFAULT); }
@Override @SuppressWarnings("unchecked") public HttpResponse convertResponse(ServiceRequestContext ctx, HttpHeaders headers, @Nullable Object result, HttpHeaders trailingHeaders) throws Exception { final CompletableFuture<?> f; if (result instanceof Publisher) { f = collectFrom((Publisher<Object>) result); } else if (result instanceof Stream) { f = collectFrom((Stream<Object>) result, ctx.blockingTaskExecutor()); } else { return ResponseConverterFunction.fallthrough(); } assert f != null; return HttpResponse.from(f.handle((aggregated, cause) -> { if (cause != null) { return exceptionHandler.handleException(ctx, ctx.request(), cause); } try { return responseConverter.convertResponse(ctx, headers, aggregated, trailingHeaders); } catch (Exception e) { return exceptionHandler.handleException(ctx, ctx.request(), e); } })); } }