Package org.jboss.resteasy.plugins.validation.hibernate

Source Code of org.jboss.resteasy.plugins.validation.hibernate.AbstractValidatorContextResolver

package org.jboss.resteasy.plugins.validation.hibernate;

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

import org.hibernate.validator.HibernateValidator;
import org.hibernate.validator.HibernateValidatorConfiguration;
import org.hibernate.validator.method.MethodValidator;
import org.jboss.resteasy.logging.Logger;
import org.jboss.resteasy.spi.validation.GeneralValidatorCDI;

/**
*
* @author Leandro Ferro Luzia
* @author <a href="ron.sigal@jboss.com">Ron Sigal</a>
* @version $Revision: 1.1 $
*
* Copyright May 23, 2013
*/
public class AbstractValidatorContextResolver
{
   private final static Logger logger = Logger.getLogger(AbstractValidatorContextResolver.class);
   final Object RD_LOCK = new Object();
   private volatile ValidatorFactory validatorFactory;

   // this used to be initialized in a static block, but I was having trouble class loading the context resolver in some
   // environments.  So instead of failing and logging a warning when the resolver is instantiated at deploy time
   // we log any validation warning when trying to obtain the validator.
   protected GeneralValidatorCDI getGeneralValidator()
   {
      ValidatorFactory tmpValidatorFactory = validatorFactory;
      if (tmpValidatorFactory == null)
      {
         synchronized (RD_LOCK)
         {
            tmpValidatorFactory = validatorFactory;
            if (validatorFactory == null)
            {
               HibernateValidatorConfiguration config = Validation.byProvider(HibernateValidator.class).configure();
               tmpValidatorFactory = validatorFactory = config.buildValidatorFactory();

            }
         }
      }
      Validator validator = validatorFactory.getValidator();
      MethodValidator methodValidator = validator.unwrap(MethodValidator.class);
      return  new GeneralValidatorImpl(validator, methodValidator);
   }

   public GeneralValidatorCDI getContext(Class<?> type) {
      try
      {
         return getGeneralValidator();
      }
      catch (Exception e)
      {
         logger.warn("Unable to load Validation support", e);
      }
      return null;
   }
}
TOP

Related Classes of org.jboss.resteasy.plugins.validation.hibernate.AbstractValidatorContextResolver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.