Search in sources :

Example 1 with ParameterNameProvider

use of javax.validation.ParameterNameProvider in project spring-framework by spring-projects.

the class LocalValidatorFactoryBean method configureParameterNameProviderIfPossible.

private void configureParameterNameProviderIfPossible(Configuration<?> configuration) {
    // TODO: inner class
    final ParameterNameDiscoverer discoverer = this.parameterNameDiscoverer;
    final ParameterNameProvider defaultProvider = configuration.getDefaultParameterNameProvider();
    configuration.parameterNameProvider(new ParameterNameProvider() {

        @Override
        public List<String> getParameterNames(Constructor<?> constructor) {
            String[] paramNames = discoverer.getParameterNames(constructor);
            return (paramNames != null ? Arrays.asList(paramNames) : defaultProvider.getParameterNames(constructor));
        }

        @Override
        public List<String> getParameterNames(Method method) {
            String[] paramNames = discoverer.getParameterNames(method);
            return (paramNames != null ? Arrays.asList(paramNames) : defaultProvider.getParameterNames(method));
        }
    });
}
Also used : ParameterNameProvider(javax.validation.ParameterNameProvider) ParameterNameDiscoverer(org.springframework.core.ParameterNameDiscoverer) DefaultParameterNameDiscoverer(org.springframework.core.DefaultParameterNameDiscoverer) List(java.util.List) Method(java.lang.reflect.Method)

Example 2 with ParameterNameProvider

use of javax.validation.ParameterNameProvider in project tomee by apache.

the class ValidatorBuilder method getConfig.

