Пользовательский Dropwizard ExceptionMapper для javax.validation.ConstraintViolationException - PullRequest
0 голосов
/ 08 июня 2018

Я использую Dropwizard и хотел бы создать собственный ExceptionMapper для обработки javax.validation.ConstraintViolationException.Я создал клиентский маппер:

@Provider
public class MyExceptionMapper implements ExceptionMapper<Exception> {
    public Response toResponse(Exception exception) {
        return Response.status(500)
                .entity(exception.getMessage())
                .type(MediaType.TEXT_PLAIN)
                .build();
    }
}

и настроил его в своем приложении Dropwizard:

@Override
public void run(HelloWorldConfiguration configuration, Environment environment) {
    ServerFactory serverFactory = configuration.getServerFactory();
    if (serverFactory instanceof AbstractServerFactory) {
        ((AbstractServerFactory) serverFactory).setRegisterDefaultExceptionMappers(false);
    }

    environment.jersey().register(new MyExceptionMapper());
}

Когда ресурс / контроллер выдает исключение javax.validation.ConstraintViolationException, он не обрабатывается моимпользовательский маппер, вместо этого он проходит через org.glassfish.jersey.server.validation.internal.ValidationExceptionMapper, который возвращает 400, а это не то, что я хочу.

Можно ли переопределить / удалить маппер Джерси?Я бы подумал, что настройка setRegisterDefaultExceptionMappers(false); поможет, но, похоже, это не так.

...