diff --git a/scm-webapp/src/main/java/sonia/scm/api/ContextualFallbackExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/ContextualFallbackExceptionMapper.java index 6034ff3df5..6a668cc0b9 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/ContextualFallbackExceptionMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/ContextualFallbackExceptionMapper.java @@ -1,32 +1,19 @@ package sonia.scm.api; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.slf4j.MDC; import sonia.scm.ExceptionWithContext; -import sonia.scm.api.v2.resources.ErrorDto; -import sonia.scm.web.VndMediaType; +import sonia.scm.api.rest.ContextualExceptionMapper; +import sonia.scm.api.v2.resources.ExceptionWithContextToErrorDtoMapper; -import javax.ws.rs.core.Response; -import javax.ws.rs.ext.ExceptionMapper; +import javax.inject.Inject; import javax.ws.rs.ext.Provider; +import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; + @Provider -public class ContextualFallbackExceptionMapper implements ExceptionMapper { +public class ContextualFallbackExceptionMapper extends ContextualExceptionMapper { - private static final Logger logger = LoggerFactory.getLogger(ContextualFallbackExceptionMapper.class); - - @Override - public Response toResponse(ExceptionWithContext exception) { - logger.warn("mapping unexpected {} to status code 500", exception.getClass().getName(), exception); - ErrorDto errorDto = new ErrorDto(); - errorDto.setMessage(exception.getMessage()); - errorDto.setContext(exception.getContext()); - errorDto.setErrorCode(exception.getCode()); - errorDto.setTransactionId(MDC.get("transaction_id")); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR) - .entity(errorDto) - .type(VndMediaType.ERROR_TYPE) - .build(); + @Inject + public ContextualFallbackExceptionMapper(ExceptionWithContextToErrorDtoMapper mapper) { + super(ExceptionWithContext.class, INTERNAL_SERVER_ERROR, mapper); } }