protected ServerResponse invokeOnTarget( HttpRequest request, HttpResponse response, Object target) { if (validator != null) { violationsContainer = new ViolationsContainer<Object>(validator.validate(target)); request.setAttribute(ViolationsContainer.class.getName(), violationsContainer); request.setAttribute(GeneralValidator.class.getName(), validator); } PostMatchContainerRequestContext requestContext = new PostMatchContainerRequestContext(request, this); for (ContainerRequestFilter filter : requestFilters) { try { filter.filter(requestContext); } catch (IOException e) { throw new RuntimeException(e); } ServerResponse serverResponse = (ServerResponse) requestContext.getResponseAbortedWith(); if (serverResponse != null) { return prepareResponse(serverResponse); } } Object rtn = null; try { rtn = methodInjector.invoke(request, response, target); } catch (WebApplicationException wae) { prepareResponse(ServerResponse.convertToServerResponse(wae.getResponse())); throw wae; } if (violationsContainer != null && violationsContainer.size() > 0) { throw new ResteasyViolationExceptionExtension(violationsContainer); } if (request.isSuspended()) { AbstractAsynchronousResponse asyncResponse = (AbstractAsynchronousResponse) request.getAsynchronousResponse(); if (asyncResponse == null) return null; asyncResponse.setAnnotations(method.getAnnotations()); asyncResponse.setWriterInterceptors(writerInterceptors); asyncResponse.setResponseFilters(responseFilters); return null; } if (rtn == null || method.getReturnType().equals(void.class)) { return prepareResponse((ServerResponse) Response.noContent().build()); } if (Response.class.isAssignableFrom(method.getReturnType()) || rtn instanceof Response) { return prepareResponse(ServerResponse.convertToServerResponse((Response) rtn)); } Response.ResponseBuilder builder = Response.ok(rtn); builder.type(resolveContentType(request, rtn)); ServerResponse jaxrsResponse = (ServerResponse) builder.build(); jaxrsResponse.setGenericType(genericReturnType); return prepareResponse(jaxrsResponse); }