Toto pravidlo označí příznakem jakékoli použití javax.validation.Validation.buildDefaultValidatorFactory() nebo Validation.byDefaultProvider().configure().buildValidatorFactory() . Liberty beanValidation-1.0 a beanValidation-1.1 Implementace jsou poskytovány ověřením Apache Bean Validation. V prostředí Java EE 8 se jedná o implementaci ověření Bean Validation poskytovanou funkcí Liberty . beanValidation-2.0 byl změněn na validátor Hibernate . Implementace objektu Apache Bean Validation vyžaduje aplikaci k vytvoření nespravovaného objektu ValidatorFactory a metoda ConstraintValidatorFactory vrací instanci ConstraintValidator spravovanou objektem CDI. Hibernate Validator však podporuje pouze generování objektů ConstraintValidator spravovaných CDI s výchozím objektem ValidatorFactory, který byl předán běhovým prostředím serveru. Tuto továrnu ValidatorFactory spravovanou serverem lze získat pomocí @Resource , @Inject , nebo přímé vyhledání v rozhraní JNDI.
Aplikace mohou při použití zobrazit změnu chování javax.validation.Validation.buildDefaultValidatorFactory() nebo Validation.byDefaultProvider().configure().buildValidatorFactory() . Všimněte si, že jiné metody přizpůsobení mohou být volány před buildValidatorFactory() je vyvoláno, například messageInterpolator() , traversableResolver() , parameterNameProvider() nebo constraintValidatorFactory() .
V souhrnu, uživatelé, kteří očekávají, že objekty vrátí ConstraintValidatorFactory aby byla spravována CDI, bude muset implementovat změny do svého stávajícího kódu Bean Validation.
Následující kód je příkladem použití objektu typu Bean Validation, který by měl být refaktorován:
//Original application behavior
Validator validator = Validation.byDefaultProvider().configure().messageInterpolator(messageResourceInterpolator).buildValidatorFactory().getValidator();
Následující kód zobrazuje opravu pro problematický kód:
//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();
Další informace o konfiguraci ověřen na serveru WebSphere Liberty viz dokumentace Bean Validation 2.0.