diff --git a/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java b/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java index f49202dd73..0d9d94d34e 100644 --- a/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java +++ b/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java @@ -28,6 +28,11 @@ import static com.google.common.base.Strings.isNullOrEmpty; */ public abstract class AbstractMapper implements ExceptionMapper { + /** + * Holds the current exception for use in subclasses. + */ + protected Throwable error; + /** * Returns the response status to be given when the exception occurs. * @@ -37,6 +42,7 @@ public abstract class AbstractMapper implements ExceptionMa @Override public Response toResponse(E exception) { + error = exception; return response(responseStatus(), exception).build(); } @@ -50,6 +56,7 @@ public abstract class AbstractMapper implements ExceptionMa */ protected Response.ResponseBuilder response(Response.Status status, Throwable exception) { + error = exception; ObjectMapper mapper = new ObjectMapper(); String message = messageFrom(exception); ObjectNode result = mapper.createObjectNode() diff --git a/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java b/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java index 5a9050d0b8..778750e625 100644 --- a/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java +++ b/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java @@ -18,13 +18,19 @@ package org.onosproject.rest.exceptions; import javax.ws.rs.core.Response; import javax.ws.rs.ext.Provider; +import org.slf4j.Logger; + +import static org.slf4j.LoggerFactory.getLogger; + /** * Mapper for service not found exceptions to the INTERNAL_SERVER_ERROR response code. */ @Provider public class ServerErrorMapper extends AbstractMapper { + private static final Logger log = getLogger(ServerErrorMapper.class); @Override protected Response.Status responseStatus() { + log.warn("Unhandled REST exception", error); return Response.Status.INTERNAL_SERVER_ERROR; } }