Javax вложил несколько проверок - PullRequest
0 голосов
/ 06 августа 2020

У меня два класса. Один из них - класс A, другой - класс B. Класс A имеет строковое поле, которое имеет настраиваемую проверку для проверки кодировки base 64. Класс B имеет список экземпляров класса A. Мне нужно добавить специальный валидатор для этого списка, который проверяет общий размер в байтах. Когда я добавляю настраиваемый валидатор в список экземпляров A в B, он работает, но валидатор для моего строкового поля класса A не срабатывает. Если я удалю пользовательский валидатор @ValidTotalSize, тогда @ValidEncoding будет работать.

Class A {
   @ValidEncoding
   private string content
}

Class B {
   @ValidTotalSize
   private List<A> contentList
}

My JUnit - в этом я пытаюсь протестировать кодирование содержимого внутри A. Я намеренно передаю неправильную кодировку, поэтому у меня не получается ограничение, и я хочу это утверждать. Но после добавления @ValidTotalSize в contentList внутри B @ValidEncoding даже не сработает. Как я могу обеспечить запуск обеих проверок?

@Test
public void testContentEncoding() {
   //create stub with incorrect encoded content
   final Set<ConstraintViolation<B>> violations = Validation.buildDefaultValidatorFactory().getValidator().validate(stub);
   Assert.assertTrue(!violations.isEmpty());
}

Как заставить работать обе? Один для проверки внутреннего содержимого, а второй для проверки списка.

1 Ответ

0 голосов
/ 07 августа 2020

Я понял, чего мне не хватает. Мне также нужно было добавить аннотацию @Valid в contentList, чтобы запустить проверку каждого элемента в списке.

@Valid
@ValidTotalSize
private List<A> contentList
...