Monday, January 24, 2011

Thursday, January 20, 2011

JPATraversalResolver and Bug

I am new at validation stuff and got some experience just want to put here as i got some help this will help someone.
It was using Class level validation using Hibernate-Validator 4.1.0 Final.
I had Glassfishv3, Netbeans6.9.1 and I was trying to use class level validation for few beans . However i had included the Hibernate-Validator 4.1.0 that is ok for class level validation. But as glassfishv3 was using its own bundled one. It fires the exception:

TraversableResolver.isReachable() threw an exception.https://forum.hibernate.org/viewtopic.php?f=9&t=1001354&start=0

As it was just because the JPATravesalResolver has bug and I got it of regular googling by creating a JPATraversalResolver as follows:
----------------------------------------------------------------------------------
 import org.hibernate.Hibernate;
import javax.validation.Path;
import javax.validation.TraversableResolver;
import java.lang.annotation.ElementType;

public class JPATraversableResolver implements TraversableResolver {

    @Override
    public boolean isReachable(Object traversableObject, Path.Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType) {
        return traversableObject == null || Hibernate.isInitialized(traversableObject);
    }

    @Override
    public boolean isCascadable(Object traversableObject, Path.Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType) {
        return true;
    }
}
 ---------------------------------------------------------------------------------------------
and using it as:
TraversableResolver traversableResolver = new JPATraversableResolver();
       Validator validator = Validation.buildDefaultValidatorFactory().usingContext().traversableResolver(traversableResolver).getValidator();

---------------------------------------------------------------------------------------------
Then any Class level Constraints works for me using this validator.
I want to put all helpful links here that helped me:

1> https://forum.hibernate.org/viewtopic.php?f=9&t=1002745
2> http://musingsofaprogrammingaddict.blogspot.com/2010/06/whats-new-in-hibernate-validator-41.html
3>http://agoncal.wordpress.com/2010/03/03/bean-validation-with-jpa-1-0/

Enjoy...