Я работаю над приложением, которое использует Dropwizard, у которого есть эта реализация ExceptionMapper: https://github.com/dropwizard/dropwizard/blob/master/dropwizard-jersey/src/main/java/io/dropwizard/jersey/errors/LoggingExceptionMapper.java
Проблема с этой реализацией заключается в том, что даже при обнаружении ошибок 4 ** и 5 ** регистрируется только 5 ** ошибок.
Мне нужно реализовать ExceptionMapper таким образом, чтобы LoggingExceptionMapper вообще не использовался, а мой CustomExceptionMapper регистрирует как CLIENT_ERROR, так и SERVER_ERROR.
Мне интересно, как мое приложение узнает, что ему нужно использовать CustomExceptionMapper вместо класса Dropwizard?
Также достаточно ли добавить CLIENT_ERROR в условие if, чтобы завершить все ошибки?
@Override
public Response toResponse(E exception) {
// If we're dealing with a web exception, we can service certain types of request (like
// redirection or server errors) better and also propagate properties of the inner response.
if (exception instanceof WebApplicationException) {
final Response response = ((WebApplicationException) exception).getResponse();
Response.Status.Family family = response.getStatusInfo().getFamily();
if (family.equals(Response.Status.Family.REDIRECTION)) {
return response;
}
if (family.equals(Response.Status.Family.SERVER_ERROR) || family.equals(Response.Status.Family.CLIENT_ERROR) {
logException(exception);
}
return Response.fromResponse(response)
.type(MediaType.APPLICATION_JSON_TYPE)
.entity(new ErrorMessage(response.getStatus(), exception.getLocalizedMessage()))
.build();
}
Или есть лучший способ сделать это?