package restx.validation; import org.hibernate.validator.HibernateValidator; import org.hibernate.validator.HibernateValidatorConfiguration; import restx.factory.Module; import restx.factory.Name; import restx.factory.Provides; import javax.inject.Named; import javax.validation.Validation; import javax.validation.Validator; /** * User: xavierhanin * Date: 2/3/13 * Time: 9:48 PM */ @Module public class ValidatorFactory { public static final String VALIDATOR_NAME = "hibernate.validator"; public static final String IGNORE_XML_CONFIGURATION_NAME = "hibernate.validator.ignore.xml.configuration"; public static final Name<Validator> VALIDATOR = Name.of(Validator.class, VALIDATOR_NAME); @Provides @Named(VALIDATOR_NAME) public Validator validator(@Named(IGNORE_XML_CONFIGURATION_NAME) Boolean ignoreXmlConfiguration) { HibernateValidatorConfiguration config = Validation.byProvider(HibernateValidator.class).configure(); if(ignoreXmlConfiguration) { config.ignoreXmlConfiguration(); } return config.buildValidatorFactory().getValidator(); } // Perf improvement to greatly fasten startup time @Provides @Named(IGNORE_XML_CONFIGURATION_NAME) public Boolean ignoreXmlConfigurationFlag(){ return Boolean.TRUE; } }