@SuppressWarnings("unchecked")
private static Configuration<?> getConfig(final ValidationInfo info) {
    Configuration<?> target = null;
    final Thread thread = Thread.currentThread();
    final ClassLoader classLoader = thread.getContextClassLoader();
    String providerClassName = info.providerClassName;
    if (providerClassName == null) {
        providerClassName = SystemInstance.get().getOptions().get(VALIDATION_PROVIDER_KEY, (String) null);
    }
    if (providerClassName != null) {
        try {
            @SuppressWarnings({ "unchecked", "rawtypes" }) final Class clazz = classLoader.loadClass(providerClassName);
            target = Validation.byProvider(clazz).configure();
            logger.info("Using " + providerClassName + " as validation provider.");
        } catch (final ClassNotFoundException e) {
            logger.warning("Unable to load provider class " + providerClassName, e);
        } catch (final ValidationException ve) {
            logger.warning("Unable create validator factory with provider " + providerClassName + " (" + ve.getMessage() + ")." + " Default one will be used.");
        }
    }
    if (target == null) {
        // force to use container provider to ignore any conflicting configuration
        thread.setContextClassLoader(ValidatorBuilder.class.getClassLoader());
        target = Validation.byDefaultProvider().configure();
        thread.setContextClassLoader(classLoader);
    }
    final Set<ExecutableType> types = new HashSet<>();
    for (final String type : info.validatedTypes) {
        types.add(ExecutableType.valueOf(type));
    }
    final Map<String, String> props = new HashMap<>();
    for (final Map.Entry<Object, Object> entry : info.propertyTypes.entrySet()) {
        final PropertyType property = new PropertyType();
        property.setName((String) entry.getKey());
        property.setValue((String) entry.getValue());
        props.put(property.getName(), property.getValue());
        if (logger.isDebugEnabled()) {
            logger.debug("Found property '" + property.getName() + "' with value '" + property.getValue());
        }
        target.addProperty(property.getName(), property.getValue());
    }
    final OpenEjbBootstrapConfig bootstrapConfig = new OpenEjbBootstrapConfig(providerClassName, info.constraintFactoryClass, info.messageInterpolatorClass, info.traversableResolverClass, info.parameterNameProviderClass, new HashSet<>(info.constraintMappings), info.executableValidationEnabled, types, props);
    final OpenEjbConfig config = new OpenEjbConfig(bootstrapConfig, target);
    target.ignoreXmlConfiguration();
    final String messageInterpolatorClass = info.messageInterpolatorClass;
    if (messageInterpolatorClass != null) {
        try {
            @SuppressWarnings("unchecked") final Class<MessageInterpolator> clazz = (Class<MessageInterpolator>) classLoader.loadClass(messageInterpolatorClass);
            target.messageInterpolator(newInstance(config, clazz));
        } catch (final Exception e) {
            logger.warning("Unable to set " + messageInterpolatorClass + " as message interpolator.", e);
        }
        logger.info("Using " + messageInterpolatorClass + " as message interpolator.");
    }
    final String traversableResolverClass = info.traversableResolverClass;
    if (traversableResolverClass != null) {
        try {
            @SuppressWarnings("unchecked") final Class<TraversableResolver> clazz = (Class<TraversableResolver>) classLoader.loadClass(traversableResolverClass);
            target.traversableResolver(newInstance(config, clazz));
        } catch (final Exception e) {
            logger.warning("Unable to set " + traversableResolverClass + " as traversable resolver.", e);
        }
        logger.info("Using " + traversableResolverClass + " as traversable resolver.");
    }
    final String constraintFactoryClass = info.constraintFactoryClass;
    if (constraintFactoryClass != null) {
        try {
            @SuppressWarnings("unchecked") final Class<ConstraintValidatorFactory> clazz = (Class<ConstraintValidatorFactory>) classLoader.loadClass(constraintFactoryClass);
            target.constraintValidatorFactory(newInstance(config, clazz));
        } catch (final Exception e) {
            logger.warning("Unable to set " + constraintFactoryClass + " as constraint factory.", e);
        }
        logger.info("Using " + constraintFactoryClass + " as constraint factory.");
    }
    for (final String mappingFileName : info.constraintMappings) {
        if (logger.isDebugEnabled()) {
            logger.debug("Opening input stream for " + mappingFileName);
        }
        final InputStream in = classLoader.getResourceAsStream(mappingFileName);
        if (in == null) {
            logger.warning("Unable to open input stream for mapping file " + mappingFileName + ". It will be ignored");
        } else {
            target.addMapping(in);
        }
    }
    if (info.parameterNameProviderClass != null) {
        try {
            final Class<ParameterNameProvider> clazz = (Class<ParameterNameProvider>) classLoader.loadClass(info.parameterNameProviderClass);
            target.parameterNameProvider(newInstance(config, clazz));
        } catch (final Exception e) {
            logger.warning("Unable to set " + info.parameterNameProviderClass + " as parameter name provider.", e);
        }
        logger.info("Using " + info.parameterNameProviderClass + " as parameter name provider.");
    }
    return config;
}
Also used : ExecutableType(javax.validation.executable.ExecutableType) ValidationException(javax.validation.ValidationException) HashMap(java.util.HashMap) ConstraintValidatorFactory(javax.validation.ConstraintValidatorFactory) PropertyType(org.apache.openejb.jee.bval.PropertyType) HashSet(java.util.HashSet) InputStream(java.io.InputStream) NamingException(javax.naming.NamingException) ValidationException(javax.validation.ValidationException) TraversableResolver(javax.validation.TraversableResolver) ParameterNameProvider(javax.validation.ParameterNameProvider) HashMap(java.util.HashMap) Map(java.util.Map) MessageInterpolator(javax.validation.MessageInterpolator)

Aggregations

ParameterNameProvider (javax.validation.ParameterNameProvider)2 InputStream (java.io.InputStream)1 Method (java.lang.reflect.Method)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1 NamingException (javax.naming.NamingException)1 ConstraintValidatorFactory (javax.validation.ConstraintValidatorFactory)1 MessageInterpolator (javax.validation.MessageInterpolator)1 TraversableResolver (javax.validation.TraversableResolver)1 ValidationException (javax.validation.ValidationException)1 ExecutableType (javax.validation.executable.ExecutableType)1 PropertyType (org.apache.openejb.jee.bval.PropertyType)1 DefaultParameterNameDiscoverer (org.springframework.core.DefaultParameterNameDiscoverer)1 ParameterNameDiscoverer (org.springframework.core.ParameterNameDiscoverer)1