1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.catalog.controller;
18
19 import org.apache.logging.log4j.LogManager;
20 import org.apache.logging.log4j.Logger;
21 import org.springframework.data.rest.webmvc.support.ExceptionMessage;
22 import org.springframework.http.HttpHeaders;
23 import org.springframework.http.HttpStatus;
24 import org.springframework.http.ResponseEntity;
25 import org.springframework.web.bind.annotation.ControllerAdvice;
26 import org.springframework.web.bind.annotation.ExceptionHandler;
27 import org.springframework.web.bind.annotation.ResponseBody;
28 import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
29
30 @ControllerAdvice
31 public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
32 private static final Logger LOGGER = LogManager.getLogger();
33
34 @ExceptionHandler({ Exception.class })
35 @ResponseBody
36 public ResponseEntity<?> handleAnyException(Exception e) {
37 return errorResponse(e, HttpStatus.INTERNAL_SERVER_ERROR);
38 }
39
40 protected ResponseEntity<ExceptionMessage> errorResponse(Throwable throwable,
41 HttpStatus status) {
42 if (null != throwable) {
43 LOGGER.error("error caught: " + throwable.getMessage(), throwable);
44 return response(new ExceptionMessage(throwable), status);
45 } else {
46 LOGGER.error("unknown error caught in RESTController, {}", status);
47 return response(null, status);
48 }
49 }
50
51 protected <T> ResponseEntity<T> response(T body, HttpStatus status) {
52 LOGGER.debug("Responding with a status of {}", status);
53 return new ResponseEntity<>(body, new HttpHeaders(), status);
54 }
55 }