Open Kilda Java Documentation
CustomExceptionMapper.java
Go to the documentation of this file.
1 package org.openkilda.security.mapper;
2 
3 import static java.util.stream.Collectors.joining;
4 
5 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory;
7 
8 import org.springframework.http.HttpStatus;
9 import org.springframework.http.ResponseEntity;
10 import org.springframework.web.bind.annotation.ControllerAdvice;
11 import org.springframework.web.bind.annotation.ExceptionHandler;
12 import org.springframework.web.context.request.WebRequest;
13 
14 import java.util.Collections;
15 
16 import javax.validation.ConstraintViolation;
17 import javax.validation.ConstraintViolationException;
18 
19 import org.json.simple.JSONObject;
20 import org.json.simple.parser.JSONParser;
21 import org.json.simple.parser.ParseException;
26 
30 @ControllerAdvice
32 
34  private static final Logger _log = LoggerFactory.getLogger(CustomExceptionMapper.class);
35 
40  _log.info("[CustomExceptionMapper] Initializing {}...",
41  CustomExceptionMapper.class.getName());
42  }
43 
51  @ExceptionHandler(value = {Exception.class})
52  protected ResponseEntity<Object> defaultExceptionHandler(final Exception ex,
53  final WebRequest request) {
54  _log.error("Exception: " + ex.getMessage(), ex);
55  return response(HttpError.INTERNAL_ERROR.getHttpStatus(),
56  HttpError.INTERNAL_ERROR.getCode(), HttpError.INTERNAL_ERROR.getAuxilaryMessage(),
57  HttpError.INTERNAL_ERROR.getMessage(), "");
58  }
59 
60  @ExceptionHandler(value = {ConstraintViolationException.class})
61  protected ResponseEntity<Object> constraintViolationExceptionHandler(
62  final ConstraintViolationException ex, final WebRequest request) {
63  _log.error("Exception: " + ex.getMessage(), ex);
64  String message = ex.getConstraintViolations().stream().map(ConstraintViolation::getMessage)
65  .sorted(Collections.reverseOrder()).collect(joining(", "));
66  return response(HttpError.BAD_REQUEST.getHttpStatus(), HttpError.BAD_REQUEST.getCode(),
67  HttpError.BAD_REQUEST.getAuxilaryMessage(), message);
68  }
69 
70  @ExceptionHandler(value = {IntegrationException.class})
71  protected ResponseEntity<Object> integrationExceptionHandler(
72  final IntegrationException ex, final WebRequest request) {
73  _log.error("Exception: " + ex.getMessage(), ex);
74  return response(HttpError.INTERNAL_ERROR.getHttpStatus(),
75  HttpError.INTERNAL_ERROR.getCode(), HttpError.INTERNAL_ERROR.getAuxilaryMessage(),
76  ex.toString());
77  }
78 
79  @ExceptionHandler(value = {InvalidResponseException.class})
80  protected ResponseEntity<Object> invalidResponseExceptionHandler(
81  final InvalidResponseException ex, final WebRequest request) {
82  _log.error("Exception: " + ex.getMessage(), ex);
83  if (ex.getResponse() != null) {
84  JSONParser jsonParser = new JSONParser();
85  try {
86  JSONObject jsonObject = (JSONObject) jsonParser.parse(ex.getResponse());
87  String error_message = HttpError.PRECONDITION_FAILED.getAuxilaryMessage();
88  String error_type = ex.toString();
89  if (jsonObject.get("error-message") != null) {
90  error_message = jsonObject.get("error-message").toString();
91  }
92  if (jsonObject.get("error-type") != null) {
93  error_message = jsonObject.get("error-type").toString();
94  }
95  return response(HttpError.PRECONDITION_FAILED.getHttpStatus(),
96  HttpError.PRECONDITION_FAILED.getCode(), error_message, error_type);
97  } catch (ParseException e) {
98  e.printStackTrace();
99  }
100  }
101  return response(HttpError.PRECONDITION_FAILED.getHttpStatus(),
102  HttpError.PRECONDITION_FAILED.getCode(),
103  HttpError.PRECONDITION_FAILED.getAuxilaryMessage(), ex.toString());
104  }
105 
106  @ExceptionHandler(value = {ContentNotFoundException.class})
107  protected ResponseEntity<Object> contentNotFoundExceptionHandler(
108  final ContentNotFoundException ex, final WebRequest request) {
109  _log.error("Exception: " + ex.getMessage(), ex);
110  return response(HttpStatus.NO_CONTENT, HttpError.NO_CONTENT.getCode(),
111  HttpError.NO_CONTENT.getAuxilaryMessage(), ex.toString());
112  }
113 }
ResponseEntity< Object > constraintViolationExceptionHandler(final ConstraintViolationException ex, final WebRequest request)
value
Definition: nodes.py:62
ResponseEntity< Object > defaultExceptionHandler(final Exception ex, final WebRequest request)
ResponseEntity< Object > contentNotFoundExceptionHandler(final ContentNotFoundException ex, final WebRequest request)
ResponseEntity< Object > response(final HttpStatus status, final Integer code, final String auxilaryMessage, final String message)
ResponseEntity< Object > integrationExceptionHandler(final IntegrationException ex, final WebRequest request)
ResponseEntity< Object > invalidResponseExceptionHandler(final InvalidResponseException ex, final WebRequest request)