package org.jboss.resteasy.springmvc; import org.jboss.resteasy.core.SynchronousDispatcher; import org.jboss.resteasy.spi.Failure; import org.jboss.resteasy.spi.HttpResponse; import org.jboss.resteasy.spi.ResteasyDeployment; import org.springframework.web.servlet.View; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; @SuppressWarnings("rawtypes") public class ResteasyNoResourceFoundView implements View { private ResteasyDeployment deployment; public ResteasyDeployment getDeployment() { return deployment; } public void setDeployment(ResteasyDeployment deployment) { this.deployment = deployment; } public String getContentType() { return null; } public void render(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { final Failure failure = getFailure(model); new ResteasyWebHandlerTemplate<Void>(deployment.getProviderFactory()) { protected Void handle(ResteasyRequestWrapper requestWrapper, HttpResponse response) throws Exception { SynchronousDispatcher dispatcher = (SynchronousDispatcher)deployment.getDispatcher(); dispatcher.writeException(requestWrapper.getHttpRequest(), response, failure); return null; } }.handle(new ResteasyRequestWrapper(request), response); } private Failure getFailure(Map model) { for (Object value : model.values()) if (value instanceof Failure) return (Failure) value; return null; } }