Committed by
Gerrit Code Review
ONOS-3369: log an exception on REST server errors
Change-Id: I407ed7576ff79b5781d2a688c78367266643aaea
Showing
2 changed files
with
13 additions
and
0 deletions
... | @@ -29,6 +29,11 @@ import static com.google.common.base.Strings.isNullOrEmpty; | ... | @@ -29,6 +29,11 @@ import static com.google.common.base.Strings.isNullOrEmpty; |
29 | public abstract class AbstractMapper<E extends Throwable> implements ExceptionMapper<E> { | 29 | public abstract class AbstractMapper<E extends Throwable> implements ExceptionMapper<E> { |
30 | 30 | ||
31 | /** | 31 | /** |
32 | + * Holds the current exception for use in subclasses. | ||
33 | + */ | ||
34 | + protected Throwable error; | ||
35 | + | ||
36 | + /** | ||
32 | * Returns the response status to be given when the exception occurs. | 37 | * Returns the response status to be given when the exception occurs. |
33 | * | 38 | * |
34 | * @return response status | 39 | * @return response status |
... | @@ -37,6 +42,7 @@ public abstract class AbstractMapper<E extends Throwable> implements ExceptionMa | ... | @@ -37,6 +42,7 @@ public abstract class AbstractMapper<E extends Throwable> implements ExceptionMa |
37 | 42 | ||
38 | @Override | 43 | @Override |
39 | public Response toResponse(E exception) { | 44 | public Response toResponse(E exception) { |
45 | + error = exception; | ||
40 | return response(responseStatus(), exception).build(); | 46 | return response(responseStatus(), exception).build(); |
41 | } | 47 | } |
42 | 48 | ||
... | @@ -50,6 +56,7 @@ public abstract class AbstractMapper<E extends Throwable> implements ExceptionMa | ... | @@ -50,6 +56,7 @@ public abstract class AbstractMapper<E extends Throwable> implements ExceptionMa |
50 | */ | 56 | */ |
51 | protected Response.ResponseBuilder response(Response.Status status, | 57 | protected Response.ResponseBuilder response(Response.Status status, |
52 | Throwable exception) { | 58 | Throwable exception) { |
59 | + error = exception; | ||
53 | ObjectMapper mapper = new ObjectMapper(); | 60 | ObjectMapper mapper = new ObjectMapper(); |
54 | String message = messageFrom(exception); | 61 | String message = messageFrom(exception); |
55 | ObjectNode result = mapper.createObjectNode() | 62 | ObjectNode result = mapper.createObjectNode() | ... | ... |
... | @@ -18,13 +18,19 @@ package org.onosproject.rest.exceptions; | ... | @@ -18,13 +18,19 @@ package org.onosproject.rest.exceptions; |
18 | import javax.ws.rs.core.Response; | 18 | import javax.ws.rs.core.Response; |
19 | import javax.ws.rs.ext.Provider; | 19 | import javax.ws.rs.ext.Provider; |
20 | 20 | ||
21 | +import org.slf4j.Logger; | ||
22 | + | ||
23 | +import static org.slf4j.LoggerFactory.getLogger; | ||
24 | + | ||
21 | /** | 25 | /** |
22 | * Mapper for service not found exceptions to the INTERNAL_SERVER_ERROR response code. | 26 | * Mapper for service not found exceptions to the INTERNAL_SERVER_ERROR response code. |
23 | */ | 27 | */ |
24 | @Provider | 28 | @Provider |
25 | public class ServerErrorMapper extends AbstractMapper<RuntimeException> { | 29 | public class ServerErrorMapper extends AbstractMapper<RuntimeException> { |
30 | + private static final Logger log = getLogger(ServerErrorMapper.class); | ||
26 | @Override | 31 | @Override |
27 | protected Response.Status responseStatus() { | 32 | protected Response.Status responseStatus() { |
33 | + log.warn("Unhandled REST exception", error); | ||
28 | return Response.Status.INTERNAL_SERVER_ERROR; | 34 | return Response.Status.INTERNAL_SERVER_ERROR; |
29 | } | 35 | } |
30 | } | 36 | } | ... | ... |
-
Please register or login to post a comment