Class JPATraversableResolver

java.lang.Object
org.hibernate.validator.internal.engine.resolver.JPATraversableResolver
All Implemented Interfaces:
TraversableResolver

public class JPATraversableResolver extends Object implements TraversableResolver
An implementation of TraversableResolver which is aware of JPA 2 and utilizes PersistenceUtil to query the reachability of a property. This resolver will be automatically enabled if JPA 2 is on the classpath and the default TraversableResolver is used.

This class needs to be public as it's instantiated via a privileged action that is not in this package.

Author:
Hardy Ferentschik, Emmanuel Bernard
  • Constructor Details

    • JPATraversableResolver

      public JPATraversableResolver()
  • Method Details

    • isReachable

      public final boolean isReachable(Object traversableObject, Path.Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType)
      Description copied from interface: TraversableResolver
      Determines if the Jakarta Bean Validation provider is allowed to reach the property state.
      Specified by:
      isReachable in interface TraversableResolver
      Parameters:
      traversableObject - object hosting traversableProperty or null if validateValue is called
      traversableProperty - the traversable property
      rootBeanType - type of the root object passed to the Validator or hosting the method or constructor validated
      pathToTraversableObject - path from the root object to traversableObject (using the path specification defined by Bean Validation)
      elementType - either FIELD or METHOD
      Returns:
      true if the Jakarta Bean Validation provider is allowed to reach the property state, false otherwise
    • isCascadable

      public final boolean isCascadable(Object traversableObject, Path.Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType)
      Description copied from interface: TraversableResolver
      Determines if the Jakarta Bean Validation provider is allowed to cascade validation on the bean instance returned by the property value marked as @Valid.

      Note that this method is called only if TraversableResolver.isReachable(Object, jakarta.validation.Path.Node, Class, Path, java.lang.annotation.ElementType) returns true for the same set of arguments and if the property is marked as Valid.

      Specified by:
      isCascadable in interface TraversableResolver
      Parameters:
      traversableObject - object hosting traversableProperty or null if validateValue is called
      traversableProperty - the traversable property
      rootBeanType - type of the root object passed to the Validator or hosting the method or constructor validated
      pathToTraversableObject - path from the root object to traversableObject (using the path specification defined by Bean Validation)
      elementType - either FIELD or METHOD
      Returns:
      true if the Jakarta Bean Validation provider is allowed to cascade validation, false otherwise