All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.validator.internal.engine.resolver.JPATraversableResolver Maven / Gradle / Ivy

Go to download

JSR 380's RI, Hibernate Validator version ${hibernate-validator.version} and its dependencies repackaged as OSGi bundle

There is a newer version: 5.1.0
Show newest version
/*
 * Hibernate Validator, declare and validate application constraints
 *
 * License: Apache License, Version 2.0
 * See the license.txt file in the root directory or .
 */
package org.hibernate.validator.internal.engine.resolver;

import java.lang.annotation.ElementType;
import java.lang.invoke.MethodHandles;

import javax.persistence.Persistence;
import javax.validation.Path;
import javax.validation.TraversableResolver;

import org.hibernate.validator.internal.util.logging.Log;
import org.hibernate.validator.internal.util.logging.LoggerFactory;

/**
 * An implementation of {@code TraversableResolver} which is aware of JPA 2 and utilizes {@code PersistenceUtil} to
 * query the reachability of a property.
 * This resolver will be automatically enabled if JPA 2 is on the classpath and the default {@code 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 * @author Emmanuel Bernard */ public class JPATraversableResolver implements TraversableResolver { private static final Log LOG = LoggerFactory.make( MethodHandles.lookup() ); @Override public final boolean isReachable(Object traversableObject, Path.Node traversableProperty, Class rootBeanType, Path pathToTraversableObject, ElementType elementType) { if ( LOG.isTraceEnabled() ) { LOG.tracef( "Calling isReachable on object %s with node name %s.", traversableObject, traversableProperty.getName() ); } if ( traversableObject == null ) { return true; } return Persistence.getPersistenceUtil().isLoaded( traversableObject, traversableProperty.getName() ); } @Override public final boolean isCascadable(Object traversableObject, Path.Node traversableProperty, Class rootBeanType, Path pathToTraversableObject, ElementType elementType) { return true; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy