[hibernate-dev] WildFly BeanValidationCdiIntegrationTestCase test failure with ORM 5

Scott Marlow smarlow at redhat.com
Wed Jul 8 09:37:17 EDT 2015


org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl#populate(SessionFactoryBuilder 
sfBuilder, StandardServiceRegistry ssr) does pass the correct VF to 
sfBuilder.applyValidatorFactory (using the ValidatorFactory passed to 
the EntityManagerFactoryBuilderImpl.withValidatorFactory).  However,  a 
bit later when we reach 
org.hibernate.cfg.beanvalidation.TypeSafeActivator#getValidatorFactory, 
we aren't using the SessionFactoryBuilder or 
EntityManagerFactoryBuilderImpl to obtain the VF.  Instead, we are 
looking in the persistence unit properties.  This sounds wrong to me.

On 07/08/2015 09:11 AM, Scott Marlow wrote:
>
>
> On 07/08/2015 09:02 AM, Hardy Ferentschik wrote:
>> Hi,
>>
>>> The same test works with the WildFly master branch, which is using ORM
>>> 4.3.x.  The Bean Validation integration code is unchanged in my WildFly
>>> branch, as is the Bean Validator.  The only thing different, is the ORM 5
>>> integration code and the ORM 5 persistence provider.
>>
>> Just fishing here, but "integration code and the ORM 5 persistence provider" might
>> indicate a problem in the persistence bootstrapping.
>> Have a look at org.hibernate.cfg.beanvalidation.TypeSafeActivator#getValidatorFactory.
>> Basically ORM expects to retrieve the ValidatorFactory to use for the life cycle based
>> validation from the properties passed via the Persistence bootstrap. The property name
>> is javax.persistence.validation.factory. If there is no instance passed ORM will bootstrap
>> a default factory using  Validation.buildDefaultValidatorFactory(). The latter would
>> of course not be CDI enabled. This would explain why validation occurs, but not CDI injection.
>> I would for sure put a breakpoint in there as well (and some trace/debug log would be probably
>> nice to have as well to easily tell whether a factory is passed or a default one is generated.
>
> Good suggestion, the validation factory does get passed in during the
> second bootstrap phase.  If we looked for it during the first JPA
> bootstrap phase, we would not see it in Hibernate ORM 5.  We should
> check that.
>
>>
>> --Hardy
>>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>


More information about the hibernate-dev mailing list