From 939261957262137ebc09ef693f230701b1a1a90d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 14 Dec 2018 10:42:19 +0100 Subject: [PATCH] Map JAX NotFoundException to 404 --- .../scm/api/FallbackExceptionMapper.java | 11 +----- .../scm/api/JaxNotFoundExceptionMapper.java | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 scm-webapp/src/main/java/sonia/scm/api/JaxNotFoundExceptionMapper.java diff --git a/scm-webapp/src/main/java/sonia/scm/api/FallbackExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/FallbackExceptionMapper.java index feb5341e2d..c687af4826 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/FallbackExceptionMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/FallbackExceptionMapper.java @@ -4,10 +4,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; import sonia.scm.api.v2.resources.ErrorDto; -import sonia.scm.api.v2.resources.ExceptionWithContextToErrorDtoMapper; import sonia.scm.web.VndMediaType; -import javax.inject.Inject; import javax.ws.rs.core.Response; import javax.ws.rs.ext.ExceptionMapper; import javax.ws.rs.ext.Provider; @@ -20,16 +18,9 @@ public class FallbackExceptionMapper implements ExceptionMapper { private static final String ERROR_CODE = "CmR8GCJb31"; - private final ExceptionWithContextToErrorDtoMapper mapper; - - @Inject - public FallbackExceptionMapper(ExceptionWithContextToErrorDtoMapper mapper) { - this.mapper = mapper; - } - @Override public Response toResponse(Exception exception) { - logger.debug("map {} to status code 500", exception); + logger.debug("map exception to status code 500", exception); ErrorDto errorDto = new ErrorDto(); errorDto.setMessage("internal server error"); errorDto.setContext(Collections.emptyList()); diff --git a/scm-webapp/src/main/java/sonia/scm/api/JaxNotFoundExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/JaxNotFoundExceptionMapper.java new file mode 100644 index 0000000000..3283dedf3f --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/api/JaxNotFoundExceptionMapper.java @@ -0,0 +1,35 @@ +package sonia.scm.api; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import sonia.scm.api.v2.resources.ErrorDto; +import sonia.scm.web.VndMediaType; + +import javax.ws.rs.NotFoundException; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.ExceptionMapper; +import javax.ws.rs.ext.Provider; +import java.util.Collections; + +@Provider +public class JaxNotFoundExceptionMapper implements ExceptionMapper { + + private static final Logger logger = LoggerFactory.getLogger(JaxNotFoundExceptionMapper.class); + + private static final String ERROR_CODE = "92RCCCMHO1"; + + @Override + public Response toResponse(NotFoundException exception) { + logger.debug(exception.getMessage()); + ErrorDto errorDto = new ErrorDto(); + errorDto.setMessage("path not found"); + errorDto.setContext(Collections.emptyList()); + errorDto.setErrorCode(ERROR_CODE); + errorDto.setTransactionId(MDC.get("transaction_id")); + return Response.status(Response.Status.NOT_FOUND) + .entity(errorDto) + .type(VndMediaType.ERROR_TYPE) + .build(); + } +}