Я создал REST-API, в котором все проблемы обрабатываются путем генерирования исключений и последующей их обработки в аннотированном классе @ControllerAdvice, содержащем несколько методов @ExceptionHandler.
По какой-то причине исключения не обнаруживаются при выполнении моих интеграционных тестов (с использованием грузового сервера), ИЛИ когда я запускаю войну на локальном сервере Tomcat 8, но они превосходно ловятся, когда я запускаю войну на сервер разработки. Насколько мне удалось убедиться, dev-Tomcat не настроен по-другому.
Мой @ControllerAdvice выглядит следующим образом:
@ControllerAdvice
public class CustomResponseEntityExceptionHandler {
@ExceptionHandler(PasswordMismatchException.class)
public final ResponseEntity<ErrorDetails> handlePasswordChangeMismatch(
PasswordMismatchException ex,
WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(
new Date(),
ex.getMessage(),
request.getDescription(false),
MessageKeys.mismatchedPassword);
return new ResponseEntity<>(errorDetails, HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(DuplicateUserException.class)
public final ResponseEntity<ErrorDetails> handleDuplicateUser(
DuplicateUserException ex,
WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(
new Date(),
ex.getMessage(),
request.getDescription(false),
MessageKeys.duplicateUsername);
return new ResponseEntity<>(errorDetails, HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(LastAdminDeletionException.class)
public final ResponseEntity<ErrorDetails> handleDuplicateUser(
LastAdminDeletionException ex,
WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(
new Date(),
ex.getMessage(),
request.getDescription(false),
MessageKeys.lastAdminDeletion);
return new ResponseEntity<>(errorDetails, HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(WeakPasswordException.class)
public final ResponseEntity<ErrorDetails> handleDuplicateUser(
WeakPasswordException ex,
WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(
new Date(),
ex.getMessage(),
request.getDescription(false),
MessageKeys.weakPassword);
return new ResponseEntity<>(errorDetails, HttpStatus.BAD_REQUEST);
}
}
Вам это, ребята, знакомо?