001package systems.dmx.webservice.provider; 002 003import systems.dmx.core.util.UniversalExceptionMapper; 004 005import javax.servlet.http.HttpServletRequest; 006 007import javax.ws.rs.core.Context; 008import javax.ws.rs.core.Response; 009import javax.ws.rs.ext.ExceptionMapper; 010import javax.ws.rs.ext.Provider; 011 012 013 014/** 015 * This mapper maps <i>all</i> Throwables to a suitable response. 016 * <p> 017 * We don't want Jersey to re-throw anything to the HTTP container as this would result in logging 018 * the exception twice and possibly in interspersed illegible stack traces (see #484). 019 * <p> 020 * 2 additional aspects are handled: 021 * - Logging the exception. 022 * - Enriching the response with an error entity. 023 */ 024@Provider 025public class CatchAllExceptionMapper implements ExceptionMapper<Throwable> { 026 027 // ---------------------------------------------------------------------------------------------- Instance Variables 028 029 @Context 030 HttpServletRequest request; 031 032 // -------------------------------------------------------------------------------------------------- Public Methods 033 034 @Override 035 public Response toResponse(Throwable e) { 036 return new UniversalExceptionMapper(e, request).toResponse(); 037 } 038}