From c69f84afabfea34ed81e501bdfcfd8aea9c17c3e Mon Sep 17 00:00:00 2001 From: catbref Date: Tue, 26 Mar 2019 14:34:45 +0000 Subject: [PATCH] Added ApiExceptionManager to try to trace IllegalAnnotationExceptions --- .../qora/api/resource/ApiExceptionMapper.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/main/java/org/qora/api/resource/ApiExceptionMapper.java diff --git a/src/main/java/org/qora/api/resource/ApiExceptionMapper.java b/src/main/java/org/qora/api/resource/ApiExceptionMapper.java new file mode 100644 index 00000000..be111705 --- /dev/null +++ b/src/main/java/org/qora/api/resource/ApiExceptionMapper.java @@ -0,0 +1,35 @@ +package org.qora.api.resource; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.ExceptionMapper; +import javax.ws.rs.ext.Provider; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +@Provider +public class ApiExceptionMapper implements ExceptionMapper { + + private static final Logger LOGGER = LogManager.getLogger(ApiExceptionMapper.class); + + @Context + private HttpServletRequest request; + + @Context + private ServletContext servletContext; + + @Override + public Response toResponse(RuntimeException e) { + LOGGER.info(String.format("Exception %s during API call: %s", e.getClass().getCanonicalName(), request.getRequestURI())); + + if (e instanceof WebApplicationException) + return ((WebApplicationException) e).getResponse(); + + return Response.serverError().build(); + } + +}