Валидация Javax при десериализации комплекса pojo - PullRequest
0 голосов
/ 15 апреля 2020

Я использую Dropwizard. Я хочу десериализовать и проверить вложенный POJO вне уровня ресурса.

Если я сделаю это

@Path("/test")
@Produces(...)
@Consumes(...)
public Response get(@Valid ComplexNestedRequestBody complexNestedRequestBody){...}

Это будет проверять валидацию javax при десериализации и выдает ошибку валидации для всех нарушений в один раз для всего графа объектов.

Если я сделаю это

@Path("/test")
@Produces(...)
@Consumes(...)
public Response get( String complexNestedRequestBody){
     ComplexNestedRequestBody pojo = objectMapper.readValue(complexNestedRequestBody,ComplexNestedRequestBody.class);
}

Проверка подлинности javax не будет применена при десериализации. Если я добавлю специальный модификатор десериализатора бина, который проверяет экземпляр после его десериализации, он десериализуется один за другим, начиная с самого внутреннего объекта. Таким образом, если что-то в самом внутреннем объекте завершится неудачно, например, @NotNull во время проверки, он выдаст ошибку вместо генерации суммарной ошибки после десериализации и проверки всего тела запроса. Я хочу кумулятивную ошибку.

Может кто-нибудь предложить способ сделать это?

...