Questa regola contrassegna qualsiasi utilizzo di javax.validation.Validation.buildDefaultValidatorFactory() oppure Validation.byDefaultProvider().configure().buildValidatorFactory() . Liberty beanValidation-1.0 e beanValidation-1.1 Le implementazioni vengono fornite da Apache Bean Validation. In Java EE 8, l'implementazione di convalida bean fornita dalla funzione Liberty beanValidation-2.0 è stato modificato in Hibernate Validator. L'implementazione Apache Bean Validation necessita di un'applicazione per creare un oggetto ValidatorFactory non gestito, mentre ConstraintValidatorFactory restituisce un'istanza ConstraintValidator gestita da CDI. Tuttavia, Hibernate Validator supporta solo la generazione di oggetti ConstraintValidator gestiti da CDI con un ValidatorFactory fornito dal runtime del server. È possibile ottenere questo ValidatorFactory gestito dal server utilizzando @Resource , @Inject o la ricerca JNDI diretta.
Le applicazioni potrebbero visualizzare una modifica nel comportamento durante l'utilizzo javax.validation.Validation.buildDefaultValidatorFactory() oppure Validation.byDefaultProvider().configure().buildValidatorFactory() . Si noti che altri metodi di personalizzazione possono essere richiamati prima buildValidatorFactory() viene richiamato, come ad esempio messageInterpolator() , traversableResolver() , parameterNameProvider() , oppure constraintValidatorFactory() .
In sintesi, gli utenti che prevedono gli oggetti restituiti da ConstraintValidatorFactory per essere gestito da CDI, sarà necessario implementare le modifiche al codice di convalida bean esistente.
Il seguente codice è un esempio di utilizzo di Bean Validation da sottoporre al refactoring:
//Original application behavior
Validator validator = Validation.byDefaultProvider().configure().messageInterpolator(messageResourceInterpolator).buildValidatorFactory().getValidator();
Il seguente codice mostra la correzione per il codice problematico:
//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();
Per ulteriori informazioni sulla configurazione della convalida in WebSphere Liberty, consultare la documentazione Bean Validation 2.0.