Проверить наличие изменений в алгоритме работы методов buildValidatorFactory и buildDefaultValidatorFactory

Это правило помечает любое использование javax.validation.Validation.buildDefaultValidatorFactory() или Validation.byDefaultProvider().configure().buildValidatorFactory() . The Liberty beanValidation-1.0 и beanValidation-1.1 implementations are provided by Apache Bean Validation. В Java EE 8-реализация проверки объекта EJB, предоставлялась функцией Liberty beanValidation-2.0 был изменен на агент проверки Hibernate . Согласно требованиям реализации Apache Bean Validation, приложение должно создать неуправляемый объект ValidatorFactory, а ConstraintValidatorFactory возвращает управляемый CDI экземпляр ConstraintValidator. Однако компонент Hibernate Validator поддерживает создание управляемых CDI объектов ConstraintValidator только с помощью ValidatorFactory по умолчанию из среды выполнения сервера. Этот управляемый сервер ValidatorFactory можно получить с помощью @Resource , @Inject , или прямой поиск JNDI.

При использовании приложений может быть видно изменение поведения javax.validation.Validation.buildDefaultValidatorFactory() или Validation.byDefaultProvider().configure().buildValidatorFactory() . Обратите внимание на то, что другие методы настройки можно вызвать до buildValidatorFactory() вызывается, например, messageInterpolator() , traversableResolver() , parameterNameProvider() или constraintValidatorFactory() .

В сводке пользователи, ожидающие возвращенные объекты ConstraintValidatorFactory для управляемой CDI, необходимо будет реализовать изменения в существующем коде проверки объектов EJB.

Пример использования Bean Validation, для которого требуется рефакторинг:


//Original application behavior
Validator validator = Validation.byDefaultProvider().configure().messageInterpolator(messageResourceInterpolator).buildValidatorFactory().getValidator();

Пример исправленного кода:


//Recommended application behavior (potential Automated Fix)
@Inject    //@Resource or a jndi lookup of java:comp/ValidatorFactory could also be used to obtain the container's default ValidatorFactory
ValidatorFactory validatorFactory;
Validator validator =  validatorFactory.usingContext().messageInterpolator(messageResourceInterpolator).getValidator();

За дополнительной информацией о проверке в WebSphere Liberty обратитесь к документации по Bean Validation 2.0.