You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bval.apache.org by Mark Struberg <st...@yahoo.de> on 2016/01/04 09:44:20 UTC

Re: svn commit: r1721536 - in /bval/trunk: ./ bval-jsr/ bval-jsr/src/main/java/org/apache/bval/jsr/ bval-jsr/src/test/java/org/apache/bval/jsr/ bval-tck/

Means we should push for releasing commons-weaver first, right?

LieGrue,
strub


> Am 23.12.2015 um 18:14 schrieb Romain Manni-Bucau <rm...@gmail.com>:
> 
> yep the loop with a constant index was not loved by the runtime ;)
> 
> FYI this issue (the real one not the weaver one) was triggered by a user
> which got very bad perfs upgrading to 1.1 so I'd like to get this out ASAP
> and if anyone has time for a review it would be really welcomed.
> 
> 
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> <http://www.tomitribe.com>
> 
> 2015-12-23 18:11 GMT+01:00 Matt Benson <gu...@gmail.com>:
> 
>> You got it. :-)
>> 
>> Matt
>> On Dec 23, 2015 9:48 AM, "Romain Manni-Bucau" <rm...@gmail.com>
>> wrote:
>> 
>>> seems a bug in 1.1 of [weaver], looks fixed in coming 1.2 so just
>> deployed
>>> the snapshot and upgraded in bval to the snapshot
>>> 
>>> 
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <http://rmannibucau.wordpress.com> | Github <
>>> https://github.com/rmannibucau> |
>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
>>> <http://www.tomitribe.com>
>>> 
>>> 2015-12-23 13:47 GMT+01:00 Romain Manni-Bucau <rm...@gmail.com>:
>>> 
>>>> Hi guys
>>>> 
>>>> I would need some help for commons-weaver-maven-plugin setup, i
>> commented
>>>> it out cause it was just hanging. Any inputs/help on that?
>>>> 
>>>> Romain Manni-Bucau
>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>> <http://rmannibucau.wordpress.com> | Github
>>>> <https://github.com/rmannibucau> | LinkedIn
>>>> <https://www.linkedin.com/in/rmannibucau> | Tomitriber
>>>> <http://www.tomitribe.com>
>>>> 
>>>> ---------- Forwarded message ----------
>>>> From: <rm...@apache.org>
>>>> Date: 2015-12-23 13:45 GMT+01:00
>>>> Subject: svn commit: r1721536 - in /bval/trunk: ./ bval-jsr/
>>>> bval-jsr/src/main/java/org/apache/bval/jsr/
>>>> bval-jsr/src/test/java/org/apache/bval/jsr/ bval-tck/
>>>> To: commits@bval.apache.org
>>>> 
>>>> 
>>>> Author: rmannibucau
>>>> Date: Wed Dec 23 12:45:01 2015
>>>> New Revision: 1721536
>>>> 
>>>> URL: http://svn.apache.org/viewvc?rev=1721536&view=rev
>>>> Log:
>>>> BVAL-143 caching should be hold by the factory or shouldnt be for
>>>> performance reason + reactivating jboss repo since tck (1.0) modules
>> are
>>>> not on central
>>>> 
>>>> Modified:
>>>>    bval/trunk/bval-jsr/pom.xml
>>>> 
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>>>> 
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>>>> 
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>>>> 
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>>>> 
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>>>> 
>>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>>>> 
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>>>> 
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
>>>> 
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
>>>> 
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>>>> 
>>>> 
>> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
>>>>    bval/trunk/bval-tck/pom.xml
>>>>    bval/trunk/pom.xml
>>>> 
>>>> Modified: bval/trunk/bval-jsr/pom.xml
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/pom.xml?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> --- bval/trunk/bval-jsr/pom.xml (original)
>>>> +++ bval/trunk/bval-jsr/pom.xml Wed Dec 23 12:45:01 2015
>>>> @@ -297,10 +297,12 @@
>>>>                     </includes>
>>>>                 </configuration>
>>>>             </plugin>
>>>> +            <!-- TODO: activate but ATM it just doesnt build with it
>>>>             <plugin>
>>>>                 <groupId>org.apache.commons</groupId>
>>>>                 <artifactId>commons-weaver-maven-plugin</artifactId>
>>>>             </plugin>
>>>> +            -->
>>>>         </plugins>
>>>>     </build>
>>>> </project>
>>>> 
>>>> Modified:
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>>>> (original)
>>>> +++
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -18,6 +18,23 @@
>>>>  */
>>>> package org.apache.bval.jsr;
>>>> 
>>>> +import org.apache.bval.jsr.groups.GroupsComputer;
>>>> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>>>> +import org.apache.bval.util.AccessStrategy;
>>>> +import org.apache.commons.lang3.ArrayUtils;
>>>> +import org.apache.commons.lang3.reflect.TypeUtils;
>>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>>> +
>>>> +import javax.validation.Constraint;
>>>> +import javax.validation.ConstraintDeclarationException;
>>>> +import javax.validation.ConstraintDefinitionException;
>>>> +import javax.validation.ConstraintTarget;
>>>> +import javax.validation.ConstraintValidator;
>>>> +import javax.validation.OverridesAttribute;
>>>> +import javax.validation.Payload;
>>>> +import javax.validation.ReportAsSingleViolation;
>>>> +import
>> javax.validation.constraintvalidation.SupportedValidationTarget;
>>>> +import javax.validation.constraintvalidation.ValidationTarget;
>>>> import java.lang.annotation.Annotation;
>>>> import java.lang.reflect.InvocationTargetException;
>>>> import java.lang.reflect.Method;
>>>> @@ -32,25 +49,6 @@ import java.util.Set;
>>>> import java.util.logging.Level;
>>>> import java.util.logging.Logger;
>>>> 
>>>> -import javax.validation.Constraint;
>>>> -import javax.validation.ConstraintDeclarationException;
>>>> -import javax.validation.ConstraintDefinitionException;
>>>> -import javax.validation.ConstraintTarget;
>>>> -import javax.validation.ConstraintValidator;
>>>> -import javax.validation.ConstraintValidatorFactory;
>>>> -import javax.validation.OverridesAttribute;
>>>> -import javax.validation.Payload;
>>>> -import javax.validation.ReportAsSingleViolation;
>>>> -import
>> javax.validation.constraintvalidation.SupportedValidationTarget;
>>>> -import javax.validation.constraintvalidation.ValidationTarget;
>>>> -
>>>> -import org.apache.bval.jsr.groups.GroupsComputer;
>>>> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>>>> -import org.apache.bval.util.AccessStrategy;
>>>> -import org.apache.commons.lang3.ArrayUtils;
>>>> -import org.apache.commons.lang3.reflect.TypeUtils;
>>>> -import org.apache.commons.weaver.privilizer.Privileged;
>>>> -
>>>> /**
>>>>  * Description: helper class that builds a {@link
>> ConstraintValidation}
>>>> or its
>>>>  * composite constraint validations by parsing the jsr-annotations and
>>>> @@ -64,19 +62,19 @@ final class AnnotationConstraintBuilder<
>>>> 
>>>>     /**
>>>>      * Create a new AnnotationConstraintBuilder instance.
>>>> -     *
>>>> +     *
>>>>      * @param validatorClasses
>>>>      * @param annotation
>>>>      * @param owner
>>>>      * @param access
>>>>      */
>>>> -    public AnnotationConstraintBuilder(ConstraintValidatorFactory
>>> factory,
>>>> -        Class<? extends ConstraintValidator<A, ?>>[]
>> validatorClasses, A
>>>> annotation, Class<?> owner,
>>>> -        AccessStrategy access, ConstraintTarget target) {
>>>> +    public AnnotationConstraintBuilder(
>>>> +            Class<? extends ConstraintValidator<A, ?>>[]
>>>> validatorClasses, A annotation, Class<?> owner,
>>>> +            AccessStrategy access, ConstraintTarget target) {
>>>>         final boolean reportFromComposite =
>>>>             annotation != null &&
>>>> 
>>> 
>> annotation.annotationType().isAnnotationPresent(ReportAsSingleViolation.class);
>>>>         constraintValidation =
>>>> -            new ConstraintValidation<A>(factory, validatorClasses,
>>>> annotation, owner, access, reportFromComposite,
>>>> +            new ConstraintValidation<A>(validatorClasses, annotation,
>>>> owner, access, reportFromComposite,
>>>>                 target);
>>>>         buildFromAnnotation();
>>>>     }
>>>> @@ -259,7 +257,7 @@ final class AnnotationConstraintBuilder<
>>>> 
>>>>     /**
>>>>      * Get the configured {@link ConstraintValidation}.
>>>> -     *
>>>> +     *
>>>>      * @return {@link ConstraintValidation}
>>>>      */
>>>>     public ConstraintValidation<?> getConstraintValidation() {
>>>> @@ -309,7 +307,7 @@ final class AnnotationConstraintBuilder<
>>>>      * Calculates the index of the composite constraint. The index
>>>> represents
>>>>      * the order in which it is added in reference to other
>> constraints
>>>> of the
>>>>      * same type.
>>>> -     *
>>>> +     *
>>>>      * @param composite
>>>>      *            The composite constraint (not yet added).
>>>>      * @return An integer index always >= 0
>>>> 
>>>> Modified:
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>>>> (original)
>>>> +++
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -34,7 +34,6 @@ import javax.validation.constraintvalida
>>>> import javax.validation.constraintvalidation.ValidationTarget;
>>>> import javax.validation.groups.ConvertGroup;
>>>> import javax.validation.groups.Default;
>>>> -
>>>> import java.lang.annotation.Annotation;
>>>> import java.lang.reflect.AnnotatedElement;
>>>> import java.lang.reflect.InvocationTargetException;
>>>> @@ -50,15 +49,15 @@ import java.util.Set;
>>>> @Privilizing(@CallTo(Reflection.class))
>>>> public final class AnnotationProcessor {
>>>>     /** {@link ApacheFactoryContext} used */
>>>> -    private final ApacheFactoryContext factoryContext;
>>>> +    private final ApacheValidatorFactory factory;
>>>> 
>>>>     /**
>>>>      * Create a new {@link AnnotationProcessor} instance.
>>>>      *
>>>> -     * @param factoryContext
>>>> +     * @param factory the validator factory.
>>>>      */
>>>> -    public AnnotationProcessor(ApacheFactoryContext factoryContext) {
>>>> -        this.factoryContext = factoryContext;
>>>> +    public AnnotationProcessor(ApacheValidatorFactory factory) {
>>>> +        this.factory = factory;
>>>>     }
>>>> 
>>>>     /**
>>>> @@ -112,7 +111,7 @@ public final class AnnotationProcessor {
>>>>      * @throws InvocationTargetException
>>>>      */
>>>>     public <A extends Annotation> boolean processAnnotation(A
>>> annotation,
>>>> Meta prop, Class<?> owner,
>>>> -        AccessStrategy access, AppendValidation appender, boolean
>>>> reflection) throws IllegalAccessException,
>>>> +            AccessStrategy access, AppendValidation appender, boolean
>>>> reflection) throws IllegalAccessException,
>>>>         InvocationTargetException {
>>>>         if (annotation instanceof Valid) {
>>>>             return addAccessStrategy(prop, access);
>>>> @@ -204,12 +203,11 @@ public final class AnnotationProcessor {
>>>>         }
>>>>         final Class<A> annotationType = (Class<A>)
>>>> annotation.annotationType();
>>>>         Class<? extends ConstraintValidator<A, ?>>[] validatorClasses
>> =
>>>> -
>>>> 
>>> 
>> factoryContext.getFactory().getConstraintsCache().getConstraintValidators(annotationType);
>>>> +
>>>> factory.getConstraintsCache().getConstraintValidators(annotationType);
>>>>         if (validatorClasses == null) {
>>>>             validatorClasses = (Class<? extends ConstraintValidator<A,
>>>> ?>>[]) vcAnno.validatedBy();
>>>>             if (validatorClasses.length == 0) {
>>>> -                validatorClasses =
>>>> -
>>>> 
>>> 
>> factoryContext.getFactory().getDefaultConstraints().getValidatorClasses(annotationType);
>>>> +                validatorClasses =
>>>> factory.getDefaultConstraints().getValidatorClasses(annotationType);
>>>>             }
>>>>         }
>>>>         return validatorClasses;
>>>> @@ -234,7 +232,8 @@ public final class AnnotationProcessor {
>>>>      * @throws IllegalAccessException
>>>>      * @throws InvocationTargetException
>>>>      */
>>>> -    private <A extends Annotation> boolean applyConstraint(A
>> annotation,
>>>> +    private <A extends Annotation> boolean applyConstraint(
>>>> +        A annotation,
>>>>         Class<? extends ConstraintValidator<A, ?>>[]
>>>> rawConstraintClasses, Meta prop, Class<?> owner,
>>>>         AccessStrategy access, AppendValidation appender) throws
>>>> IllegalAccessException, InvocationTargetException {
>>>> 
>>>> @@ -244,7 +243,8 @@ public final class AnnotationProcessor {
>>>>         }
>>>> 
>>>>         final AnnotationConstraintBuilder<A> builder =
>>>> -            new
>>>> 
>>> 
>> AnnotationConstraintBuilder<A>(factoryContext.getConstraintValidatorFactory(),
>>>> constraintClasses,
>>>> +            new AnnotationConstraintBuilder<A>(
>>>> +                constraintClasses,
>>>>                 annotation, owner, access, null);
>>>> 
>>>>         // JSR-303 3.4.4: Add implicit groups
>>>> 
>>>> Modified:
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>>>> (original)
>>>> +++
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -18,33 +18,18 @@
>>>>  */
>>>> package org.apache.bval.jsr;
>>>> 
>>>> -import java.lang.reflect.Constructor;
>>>> -import java.util.ArrayList;
>>>> -import java.util.List;
>>>> +import org.apache.bval.MetaBeanFinder;
>>>> +import org.apache.bval.util.reflection.Reflection;
>>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>> 
>>>> import javax.validation.ConstraintValidatorFactory;
>>>> import javax.validation.MessageInterpolator;
>>>> import javax.validation.ParameterNameProvider;
>>>> import javax.validation.TraversableResolver;
>>>> -import javax.validation.ValidationException;
>>>> import javax.validation.Validator;
>>>> import javax.validation.ValidatorContext;
>>>> 
>>>> -import org.apache.bval.IntrospectorMetaBeanFactory;
>>>> -import org.apache.bval.MetaBeanBuilder;
>>>> -import org.apache.bval.MetaBeanFactory;
>>>> -import org.apache.bval.MetaBeanFinder;
>>>> -import org.apache.bval.MetaBeanManager;
>>>> -import org.apache.bval.util.reflection.Reflection;
>>>> -import org.apache.bval.xml.XMLMetaBeanBuilder;
>>>> -import org.apache.bval.xml.XMLMetaBeanFactory;
>>>> -import org.apache.bval.xml.XMLMetaBeanManager;
>>>> -import org.apache.commons.lang3.StringUtils;
>>>> -import org.apache.commons.lang3.reflect.ConstructorUtils;
>>>> -import org.apache.commons.weaver.privilizer.Privileged;
>>>> -import org.apache.commons.weaver.privilizer.Privilizing;
>>>> -import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>> -
>>>> /**
>>>>  * Description: Represents the context that is used to create
>>>>  * <code>ClassValidator</code> instances.<br/>
>>>> @@ -52,7 +37,7 @@ import org.apache.commons.weaver.privili
>>>> @Privilizing(@CallTo(Reflection.class))
>>>> public class ApacheFactoryContext implements ValidatorContext {
>>>>     private final ApacheValidatorFactory factory;
>>>> -    private final MetaBeanFinder metaBeanFinder;
>>>> +    private volatile MetaBeanFinder metaBeanFinder;
>>>> 
>>>>     private MessageInterpolator messageInterpolator;
>>>>     private TraversableResolver traversableResolver;
>>>> @@ -63,19 +48,9 @@ public class ApacheFactoryContext implem
>>>>      * Create a new ApacheFactoryContext instance.
>>>>      *
>>>>      * @param factory validator factory
>>>> -     */
>>>> -    public ApacheFactoryContext(ApacheValidatorFactory factory) {
>>>> -        this.factory = factory;
>>>> -        this.metaBeanFinder = buildMetaBeanFinder();
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * Create a new ApacheFactoryContext instance.
>>>> -     *
>>>> -     * @param factory validator factory
>>>>      * @param metaBeanFinder meta finder
>>>>      */
>>>> -    protected ApacheFactoryContext(ApacheValidatorFactory factory,
>>>> MetaBeanFinder metaBeanFinder) {
>>>> +    public ApacheFactoryContext(ApacheValidatorFactory factory,
>>>> MetaBeanFinder metaBeanFinder) {
>>>>         this.factory = factory;
>>>>         this.metaBeanFinder = metaBeanFinder;
>>>>     }
>>>> @@ -99,11 +74,16 @@ public class ApacheFactoryContext implem
>>>>         return metaBeanFinder;
>>>>     }
>>>> 
>>>> +    private synchronized void resetMeta() { // ensure to ingnore the
>>>> cache and rebuild constraint with new model
>>>> +        metaBeanFinder = factory.buildMetaBeanFinder();
>>>> +    }
>>>> +
>>>>     /**
>>>>      * {@inheritDoc}
>>>>      */
>>>>     public ValidatorContext messageInterpolator(MessageInterpolator
>>>> messageInterpolator) {
>>>>         this.messageInterpolator = messageInterpolator;
>>>> +        resetMeta();
>>>>         return this;
>>>>     }
>>>> 
>>>> @@ -112,6 +92,7 @@ public class ApacheFactoryContext implem
>>>>      */
>>>>     public ValidatorContext traversableResolver(TraversableResolver
>>>> traversableResolver) {
>>>>         this.traversableResolver = traversableResolver;
>>>> +        resetMeta();
>>>>         return this;
>>>>     }
>>>> 
>>>> @@ -120,11 +101,13 @@ public class ApacheFactoryContext implem
>>>>      */
>>>>     public ValidatorContext
>>>> constraintValidatorFactory(ConstraintValidatorFactory
>>>> constraintValidatorFactory) {
>>>>         this.constraintValidatorFactory = constraintValidatorFactory;
>>>> +        resetMeta();
>>>>         return this;
>>>>     }
>>>> 
>>>>     public ValidatorContext
>> parameterNameProvider(ParameterNameProvider
>>>> parameterNameProvider) {
>>>>         this.parameterNameProvider = parameterNameProvider;
>>>> +        resetMeta();
>>>>         return this;
>>>>     }
>>>> 
>>>> @@ -171,126 +154,4 @@ public class ApacheFactoryContext implem
>>>>         return Boolean.parseBoolean(factory.getProperties().get(
>>>> 
>>>> ApacheValidatorConfiguration.Properties.TREAT_MAPS_LIKE_BEANS));
>>>>     }
>>>> -
>>>> -    /**
>>>> -     * Create MetaBeanManager that uses factories:
>>>> -     * <ol>
>>>> -     * <li>if enabled by
>>>> -     * {@link
>>>> ApacheValidatorConfiguration.Properties#ENABLE_INTROSPECTOR}, an
>>>> -     * {@link IntrospectorMetaBeanFactory}</li>
>>>> -     * <li>{@link MetaBeanFactory} types (if any) specified by
>>>> -     * {@link
>>>> ApacheValidatorConfiguration.Properties#METABEAN_FACTORY_CLASSNAMES}
>>>> -     * </li>
>>>> -     * <li>if no {@link JsrMetaBeanFactory} has yet been specified
>> (this
>>>> -     * allows factory order customization), a {@link
>> JsrMetaBeanFactory}
>>>> -     * which handles both JSR303-XML and JSR303-Annotations</li>
>>>> -     * <li>if enabled by
>>>> -     * {@link
>>>> ApacheValidatorConfiguration.Properties#ENABLE_METABEANS_XML}, an
>>>> -     * {@link XMLMetaBeanFactory}</li>
>>>> -     * </ol>
>>>> -     *
>>>> -     * @return a new instance of MetaBeanManager with adequate
>>>> MetaBeanFactories
>>>> -     */
>>>> -    protected MetaBeanFinder buildMetaBeanFinder() {
>>>> -        final List<MetaBeanFactory> builders = new
>>>> ArrayList<MetaBeanFactory>();
>>>> -        if (Boolean.parseBoolean(factory.getProperties().get(
>>>> -
>>>> ApacheValidatorConfiguration.Properties.ENABLE_INTROSPECTOR))) {
>>>> -            builders.add(new IntrospectorMetaBeanFactory());
>>>> -        }
>>>> -        final String[] factoryClassNames =
>>>> -            StringUtils.split(factory.getProperties().get(
>>>> -
>>>> ApacheValidatorConfiguration.Properties.METABEAN_FACTORY_CLASSNAMES));
>>>> -        if (factoryClassNames != null) {
>>>> -            for (String clsName : factoryClassNames) {
>>>> -                // cast, relying on #createMetaBeanFactory to throw
>> the
>>>> exception if incompatible:
>>>> -                @SuppressWarnings("unchecked")
>>>> -                final Class<? extends MetaBeanFactory> factoryClass =
>>>> (Class<? extends MetaBeanFactory>) loadClass(clsName);
>>>> -                builders.add(createMetaBeanFactory(factoryClass));
>>>> -            }
>>>> -        }
>>>> -        boolean jsrFound = false;
>>>> -        for (MetaBeanFactory builder : builders) {
>>>> -            jsrFound |= builder instanceof JsrMetaBeanFactory;
>>>> -        }
>>>> -        if (!jsrFound) {
>>>> -            builders.add(new JsrMetaBeanFactory(this));
>>>> -        }
>>>> -        @SuppressWarnings("deprecation")
>>>> -        final boolean enableMetaBeansXml =
>>>> -            Boolean.parseBoolean(factory.getProperties().get(
>>>> -
>>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML));
>>>> -        if (enableMetaBeansXml) {
>>>> -            XMLMetaBeanManagerCreator.addFactory(builders);
>>>> -        }
>>>> -        return createMetaBeanManager(builders);
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * Create a {@link MetaBeanManager} using the specified builders.
>>>> -     *
>>>> -     * @param builders
>>>> -     *            {@link MetaBeanFactory} {@link List}
>>>> -     * @return {@link MetaBeanManager}
>>>> -     */
>>>> -    @SuppressWarnings("deprecation")
>>>> -    protected MetaBeanFinder
>> createMetaBeanManager(List<MetaBeanFactory>
>>>> builders) {
>>>> -        // as long as we support both: jsr (in the builders list) and
>>>> xstream-xml metabeans:
>>>> -        if (Boolean.parseBoolean(factory.getProperties().get(
>>>> -
>>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML))) {
>>>> -            return
>>>> XMLMetaBeanManagerCreator.createXMLMetaBeanManager(builders);
>>>> -        }
>>>> -        return new MetaBeanManager(new
>>>> MetaBeanBuilder(builders.toArray(new
>> MetaBeanFactory[builders.size()])));
>>>> -    }
>>>> -
>>>> -    @Privileged
>>>> -    private <F extends MetaBeanFactory> F createMetaBeanFactory(final
>>>> Class<F> cls) {
>>>> -        try {
>>>> -            Constructor<F> c =
>>>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>>>> ApacheFactoryContext.this.getClass());
>>>> -            if (c != null) {
>>>> -                return c.newInstance(ApacheFactoryContext.this);
>>>> -            }
>>>> -            c = ConstructorUtils.getMatchingAccessibleConstructor(cls,
>>>> getFactory().getClass());
>>>> -            if (c != null) {
>>>> -                return c.newInstance(getFactory());
>>>> -            }
>>>> -            return cls.newInstance();
>>>> -        } catch (Exception e) {
>>>> -            throw new ValidationException(e);
>>>> -        }
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * separate class to prevent the classloader to immediately load
>>>> optional
>>>> -     * classes: XMLMetaBeanManager, XMLMetaBeanFactory,
>>>> XMLMetaBeanBuilder that
>>>> -     * might not be available in the classpath
>>>> -     */
>>>> -    private static class XMLMetaBeanManagerCreator {
>>>> -
>>>> -        static void addFactory(List<MetaBeanFactory> builders) {
>>>> -            builders.add(new XMLMetaBeanFactory());
>>>> -        }
>>>> -
>>>> -        /**
>>>> -         * Create the {@link MetaBeanManager} to process JSR303 XML.
>>>> Requires
>>>> -         * bval-xstream at RT.
>>>> -         *
>>>> -         * @param builders meta bean builders
>>>> -         * @return {@link MetaBeanManager}
>>>> -         */
>>>> -        // NOTE - We return MetaBeanManager instead of
>>> XMLMetaBeanManager
>>>> to
>>>> -        // keep
>>>> -        // bval-xstream an optional module.
>>>> -        protected static MetaBeanManager
>>>> createXMLMetaBeanManager(List<MetaBeanFactory> builders) {
>>>> -            return new XMLMetaBeanManager(
>>>> -                new XMLMetaBeanBuilder(builders.toArray(new
>>>> MetaBeanFactory[builders.size()])));
>>>> -        }
>>>> -    }
>>>> -
>>>> -    private Class<?> loadClass(final String className) {
>>>> -        try {
>>>> -            return Class.forName(className, true,
>>>> Reflection.getClassLoader(ApacheFactoryContext.class));
>>>> -        } catch (ClassNotFoundException ex) {
>>>> -            throw new ValidationException("Unable to load class: " +
>>>> className, ex);
>>>> -        }
>>>> -    }
>>>> }
>>>> 
>>>> Modified:
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>>>> (original)
>>>> +++
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -18,13 +18,24 @@
>>>>  */
>>>> package org.apache.bval.jsr;
>>>> 
>>>> +import org.apache.bval.IntrospectorMetaBeanFactory;
>>>> +import org.apache.bval.MetaBeanBuilder;
>>>> +import org.apache.bval.MetaBeanFactory;
>>>> +import org.apache.bval.MetaBeanFinder;
>>>> +import org.apache.bval.MetaBeanManager;
>>>> import org.apache.bval.jsr.xml.AnnotationIgnores;
>>>> import org.apache.bval.jsr.xml.MetaConstraint;
>>>> import org.apache.bval.jsr.xml.ValidationMappingParser;
>>>> import org.apache.bval.util.AccessStrategy;
>>>> import org.apache.bval.util.reflection.Reflection;
>>>> +import org.apache.bval.xml.XMLMetaBeanBuilder;
>>>> +import org.apache.bval.xml.XMLMetaBeanFactory;
>>>> +import org.apache.bval.xml.XMLMetaBeanManager;
>>>> import org.apache.commons.lang3.ArrayUtils;
>>>> import org.apache.commons.lang3.ClassUtils;
>>>> +import org.apache.commons.lang3.StringUtils;
>>>> +import org.apache.commons.lang3.reflect.ConstructorUtils;
>>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>>> import org.apache.commons.weaver.privilizer.Privilizing;
>>>> import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>> 
>>>> @@ -37,9 +48,9 @@ import javax.validation.ValidationExcept
>>>> import javax.validation.Validator;
>>>> import javax.validation.ValidatorFactory;
>>>> import javax.validation.spi.ConfigurationState;
>>>> -
>>>> import java.io.Closeable;
>>>> import java.lang.annotation.Annotation;
>>>> +import java.lang.reflect.Constructor;
>>>> import java.lang.reflect.Modifier;
>>>> import java.util.ArrayList;
>>>> import java.util.Collection;
>>>> @@ -80,6 +91,60 @@ public class ApacheValidatorFactory impl
>>>>     private final ConcurrentMap<Class<?>, List<MetaConstraint<?, ?
>>>> extends Annotation>>> constraintMap;
>>>> 
>>>>     private final Collection<Closeable> toClose = new
>>>> ArrayList<Closeable>();
>>>> +    private final MetaBeanFinder defaultMetaBeanFinder;
>>>> +
>>>> +    /**
>>>> +     * Create MetaBeanManager that uses factories:
>>>> +     * <ol>
>>>> +     * <li>if enabled by
>>>> +     * {@link
>>>> ApacheValidatorConfiguration.Properties#ENABLE_INTROSPECTOR}, an
>>>> +     * {@link IntrospectorMetaBeanFactory}</li>
>>>> +     * <li>{@link MetaBeanFactory} types (if any) specified by
>>>> +     * {@link
>>>> ApacheValidatorConfiguration.Properties#METABEAN_FACTORY_CLASSNAMES}
>>>> +     * </li>
>>>> +     * <li>if no {@link JsrMetaBeanFactory} has yet been specified
>> (this
>>>> +     * allows factory order customization), a {@link
>> JsrMetaBeanFactory}
>>>> +     * which handles both JSR303-XML and JSR303-Annotations</li>
>>>> +     * <li>if enabled by
>>>> +     * {@link
>>>> ApacheValidatorConfiguration.Properties#ENABLE_METABEANS_XML}, an
>>>> +     * {@link XMLMetaBeanFactory}</li>
>>>> +     * </ol>
>>>> +     *
>>>> +     * @return a new instance of MetaBeanManager with adequate
>>>> MetaBeanFactories
>>>> +     */
>>>> +    protected MetaBeanFinder buildMetaBeanFinder() {
>>>> +        final List<MetaBeanFactory> builders = new
>>>> ArrayList<MetaBeanFactory>();
>>>> +        if (Boolean.parseBoolean(getProperties().get(
>>>> +
>>>> ApacheValidatorConfiguration.Properties.ENABLE_INTROSPECTOR))) {
>>>> +            builders.add(new IntrospectorMetaBeanFactory());
>>>> +        }
>>>> +        final String[] factoryClassNames =
>>>> +                StringUtils.split(getProperties().get(
>>>> +
>>>> ApacheValidatorConfiguration.Properties.METABEAN_FACTORY_CLASSNAMES));
>>>> +        if (factoryClassNames != null) {
>>>> +            for (String clsName : factoryClassNames) {
>>>> +                // cast, relying on #createMetaBeanFactory to throw
>> the
>>>> exception if incompatible:
>>>> +                @SuppressWarnings("unchecked")
>>>> +                final Class<? extends MetaBeanFactory> factoryClass =
>>>> (Class<? extends MetaBeanFactory>) loadClass(clsName);
>>>> +                builders.add(createMetaBeanFactory(factoryClass));
>>>> +            }
>>>> +        }
>>>> +        boolean jsrFound = false;
>>>> +        for (MetaBeanFactory builder : builders) {
>>>> +            jsrFound |= builder instanceof JsrMetaBeanFactory;
>>>> +        }
>>>> +        if (!jsrFound) {
>>>> +            builders.add(new JsrMetaBeanFactory(this));
>>>> +        }
>>>> +        @SuppressWarnings("deprecation")
>>>> +        final boolean enableMetaBeansXml =
>>>> +                Boolean.parseBoolean(getProperties().get(
>>>> +
>>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML));
>>>> +        if (enableMetaBeansXml) {
>>>> +            XMLMetaBeanManagerCreator.addFactory(builders);
>>>> +        }
>>>> +        return createMetaBeanManager(builders);
>>>> +    }
>>>> 
>>>>     /**
>>>>      * Convenience method to retrieve a default global
>>>> ApacheValidatorFactory
>>>> @@ -110,22 +175,11 @@ public class ApacheValidatorFactory impl
>>>>     /**
>>>>      * Create a new ApacheValidatorFactory instance.
>>>>      */
>>>> -    public ApacheValidatorFactory(ConfigurationState
>>> configurationState) {
>>>> -        properties = new HashMap<String, String>();
>>>> +    public ApacheValidatorFactory(ConfigurationState configuration) {
>>>> +        properties = new HashMap<String,
>>>> String>(configuration.getProperties());
>>>>         defaultSequences = new HashMap<Class<?>, Class<?>[]>();
>>>>         validAccesses = new ConcurrentHashMap<Class<?>,
>>>> List<AccessStrategy>>();
>>>>         constraintMap = new ConcurrentHashMap<Class<?>,
>>>> List<MetaConstraint<?, ? extends Annotation>>>();
>>>> -        configure(configurationState);
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * Configure this {@link ApacheValidatorFactory} from a
>>>> -     * {@link ConfigurationState}.
>>>> -     *
>>>> -     * @param configuration
>>>> -     */
>>>> -    protected void configure(final ConfigurationState configuration) {
>>>> -        getProperties().putAll(configuration.getProperties());
>>>> 
>>>>         parameterNameProvider =
>>> configuration.getParameterNameProvider();
>>>>         messageResolver = configuration.getMessageInterpolator();
>>>> @@ -138,6 +192,8 @@ public class ApacheValidatorFactory impl
>>>>         }
>>>> 
>>>>         new
>>>> 
>>> 
>> ValidationMappingParser(this).processMappingConfig(configuration.getMappingStreams());
>>>> +
>>>> +        defaultMetaBeanFinder = buildMetaBeanFinder();
>>>>     }
>>>> 
>>>>     /**
>>>> @@ -165,7 +221,7 @@ public class ApacheValidatorFactory impl
>>>>      * @return the validator factory's context
>>>>      */
>>>>     public ApacheFactoryContext usingContext() {
>>>> -        return new ApacheFactoryContext(this);
>>>> +        return new ApacheFactoryContext(this, defaultMetaBeanFinder);
>>>>     }
>>>> 
>>>>     /**
>>>> @@ -428,4 +484,73 @@ public class ApacheValidatorFactory impl
>>>>     private static Class<?>[] safeArray(Class<?>... array) {
>>>>         return ArrayUtils.isEmpty(array) ?
>> ArrayUtils.EMPTY_CLASS_ARRAY
>>> :
>>>> ArrayUtils.clone(array);
>>>>     }
>>>> +
>>>> +    /**
>>>> +     * Create a {@link MetaBeanManager} using the specified builders.
>>>> +     *
>>>> +     * @param builders
>>>> +     *            {@link MetaBeanFactory} {@link List}
>>>> +     * @return {@link MetaBeanManager}
>>>> +     */
>>>> +    @SuppressWarnings("deprecation")
>>>> +    protected MetaBeanFinder
>> createMetaBeanManager(List<MetaBeanFactory>
>>>> builders) {
>>>> +        // as long as we support both: jsr (in the builders list) and
>>>> xstream-xml metabeans:
>>>> +        if (Boolean.parseBoolean(getProperties().get(
>>>> +
>>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML))) {
>>>> +            return
>>>> XMLMetaBeanManagerCreator.createXMLMetaBeanManager(builders);
>>>> +        }
>>>> +        return new MetaBeanManager(new
>>>> MetaBeanBuilder(builders.toArray(new
>> MetaBeanFactory[builders.size()])));
>>>> +    }
>>>> +
>>>> +    @Privileged
>>>> +    private <F extends MetaBeanFactory> F createMetaBeanFactory(final
>>>> Class<F> cls) {
>>>> +        try {
>>>> +            Constructor<F> c =
>>>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>>>> ApacheValidatorFactory.this.getClass());
>>>> +            if (c != null) {
>>>> +                return c.newInstance(this);
>>>> +            }
>>>> +            c = ConstructorUtils.getMatchingAccessibleConstructor(cls,
>>>> getClass());
>>>> +            if (c != null) {
>>>> +                return c.newInstance(this);
>>>> +            }
>>>> +            return cls.newInstance();
>>>> +        } catch (Exception e) {
>>>> +            throw new ValidationException(e);
>>>> +        }
>>>> +    }
>>>> +
>>>> +    /**
>>>> +     * separate class to prevent the classloader to immediately load
>>>> optional
>>>> +     * classes: XMLMetaBeanManager, XMLMetaBeanFactory,
>>>> XMLMetaBeanBuilder that
>>>> +     * might not be available in the classpath
>>>> +     */
>>>> +    private static class XMLMetaBeanManagerCreator {
>>>> +
>>>> +        static void addFactory(List<MetaBeanFactory> builders) {
>>>> +            builders.add(new XMLMetaBeanFactory());
>>>> +        }
>>>> +
>>>> +        /**
>>>> +         * Create the {@link MetaBeanManager} to process JSR303 XML.
>>>> Requires
>>>> +         * bval-xstream at RT.
>>>> +         *
>>>> +         * @param builders meta bean builders
>>>> +         * @return {@link MetaBeanManager}
>>>> +         */
>>>> +        // NOTE - We return MetaBeanManager instead of
>>> XMLMetaBeanManager
>>>> to
>>>> +        // keep
>>>> +        // bval-xstream an optional module.
>>>> +        protected static MetaBeanManager
>>>> createXMLMetaBeanManager(List<MetaBeanFactory> builders) {
>>>> +            return new XMLMetaBeanManager(
>>>> +                    new XMLMetaBeanBuilder(builders.toArray(new
>>>> MetaBeanFactory[builders.size()])));
>>>> +        }
>>>> +    }
>>>> +
>>>> +    private Class<?> loadClass(final String className) {
>>>> +        try {
>>>> +            return Class.forName(className, true,
>>>> Reflection.getClassLoader(ApacheValidatorFactory.class));
>>>> +        } catch (ClassNotFoundException ex) {
>>>> +            throw new ValidationException("Unable to load class: " +
>>>> className, ex);
>>>> +        }
>>>> +    }
>>>> }
>>>> 
>>>> Modified:
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>>>> (original)
>>>> +++
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -51,7 +51,6 @@ import javax.validation.metadata.MethodT
>>>> import javax.validation.metadata.ParameterDescriptor;
>>>> import javax.validation.metadata.PropertyDescriptor;
>>>> import javax.validation.metadata.ReturnValueDescriptor;
>>>> -
>>>> import java.beans.Introspector;
>>>> import java.lang.annotation.Annotation;
>>>> import java.lang.reflect.AccessibleObject;
>>>> @@ -329,7 +328,7 @@ public class BeanDescriptorImpl extends
>>>>         private ExecutableMeta(final ApacheFactoryContext
>>> factoryContext,
>>>> final MetaBean metaBean1, final Collection<ConstraintDescriptor<?>>
>>>> constraintDescriptors) {
>>>>             this.metaBean = metaBean1;
>>>>             this.factoryContext = factoryContext;
>>>> -            this.annotationProcessor = new
>>>> AnnotationProcessor(factoryContext);
>>>> +            this.annotationProcessor = new
>>>> AnnotationProcessor(factoryContext.getFactory());
>>>> 
>>>>             buildExecutableDescriptors();
>>>> 
>>>> @@ -840,7 +839,9 @@ public class BeanDescriptorImpl extends
>>>>                     }
>>>>                 }
>>>>             } else {
>>>> -                annotationProcessor.processAnnotation(annotation,
>> null,
>>>> ClassUtils.primitiveToWrapper((Class<?>) access.getJavaType()), access,
>>>> validations, true);
>>>> +                annotationProcessor.processAnnotation(
>>>> +                        annotation, null,
>>>> ClassUtils.primitiveToWrapper((Class<?>) access.getJavaType()),
>>>> +                        access, validations, true);
>>>>             }
>>>>         }
>>>> 
>>>> 
>>>> Modified:
>>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>>>> (original)
>>>> +++
>>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -638,8 +638,9 @@ public class ClassValidator implements C
>>>>     protected <T> GroupValidationContext<T> createContext(MetaBean
>>>> metaBean, T object, Class<T> objectClass, Class<?>... groups) {
>>>>         final ConstraintValidationListener<T> listener = new
>>>> ConstraintValidationListener<T>(object, objectClass);
>>>>         final GroupValidationContextImpl<T> context =
>>>> -            new GroupValidationContextImpl<T>(listener,
>>>> this.factoryContext.getMessageInterpolator(),
>>>> -                this.factoryContext.getTraversableResolver(),
>>>> factoryContext.getParameterNameProvider(), metaBean);
>>>> +            new GroupValidationContextImpl<T>(listener,
>>>> factoryContext.getMessageInterpolator(),
>>>> +                factoryContext.getTraversableResolver(),
>>>> factoryContext.getParameterNameProvider(),
>>>> +                factoryContext.getConstraintValidatorFactory(),
>>> metaBean);
>>>>         context.setBean(object, metaBean);
>>>>         context.setGroups(groupsComputer.computeGroups(groups));
>>>>         return context;
>>>> @@ -648,8 +649,9 @@ public class ClassValidator implements C
>>>>     protected <T> GroupValidationContext<T>
>>>> createInvocableContext(MetaBean metaBean, T object, Class<T>
>> objectClass,
>>>> Class<?>... groups) {
>>>>         final ConstraintValidationListener<T> listener = new
>>>> ConstraintValidationListener<T>(object, objectClass);
>>>>         final GroupValidationContextImpl<T> context =
>>>> -                new GroupValidationContextImpl<T>(listener,
>>>> this.factoryContext.getMessageInterpolator(),
>>>> -                        this.factoryContext.getTraversableResolver(),
>>>> factoryContext.getParameterNameProvider(), metaBean);
>>>> +                new GroupValidationContextImpl<T>(listener,
>>>> factoryContext.getMessageInterpolator(),
>>>> +                        factoryContext.getTraversableResolver(),
>>>> factoryContext.getParameterNameProvider(),
>>>> +
>> factoryContext.getConstraintValidatorFactory(),
>>>> metaBean);
>>>>         context.setBean(object, metaBean);
>>>>         final Groups computedGroup =
>>> groupsComputer.computeGroups(groups);
>>>>         if
>>>> 
>>> 
>> (Collections.singletonList(Group.DEFAULT).equals(computedGroup.getGroups())
>>>> && metaBean.getFeature(JsrFeatures.Bean.GROUP_SEQUENCE) != null) {
>>>> 
>>>> Modified:
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>>>> (original)
>>>> +++
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -39,7 +39,6 @@ import javax.validation.ValidationExcept
>>>> import
>> javax.validation.constraintvalidation.SupportedValidationTarget;
>>>> import javax.validation.constraintvalidation.ValidationTarget;
>>>> import javax.validation.metadata.ConstraintDescriptor;
>>>> -
>>>> import java.io.Serializable;
>>>> import java.lang.annotation.Annotation;
>>>> import java.lang.reflect.Array;
>>>> @@ -61,7 +60,6 @@ import java.util.Set;
>>>>  * this instance is immutable!<br/>
>>>>  */
>>>> public class ConstraintValidation<T extends Annotation> implements
>>>> Validation, ConstraintDescriptor<T> {
>>>> -    private final ConstraintValidatorFactory factory;
>>>>     private final AccessStrategy access;
>>>>     private final boolean reportFromComposite;
>>>>     private final Map<String, Object> attributes;
>>>> @@ -82,11 +80,9 @@ public class ConstraintValidation<T exte
>>>>     private Class<? extends ConstraintValidator<T, ?>>[]
>>> validatorClasses;
>>>>     private ConstraintTarget validationAppliesTo = null;
>>>> 
>>>> -    public ConstraintValidation(ConstraintValidatorFactory factory,
>>>> -                                Class<? extends ConstraintValidator<T,
>>>> ?>>[] validatorClasses,
>>>> +    public ConstraintValidation(Class<? extends ConstraintValidator<T,
>>>> ?>>[] validatorClasses,
>>>>                                 T annotation, Class<?> owner,
>>>> AccessStrategy access,
>>>>                                 boolean reportFromComposite,
>>>> ConstraintTarget target) {
>>>> -        this.factory = factory;
>>>>         this.attributes = new HashMap<String, Object>();
>>>>         this.validatorClasses = ArrayUtils.clone(validatorClasses);
>>>>         this.annotation = annotation;
>>>> @@ -158,7 +154,8 @@ public class ConstraintValidation<T exte
>>>>             synchronized (this) {
>>>>                 if (validator == null) {
>>>>                     try {
>>>> -                        validator = getConstraintValidator(annotation,
>>>> validatorClasses, owner, access);
>>>> +                        validator = getConstraintValidator(
>>>> +
>> context.getConstraintValidatorFactory(),
>>>> annotation, validatorClasses, owner, access);
>>>>                         if (validator != null) {
>>>>                             validator.initialize(annotation);
>>>>                         }
>>>> @@ -235,7 +232,8 @@ public class ConstraintValidation<T exte
>>>>         }
>>>>     }
>>>> 
>>>> -    private <A extends Annotation> ConstraintValidator<A, ? super T>
>>>> getConstraintValidator(A annotation,
>>>> +    private <A extends Annotation> ConstraintValidator<A, ? super T>
>>>> getConstraintValidator(
>>>> +            ConstraintValidatorFactory factory, A annotation,
>>>>         Class<? extends ConstraintValidator<A, ?>>[]
>> constraintClasses,
>>>> Class<?> owner, AccessStrategy access) {
>>>>         if (ArrayUtils.isNotEmpty(constraintClasses)) {
>>>>             final Type type = determineTargetedType(owner, access);
>>>> 
>>>> Modified:
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
>>>> (original)
>>>> +++
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -24,6 +24,7 @@ import org.apache.bval.model.MetaBean;
>>>> import org.apache.bval.model.ValidationContext;
>>>> 
>>>> import javax.validation.ConstraintValidator;
>>>> +import javax.validation.ConstraintValidatorFactory;
>>>> import javax.validation.ElementKind;
>>>> import javax.validation.MessageInterpolator;
>>>> import javax.validation.ParameterNameProvider;
>>>> @@ -107,6 +108,12 @@ public interface GroupValidationContext<
>>>>     TraversableResolver getTraversableResolver();
>>>> 
>>>>     /**
>>>> +     * Get the {@link ConstraintValidatorFactory}.
>>>> +     * @return {@link ConstraintValidatorFactory}
>>>> +     */
>>>> +    ConstraintValidatorFactory getConstraintValidatorFactory();
>>>> +
>>>> +    /**
>>>>      * Accumulate a validated constraint.
>>>>      * @param constraint
>>>>      * @return true when the constraint for the object in this path
>> was
>>>> not
>>>> 
>>>> Modified:
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
>>>> (original)
>>>> +++
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -27,6 +27,7 @@ import org.apache.bval.model.MetaPropert
>>>> import org.apache.bval.util.AccessStrategy;
>>>> 
>>>> import javax.validation.ConstraintValidator;
>>>> +import javax.validation.ConstraintValidatorFactory;
>>>> import javax.validation.ElementKind;
>>>> import javax.validation.MessageInterpolator;
>>>> import javax.validation.ParameterNameProvider;
>>>> @@ -70,6 +71,7 @@ final class GroupValidationContextImpl<T
>>>> 
>>>>     private ConstraintValidation<?> constraintValidation;
>>>>     private final TraversableResolver traversableResolver;
>>>> +    private final ConstraintValidatorFactory
>> constraintValidatorFactory;
>>>> 
>>>>     private Object[] parameters;
>>>>     private Object returnValue;
>>>> @@ -86,11 +88,14 @@ final class GroupValidationContextImpl<T
>>>>      * @param rootMetaBean
>>>>      */
>>>>     public GroupValidationContextImpl(ConstraintValidationListener<T>
>>>> listener, MessageInterpolator aMessageResolver,
>>>> -                                      TraversableResolver
>>>> traversableResolver, ParameterNameProvider parameterNameProvider,
>>> MetaBean
>>>> rootMetaBean) {
>>>> +                                      TraversableResolver
>>>> traversableResolver, ParameterNameProvider parameterNameProvider,
>>>> +                                      ConstraintValidatorFactory
>>>> constraintValidatorFactory,
>>>> +                                      MetaBean rootMetaBean) {
>>>>         // inherited variable 'validatedObjects' is of type:
>>>>         // HashMap<GraphBeanIdentity, Set<PathImpl>> in this class
>>>>         super(listener, new HashMap<GraphBeanIdentity,
>>> Set<PathImpl>>());
>>>>         this.messageResolver = aMessageResolver;
>>>> +        this.constraintValidatorFactory = constraintValidatorFactory;
>>>>         this.traversableResolver =
>>>> CachingTraversableResolver.cacheFor(traversableResolver);
>>>>         this.parameterNameProvider = parameterNameProvider;
>>>>         this.rootMetaBean = rootMetaBean;
>>>> @@ -313,6 +318,11 @@ final class GroupValidationContextImpl<T
>>>>         return traversableResolver;
>>>>     }
>>>> 
>>>> +    @Override
>>>> +    public ConstraintValidatorFactory getConstraintValidatorFactory()
>> {
>>>> +        return constraintValidatorFactory;
>>>> +    }
>>>> +
>>>>     /**
>>>>      * {@inheritDoc}
>>>>      */
>>>> 
>>>> Modified:
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>>>> (original)
>>>> +++
>>>> 
>>> 
>> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -63,8 +63,8 @@ public class JsrMetaBeanFactory implemen
>>>>     // of dubious utility as it's static :/
>>>>     protected static final Logger log =
>>>> Logger.getLogger(JsrMetaBeanFactory.class.getName());
>>>> 
>>>> -    /** {@link ApacheFactoryContext} used */
>>>> -    protected final ApacheFactoryContext factoryContext;
>>>> +    /** {@link javax.validation.ValidatorFactory} used */
>>>> +    protected final ApacheValidatorFactory factory;
>>>> 
>>>>     /**
>>>>      * {@link AnnotationProcessor} used.
>>>> @@ -74,11 +74,11 @@ public class JsrMetaBeanFactory implemen
>>>>     /**
>>>>      * Create a new Jsr303MetaBeanFactory instance.
>>>>      *
>>>> -     * @param factoryContext
>>>> +     * @param factory the validator factory.
>>>>      */
>>>> -    public JsrMetaBeanFactory(ApacheFactoryContext factoryContext) {
>>>> -        this.factoryContext = factoryContext;
>>>> -        this.annotationProcessor = new
>>>> AnnotationProcessor(factoryContext);
>>>> +    public JsrMetaBeanFactory(ApacheValidatorFactory factory) {
>>>> +        this.factory = factory;
>>>> +        this.annotationProcessor = new AnnotationProcessor(factory);
>>>>     }
>>>> 
>>>>     /**
>>>> @@ -123,7 +123,7 @@ public class JsrMetaBeanFactory implemen
>>>>         InvocationTargetException {
>>>> 
>>>>         // if NOT ignore class level annotations
>>>> -        if
>>>> 
>>> 
>> (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(beanClass))
>>>> {
>>>> +        if
>>>> (!factory.getAnnotationIgnores().isIgnoreAnnotations(beanClass)) {
>>>>             annotationProcessor.processAnnotations(null, beanClass,
>>>> beanClass, null, new AppendValidationToMeta(metabean));
>>>>         }
>>>> 
>>>> @@ -134,7 +134,7 @@ public class JsrMetaBeanFactory implemen
>>>>             MetaProperty metaProperty =
>>>> metabean.getProperty(field.getName());
>>>>             // create a property for those fields for which there is
>> not
>>>> yet a
>>>>             // MetaProperty
>>>> -            if
>>>> 
>>> 
>> (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(field))
>>>> {
>>>> +            if
>>>> (!factory.getAnnotationIgnores().isIgnoreAnnotations(field)) {
>>>>                 AccessStrategy access = new FieldAccess(field);
>>>>                 boolean create = metaProperty == null;
>>>>                 if (create) {
>>>> @@ -160,7 +160,7 @@ public class JsrMetaBeanFactory implemen
>>>>                 propName = MethodAccess.getPropertyName(method);
>>>>             }
>>>>             if (propName != null) {
>>>> -                if
>>>> 
>>> 
>> (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(method))
>>>> {
>>>> +                if
>>>> (!factory.getAnnotationIgnores().isIgnoreAnnotations(method)) {
>>>>                     AccessStrategy access = new MethodAccess(propName,
>>>> method);
>>>>                     MetaProperty metaProperty =
>>>> metabean.getProperty(propName);
>>>>                     boolean create = metaProperty == null;
>>>> @@ -198,7 +198,7 @@ public class JsrMetaBeanFactory implemen
>>>>      */
>>>>     private void addXmlConstraints(Class<?> beanClass, MetaBean
>>> metabean)
>>>> throws IllegalAccessException,
>>>>         InvocationTargetException {
>>>> -        for (final MetaConstraint<?, ? extends Annotation>
>>> metaConstraint
>>>> : factoryContext.getFactory().getMetaConstraints(beanClass)) {
>>>> +        for (final MetaConstraint<?, ? extends Annotation>
>>> metaConstraint
>>>> : factory.getMetaConstraints(beanClass)) {
>>>>             Meta meta;
>>>>             AccessStrategy access =
>> metaConstraint.getAccessStrategy();
>>>>             boolean create = false;
>>>> @@ -263,7 +263,7 @@ public class JsrMetaBeanFactory implemen
>>>>                 metabean.putProperty(access.getPropertyName(), null);
>>>>             }
>>>>         }
>>>> -        for (final AccessStrategy access :
>>>> factoryContext.getFactory().getValidAccesses(beanClass)) {
>>>> +        for (final AccessStrategy access :
>>>> factory.getValidAccesses(beanClass)) {
>>>>             if (access.getElementType() == ElementType.PARAMETER) {
>>>>                 continue;
>>>>             }
>>>> @@ -289,7 +289,7 @@ public class JsrMetaBeanFactory implemen
>>>>         if (groupSeq == null) {
>>>>             groupSeq = metabean.initFeature(key, new
>>>> ArrayList<Group>(annotation == null ? 1 : annotation.value().length));
>>>>         }
>>>> -        Class<?>[] groupClasses =
>>>> factoryContext.getFactory().getDefaultSequence(beanClass);
>>>> +        Class<?>[] groupClasses =
>> factory.getDefaultSequence(beanClass);
>>>>         if (groupClasses == null || groupClasses.length == 0) {
>>>>             if (annotation == null) {
>>>>                 groupSeq.add(Group.DEFAULT);
>>>> 
>>>> Modified:
>>>> 
>> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> ---
>>>> 
>> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
>>>> (original)
>>>> +++
>>>> 
>> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
>>>> Wed Dec 23 12:45:01 2015
>>>> @@ -89,6 +89,10 @@ public class ValidationTest extends Test
>>>>         return factory.getValidator();
>>>>     }
>>>> 
>>>> +    public void testCache() {
>>>> +
>>>> 
>>> 
>> factory.getValidator().getConstraintsForClass(AccessTestBusinessObject.class);
>>>> +
>>>> 
>>> 
>> factory.getValidator().getConstraintsForClass(AccessTestBusinessObject.class);
>>>> +    }
>>>>     public void testAccessStrategies_field_method() {
>>>>         AccessTestBusinessObject o1 = new
>> AccessTestBusinessObject("1");
>>>>         AccessTestBusinessObjectSub o2 = new
>>>> AccessTestBusinessObjectSub("3");
>>>> 
>>>> Modified: bval/trunk/bval-tck/pom.xml
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/bval-tck/pom.xml?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> --- bval/trunk/bval-tck/pom.xml (original)
>>>> +++ bval/trunk/bval-tck/pom.xml Wed Dec 23 12:45:01 2015
>>>> @@ -169,6 +169,55 @@
>>>>                     <version>1.0.0</version>
>>>>                 </dependency>
>>>>             </dependencies>
>>>> +            <repositories>
>>>> +                <repository>
>>>> +                    <!-- override outdated URLs for jboss repo ids -->
>>>> +                    <id>repository.jboss.org</id>
>>>> +                    <name>JBoss Public Maven Repository Group</name>
>>>> +                    <url>
>>>> https://repository.jboss.org/nexus/content/groups/public/</url>
>>>> +                    <layout>default</layout>
>>>> +                    <releases>
>>>> +                        <enabled>true</enabled>
>>>> +                        <updatePolicy>never</updatePolicy>
>>>> +                        <checksumPolicy>fail</checksumPolicy>
>>>> +                    </releases>
>>>> +                    <snapshots>
>>>> +                        <enabled>false</enabled>
>>>> +                        <updatePolicy>never</updatePolicy>
>>>> +                        <checksumPolicy>warn</checksumPolicy>
>>>> +                    </snapshots>
>>>> +                </repository>
>>>> +                <repository>
>>>> +                    <id>jboss</id>
>>>> +                    <name>JBoss Public Maven Repository Group
>>>> (again)</name>
>>>> +                    <url>
>>>> https://repository.jboss.org/nexus/content/groups/public/</url>
>>>> +                    <layout>default</layout>
>>>> +                    <releases>
>>>> +                        <enabled>true</enabled>
>>>> +                        <updatePolicy>never</updatePolicy>
>>>> +                        <checksumPolicy>fail</checksumPolicy>
>>>> +                    </releases>
>>>> +                    <snapshots>
>>>> +                        <enabled>false</enabled>
>>>> +                        <updatePolicy>never</updatePolicy>
>>>> +                        <checksumPolicy>warn</checksumPolicy>
>>>> +                    </snapshots>
>>>> +                </repository>
>>>> +                <repository>
>>>> +                    <id>snapshots.jboss.org</id>
>>>> +                    <url>
>>>> https://repository.jboss.org/nexus/content/repositories/snapshots/
>> </url>
>>>> +                    <snapshots>
>>>> +                        <enabled>true</enabled>
>>>> +                    </snapshots>
>>>> +                </repository>
>>>> +                <repository>
>>>> +                    <id>jboss-snapshots</id>
>>>> +                    <url>
>>>> https://repository.jboss.org/nexus/content/repositories/snapshots/
>> </url>
>>>> +                    <snapshots>
>>>> +                        <enabled>true</enabled>
>>>> +                    </snapshots>
>>>> +                </repository>
>>>> +            </repositories>
>>>>             <build>
>>>>                 <plugins>
>>>>                     <plugin>
>>>> 
>>>> Modified: bval/trunk/pom.xml
>>>> URL:
>>>> 
>>> 
>> http://svn.apache.org/viewvc/bval/trunk/pom.xml?rev=1721536&r1=1721535&r2=1721536&view=diff
>>>> 
>>>> 
>>> 
>> ==============================================================================
>>>> --- bval/trunk/pom.xml (original)
>>>> +++ bval/trunk/pom.xml Wed Dec 23 12:45:01 2015
>>>> @@ -571,6 +571,7 @@
>>>> 
>> <artifactId>commons-weaver-maven-plugin</artifactId>
>>>>                     <version>${commons.weaver.version}</version>
>>>>                     <configuration>
>>>> +                        <verbose>true</verbose>
>>>>                         <weaverConfig>
>>>> 
>>> <privilizer.policy>DYNAMIC</privilizer.policy>
>>>>                         </weaverConfig>
>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>> 


Re: svn commit: r1721536 - in /bval/trunk: ./ bval-jsr/ bval-jsr/src/main/java/org/apache/bval/jsr/ bval-jsr/src/test/java/org/apache/bval/jsr/ bval-tck/

Posted by Matt Benson <gu...@gmail.com>.
I am. :)

Matt

On Mon, Jan 4, 2016 at 2:48 AM, Romain Manni-Bucau
<rm...@gmail.com> wrote:
> Think Matt is on it
>
> Le 4 janv. 2016 09:44, "Mark Struberg" <st...@yahoo.de> a écrit :
>>
>> Means we should push for releasing commons-weaver first, right?
>>
>> LieGrue,
>> strub
>>
>>
>> > Am 23.12.2015 um 18:14 schrieb Romain Manni-Bucau
>> > <rm...@gmail.com>:
>> >
>> > yep the loop with a constant index was not loved by the runtime ;)
>> >
>> > FYI this issue (the real one not the weaver one) was triggered by a user
>> > which got very bad perfs upgrading to 1.1 so I'd like to get this out
>> > ASAP
>> > and if anyone has time for a review it would be really welcomed.
>> >
>> >
>> > Romain Manni-Bucau
>> > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>> > <http://rmannibucau.wordpress.com> | Github
>> > <https://github.com/rmannibucau> |
>> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
>> > <http://www.tomitribe.com>
>> >
>> > 2015-12-23 18:11 GMT+01:00 Matt Benson <gu...@gmail.com>:
>> >
>> >> You got it. :-)
>> >>
>> >> Matt
>> >> On Dec 23, 2015 9:48 AM, "Romain Manni-Bucau" <rm...@gmail.com>
>> >> wrote:
>> >>
>> >>> seems a bug in 1.1 of [weaver], looks fixed in coming 1.2 so just
>> >> deployed
>> >>> the snapshot and upgraded in bval to the snapshot
>> >>>
>> >>>
>> >>> Romain Manni-Bucau
>> >>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>> >>> <http://rmannibucau.wordpress.com> | Github <
>> >>> https://github.com/rmannibucau> |
>> >>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
>> >>> <http://www.tomitribe.com>
>> >>>
>> >>> 2015-12-23 13:47 GMT+01:00 Romain Manni-Bucau <rm...@gmail.com>:
>> >>>
>> >>>> Hi guys
>> >>>>
>> >>>> I would need some help for commons-weaver-maven-plugin setup, i
>> >> commented
>> >>>> it out cause it was just hanging. Any inputs/help on that?
>> >>>>
>> >>>> Romain Manni-Bucau
>> >>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>> >>>> <http://rmannibucau.wordpress.com> | Github
>> >>>> <https://github.com/rmannibucau> | LinkedIn
>> >>>> <https://www.linkedin.com/in/rmannibucau> | Tomitriber
>> >>>> <http://www.tomitribe.com>
>> >>>>
>> >>>> ---------- Forwarded message ----------
>> >>>> From: <rm...@apache.org>
>> >>>> Date: 2015-12-23 13:45 GMT+01:00
>> >>>> Subject: svn commit: r1721536 - in /bval/trunk: ./ bval-jsr/
>> >>>> bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>>> bval-jsr/src/test/java/org/apache/bval/jsr/ bval-tck/
>> >>>> To: commits@bval.apache.org
>> >>>>
>> >>>>
>> >>>> Author: rmannibucau
>> >>>> Date: Wed Dec 23 12:45:01 2015
>> >>>> New Revision: 1721536
>> >>>>
>> >>>> URL: http://svn.apache.org/viewvc?rev=1721536&view=rev
>> >>>> Log:
>> >>>> BVAL-143 caching should be hold by the factory or shouldnt be for
>> >>>> performance reason + reactivating jboss repo since tck (1.0) modules
>> >> are
>> >>>> not on central
>> >>>>
>> >>>> Modified:
>> >>>>    bval/trunk/bval-jsr/pom.xml
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>> >>>>
>> >>>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>> >>>>
>> >>>>
>> >>
>> >> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
>> >>>>    bval/trunk/bval-tck/pom.xml
>> >>>>    bval/trunk/pom.xml
>> >>>>
>> >>>> Modified: bval/trunk/bval-jsr/pom.xml
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/pom.xml?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> --- bval/trunk/bval-jsr/pom.xml (original)
>> >>>> +++ bval/trunk/bval-jsr/pom.xml Wed Dec 23 12:45:01 2015
>> >>>> @@ -297,10 +297,12 @@
>> >>>>                     </includes>
>> >>>>                 </configuration>
>> >>>>             </plugin>
>> >>>> +            <!-- TODO: activate but ATM it just doesnt build with it
>> >>>>             <plugin>
>> >>>>                 <groupId>org.apache.commons</groupId>
>> >>>>                 <artifactId>commons-weaver-maven-plugin</artifactId>
>> >>>>             </plugin>
>> >>>> +            -->
>> >>>>         </plugins>
>> >>>>     </build>
>> >>>> </project>
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -18,6 +18,23 @@
>> >>>>  */
>> >>>> package org.apache.bval.jsr;
>> >>>>
>> >>>> +import org.apache.bval.jsr.groups.GroupsComputer;
>> >>>> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>> >>>> +import org.apache.bval.util.AccessStrategy;
>> >>>> +import org.apache.commons.lang3.ArrayUtils;
>> >>>> +import org.apache.commons.lang3.reflect.TypeUtils;
>> >>>> +import org.apache.commons.weaver.privilizer.Privileged;
>> >>>> +
>> >>>> +import javax.validation.Constraint;
>> >>>> +import javax.validation.ConstraintDeclarationException;
>> >>>> +import javax.validation.ConstraintDefinitionException;
>> >>>> +import javax.validation.ConstraintTarget;
>> >>>> +import javax.validation.ConstraintValidator;
>> >>>> +import javax.validation.OverridesAttribute;
>> >>>> +import javax.validation.Payload;
>> >>>> +import javax.validation.ReportAsSingleViolation;
>> >>>> +import
>> >> javax.validation.constraintvalidation.SupportedValidationTarget;
>> >>>> +import javax.validation.constraintvalidation.ValidationTarget;
>> >>>> import java.lang.annotation.Annotation;
>> >>>> import java.lang.reflect.InvocationTargetException;
>> >>>> import java.lang.reflect.Method;
>> >>>> @@ -32,25 +49,6 @@ import java.util.Set;
>> >>>> import java.util.logging.Level;
>> >>>> import java.util.logging.Logger;
>> >>>>
>> >>>> -import javax.validation.Constraint;
>> >>>> -import javax.validation.ConstraintDeclarationException;
>> >>>> -import javax.validation.ConstraintDefinitionException;
>> >>>> -import javax.validation.ConstraintTarget;
>> >>>> -import javax.validation.ConstraintValidator;
>> >>>> -import javax.validation.ConstraintValidatorFactory;
>> >>>> -import javax.validation.OverridesAttribute;
>> >>>> -import javax.validation.Payload;
>> >>>> -import javax.validation.ReportAsSingleViolation;
>> >>>> -import
>> >> javax.validation.constraintvalidation.SupportedValidationTarget;
>> >>>> -import javax.validation.constraintvalidation.ValidationTarget;
>> >>>> -
>> >>>> -import org.apache.bval.jsr.groups.GroupsComputer;
>> >>>> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>> >>>> -import org.apache.bval.util.AccessStrategy;
>> >>>> -import org.apache.commons.lang3.ArrayUtils;
>> >>>> -import org.apache.commons.lang3.reflect.TypeUtils;
>> >>>> -import org.apache.commons.weaver.privilizer.Privileged;
>> >>>> -
>> >>>> /**
>> >>>>  * Description: helper class that builds a {@link
>> >> ConstraintValidation}
>> >>>> or its
>> >>>>  * composite constraint validations by parsing the jsr-annotations
>> >>>> and
>> >>>> @@ -64,19 +62,19 @@ final class AnnotationConstraintBuilder<
>> >>>>
>> >>>>     /**
>> >>>>      * Create a new AnnotationConstraintBuilder instance.
>> >>>> -     *
>> >>>> +     *
>> >>>>      * @param validatorClasses
>> >>>>      * @param annotation
>> >>>>      * @param owner
>> >>>>      * @param access
>> >>>>      */
>> >>>> -    public AnnotationConstraintBuilder(ConstraintValidatorFactory
>> >>> factory,
>> >>>> -        Class<? extends ConstraintValidator<A, ?>>[]
>> >> validatorClasses, A
>> >>>> annotation, Class<?> owner,
>> >>>> -        AccessStrategy access, ConstraintTarget target) {
>> >>>> +    public AnnotationConstraintBuilder(
>> >>>> +            Class<? extends ConstraintValidator<A, ?>>[]
>> >>>> validatorClasses, A annotation, Class<?> owner,
>> >>>> +            AccessStrategy access, ConstraintTarget target) {
>> >>>>         final boolean reportFromComposite =
>> >>>>             annotation != null &&
>> >>>>
>> >>>
>> >>
>> >> annotation.annotationType().isAnnotationPresent(ReportAsSingleViolation.class);
>> >>>>         constraintValidation =
>> >>>> -            new ConstraintValidation<A>(factory, validatorClasses,
>> >>>> annotation, owner, access, reportFromComposite,
>> >>>> +            new ConstraintValidation<A>(validatorClasses,
>> >>>> annotation,
>> >>>> owner, access, reportFromComposite,
>> >>>>                 target);
>> >>>>         buildFromAnnotation();
>> >>>>     }
>> >>>> @@ -259,7 +257,7 @@ final class AnnotationConstraintBuilder<
>> >>>>
>> >>>>     /**
>> >>>>      * Get the configured {@link ConstraintValidation}.
>> >>>> -     *
>> >>>> +     *
>> >>>>      * @return {@link ConstraintValidation}
>> >>>>      */
>> >>>>     public ConstraintValidation<?> getConstraintValidation() {
>> >>>> @@ -309,7 +307,7 @@ final class AnnotationConstraintBuilder<
>> >>>>      * Calculates the index of the composite constraint. The index
>> >>>> represents
>> >>>>      * the order in which it is added in reference to other
>> >> constraints
>> >>>> of the
>> >>>>      * same type.
>> >>>> -     *
>> >>>> +     *
>> >>>>      * @param composite
>> >>>>      *            The composite constraint (not yet added).
>> >>>>      * @return An integer index always >= 0
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -34,7 +34,6 @@ import javax.validation.constraintvalida
>> >>>> import javax.validation.constraintvalidation.ValidationTarget;
>> >>>> import javax.validation.groups.ConvertGroup;
>> >>>> import javax.validation.groups.Default;
>> >>>> -
>> >>>> import java.lang.annotation.Annotation;
>> >>>> import java.lang.reflect.AnnotatedElement;
>> >>>> import java.lang.reflect.InvocationTargetException;
>> >>>> @@ -50,15 +49,15 @@ import java.util.Set;
>> >>>> @Privilizing(@CallTo(Reflection.class))
>> >>>> public final class AnnotationProcessor {
>> >>>>     /** {@link ApacheFactoryContext} used */
>> >>>> -    private final ApacheFactoryContext factoryContext;
>> >>>> +    private final ApacheValidatorFactory factory;
>> >>>>
>> >>>>     /**
>> >>>>      * Create a new {@link AnnotationProcessor} instance.
>> >>>>      *
>> >>>> -     * @param factoryContext
>> >>>> +     * @param factory the validator factory.
>> >>>>      */
>> >>>> -    public AnnotationProcessor(ApacheFactoryContext factoryContext)
>> >>>> {
>> >>>> -        this.factoryContext = factoryContext;
>> >>>> +    public AnnotationProcessor(ApacheValidatorFactory factory) {
>> >>>> +        this.factory = factory;
>> >>>>     }
>> >>>>
>> >>>>     /**
>> >>>> @@ -112,7 +111,7 @@ public final class AnnotationProcessor {
>> >>>>      * @throws InvocationTargetException
>> >>>>      */
>> >>>>     public <A extends Annotation> boolean processAnnotation(A
>> >>> annotation,
>> >>>> Meta prop, Class<?> owner,
>> >>>> -        AccessStrategy access, AppendValidation appender, boolean
>> >>>> reflection) throws IllegalAccessException,
>> >>>> +            AccessStrategy access, AppendValidation appender,
>> >>>> boolean
>> >>>> reflection) throws IllegalAccessException,
>> >>>>         InvocationTargetException {
>> >>>>         if (annotation instanceof Valid) {
>> >>>>             return addAccessStrategy(prop, access);
>> >>>> @@ -204,12 +203,11 @@ public final class AnnotationProcessor {
>> >>>>         }
>> >>>>         final Class<A> annotationType = (Class<A>)
>> >>>> annotation.annotationType();
>> >>>>         Class<? extends ConstraintValidator<A, ?>>[] validatorClasses
>> >> =
>> >>>> -
>> >>>>
>> >>>
>> >>
>> >> factoryContext.getFactory().getConstraintsCache().getConstraintValidators(annotationType);
>> >>>> +
>> >>>>
>> >>>> factory.getConstraintsCache().getConstraintValidators(annotationType);
>> >>>>         if (validatorClasses == null) {
>> >>>>             validatorClasses = (Class<? extends
>> >>>> ConstraintValidator<A,
>> >>>> ?>>[]) vcAnno.validatedBy();
>> >>>>             if (validatorClasses.length == 0) {
>> >>>> -                validatorClasses =
>> >>>> -
>> >>>>
>> >>>
>> >>
>> >> factoryContext.getFactory().getDefaultConstraints().getValidatorClasses(annotationType);
>> >>>> +                validatorClasses =
>> >>>> factory.getDefaultConstraints().getValidatorClasses(annotationType);
>> >>>>             }
>> >>>>         }
>> >>>>         return validatorClasses;
>> >>>> @@ -234,7 +232,8 @@ public final class AnnotationProcessor {
>> >>>>      * @throws IllegalAccessException
>> >>>>      * @throws InvocationTargetException
>> >>>>      */
>> >>>> -    private <A extends Annotation> boolean applyConstraint(A
>> >> annotation,
>> >>>> +    private <A extends Annotation> boolean applyConstraint(
>> >>>> +        A annotation,
>> >>>>         Class<? extends ConstraintValidator<A, ?>>[]
>> >>>> rawConstraintClasses, Meta prop, Class<?> owner,
>> >>>>         AccessStrategy access, AppendValidation appender) throws
>> >>>> IllegalAccessException, InvocationTargetException {
>> >>>>
>> >>>> @@ -244,7 +243,8 @@ public final class AnnotationProcessor {
>> >>>>         }
>> >>>>
>> >>>>         final AnnotationConstraintBuilder<A> builder =
>> >>>> -            new
>> >>>>
>> >>>
>> >>
>> >> AnnotationConstraintBuilder<A>(factoryContext.getConstraintValidatorFactory(),
>> >>>> constraintClasses,
>> >>>> +            new AnnotationConstraintBuilder<A>(
>> >>>> +                constraintClasses,
>> >>>>                 annotation, owner, access, null);
>> >>>>
>> >>>>         // JSR-303 3.4.4: Add implicit groups
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -18,33 +18,18 @@
>> >>>>  */
>> >>>> package org.apache.bval.jsr;
>> >>>>
>> >>>> -import java.lang.reflect.Constructor;
>> >>>> -import java.util.ArrayList;
>> >>>> -import java.util.List;
>> >>>> +import org.apache.bval.MetaBeanFinder;
>> >>>> +import org.apache.bval.util.reflection.Reflection;
>> >>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> >>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> >>>>
>> >>>> import javax.validation.ConstraintValidatorFactory;
>> >>>> import javax.validation.MessageInterpolator;
>> >>>> import javax.validation.ParameterNameProvider;
>> >>>> import javax.validation.TraversableResolver;
>> >>>> -import javax.validation.ValidationException;
>> >>>> import javax.validation.Validator;
>> >>>> import javax.validation.ValidatorContext;
>> >>>>
>> >>>> -import org.apache.bval.IntrospectorMetaBeanFactory;
>> >>>> -import org.apache.bval.MetaBeanBuilder;
>> >>>> -import org.apache.bval.MetaBeanFactory;
>> >>>> -import org.apache.bval.MetaBeanFinder;
>> >>>> -import org.apache.bval.MetaBeanManager;
>> >>>> -import org.apache.bval.util.reflection.Reflection;
>> >>>> -import org.apache.bval.xml.XMLMetaBeanBuilder;
>> >>>> -import org.apache.bval.xml.XMLMetaBeanFactory;
>> >>>> -import org.apache.bval.xml.XMLMetaBeanManager;
>> >>>> -import org.apache.commons.lang3.StringUtils;
>> >>>> -import org.apache.commons.lang3.reflect.ConstructorUtils;
>> >>>> -import org.apache.commons.weaver.privilizer.Privileged;
>> >>>> -import org.apache.commons.weaver.privilizer.Privilizing;
>> >>>> -import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> >>>> -
>> >>>> /**
>> >>>>  * Description: Represents the context that is used to create
>> >>>>  * <code>ClassValidator</code> instances.<br/>
>> >>>> @@ -52,7 +37,7 @@ import org.apache.commons.weaver.privili
>> >>>> @Privilizing(@CallTo(Reflection.class))
>> >>>> public class ApacheFactoryContext implements ValidatorContext {
>> >>>>     private final ApacheValidatorFactory factory;
>> >>>> -    private final MetaBeanFinder metaBeanFinder;
>> >>>> +    private volatile MetaBeanFinder metaBeanFinder;
>> >>>>
>> >>>>     private MessageInterpolator messageInterpolator;
>> >>>>     private TraversableResolver traversableResolver;
>> >>>> @@ -63,19 +48,9 @@ public class ApacheFactoryContext implem
>> >>>>      * Create a new ApacheFactoryContext instance.
>> >>>>      *
>> >>>>      * @param factory validator factory
>> >>>> -     */
>> >>>> -    public ApacheFactoryContext(ApacheValidatorFactory factory) {
>> >>>> -        this.factory = factory;
>> >>>> -        this.metaBeanFinder = buildMetaBeanFinder();
>> >>>> -    }
>> >>>> -
>> >>>> -    /**
>> >>>> -     * Create a new ApacheFactoryContext instance.
>> >>>> -     *
>> >>>> -     * @param factory validator factory
>> >>>>      * @param metaBeanFinder meta finder
>> >>>>      */
>> >>>> -    protected ApacheFactoryContext(ApacheValidatorFactory factory,
>> >>>> MetaBeanFinder metaBeanFinder) {
>> >>>> +    public ApacheFactoryContext(ApacheValidatorFactory factory,
>> >>>> MetaBeanFinder metaBeanFinder) {
>> >>>>         this.factory = factory;
>> >>>>         this.metaBeanFinder = metaBeanFinder;
>> >>>>     }
>> >>>> @@ -99,11 +74,16 @@ public class ApacheFactoryContext implem
>> >>>>         return metaBeanFinder;
>> >>>>     }
>> >>>>
>> >>>> +    private synchronized void resetMeta() { // ensure to ingnore the
>> >>>> cache and rebuild constraint with new model
>> >>>> +        metaBeanFinder = factory.buildMetaBeanFinder();
>> >>>> +    }
>> >>>> +
>> >>>>     /**
>> >>>>      * {@inheritDoc}
>> >>>>      */
>> >>>>     public ValidatorContext messageInterpolator(MessageInterpolator
>> >>>> messageInterpolator) {
>> >>>>         this.messageInterpolator = messageInterpolator;
>> >>>> +        resetMeta();
>> >>>>         return this;
>> >>>>     }
>> >>>>
>> >>>> @@ -112,6 +92,7 @@ public class ApacheFactoryContext implem
>> >>>>      */
>> >>>>     public ValidatorContext traversableResolver(TraversableResolver
>> >>>> traversableResolver) {
>> >>>>         this.traversableResolver = traversableResolver;
>> >>>> +        resetMeta();
>> >>>>         return this;
>> >>>>     }
>> >>>>
>> >>>> @@ -120,11 +101,13 @@ public class ApacheFactoryContext implem
>> >>>>      */
>> >>>>     public ValidatorContext
>> >>>> constraintValidatorFactory(ConstraintValidatorFactory
>> >>>> constraintValidatorFactory) {
>> >>>>         this.constraintValidatorFactory = constraintValidatorFactory;
>> >>>> +        resetMeta();
>> >>>>         return this;
>> >>>>     }
>> >>>>
>> >>>>     public ValidatorContext
>> >> parameterNameProvider(ParameterNameProvider
>> >>>> parameterNameProvider) {
>> >>>>         this.parameterNameProvider = parameterNameProvider;
>> >>>> +        resetMeta();
>> >>>>         return this;
>> >>>>     }
>> >>>>
>> >>>> @@ -171,126 +154,4 @@ public class ApacheFactoryContext implem
>> >>>>         return Boolean.parseBoolean(factory.getProperties().get(
>> >>>>
>> >>>> ApacheValidatorConfiguration.Properties.TREAT_MAPS_LIKE_BEANS));
>> >>>>     }
>> >>>> -
>> >>>> -    /**
>> >>>> -     * Create MetaBeanManager that uses factories:
>> >>>> -     * <ol>
>> >>>> -     * <li>if enabled by
>> >>>> -     * {@link
>> >>>> ApacheValidatorConfiguration.Properties#ENABLE_INTROSPECTOR}, an
>> >>>> -     * {@link IntrospectorMetaBeanFactory}</li>
>> >>>> -     * <li>{@link MetaBeanFactory} types (if any) specified by
>> >>>> -     * {@link
>> >>>> ApacheValidatorConfiguration.Properties#METABEAN_FACTORY_CLASSNAMES}
>> >>>> -     * </li>
>> >>>> -     * <li>if no {@link JsrMetaBeanFactory} has yet been specified
>> >> (this
>> >>>> -     * allows factory order customization), a {@link
>> >> JsrMetaBeanFactory}
>> >>>> -     * which handles both JSR303-XML and JSR303-Annotations</li>
>> >>>> -     * <li>if enabled by
>> >>>> -     * {@link
>> >>>> ApacheValidatorConfiguration.Properties#ENABLE_METABEANS_XML}, an
>> >>>> -     * {@link XMLMetaBeanFactory}</li>
>> >>>> -     * </ol>
>> >>>> -     *
>> >>>> -     * @return a new instance of MetaBeanManager with adequate
>> >>>> MetaBeanFactories
>> >>>> -     */
>> >>>> -    protected MetaBeanFinder buildMetaBeanFinder() {
>> >>>> -        final List<MetaBeanFactory> builders = new
>> >>>> ArrayList<MetaBeanFactory>();
>> >>>> -        if (Boolean.parseBoolean(factory.getProperties().get(
>> >>>> -
>> >>>> ApacheValidatorConfiguration.Properties.ENABLE_INTROSPECTOR))) {
>> >>>> -            builders.add(new IntrospectorMetaBeanFactory());
>> >>>> -        }
>> >>>> -        final String[] factoryClassNames =
>> >>>> -            StringUtils.split(factory.getProperties().get(
>> >>>> -
>> >>>>
>> >>>> ApacheValidatorConfiguration.Properties.METABEAN_FACTORY_CLASSNAMES));
>> >>>> -        if (factoryClassNames != null) {
>> >>>> -            for (String clsName : factoryClassNames) {
>> >>>> -                // cast, relying on #createMetaBeanFactory to throw
>> >> the
>> >>>> exception if incompatible:
>> >>>> -                @SuppressWarnings("unchecked")
>> >>>> -                final Class<? extends MetaBeanFactory> factoryClass
>> >>>> =
>> >>>> (Class<? extends MetaBeanFactory>) loadClass(clsName);
>> >>>> -                builders.add(createMetaBeanFactory(factoryClass));
>> >>>> -            }
>> >>>> -        }
>> >>>> -        boolean jsrFound = false;
>> >>>> -        for (MetaBeanFactory builder : builders) {
>> >>>> -            jsrFound |= builder instanceof JsrMetaBeanFactory;
>> >>>> -        }
>> >>>> -        if (!jsrFound) {
>> >>>> -            builders.add(new JsrMetaBeanFactory(this));
>> >>>> -        }
>> >>>> -        @SuppressWarnings("deprecation")
>> >>>> -        final boolean enableMetaBeansXml =
>> >>>> -            Boolean.parseBoolean(factory.getProperties().get(
>> >>>> -
>> >>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML));
>> >>>> -        if (enableMetaBeansXml) {
>> >>>> -            XMLMetaBeanManagerCreator.addFactory(builders);
>> >>>> -        }
>> >>>> -        return createMetaBeanManager(builders);
>> >>>> -    }
>> >>>> -
>> >>>> -    /**
>> >>>> -     * Create a {@link MetaBeanManager} using the specified
>> >>>> builders.
>> >>>> -     *
>> >>>> -     * @param builders
>> >>>> -     *            {@link MetaBeanFactory} {@link List}
>> >>>> -     * @return {@link MetaBeanManager}
>> >>>> -     */
>> >>>> -    @SuppressWarnings("deprecation")
>> >>>> -    protected MetaBeanFinder
>> >> createMetaBeanManager(List<MetaBeanFactory>
>> >>>> builders) {
>> >>>> -        // as long as we support both: jsr (in the builders list)
>> >>>> and
>> >>>> xstream-xml metabeans:
>> >>>> -        if (Boolean.parseBoolean(factory.getProperties().get(
>> >>>> -
>> >>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML))) {
>> >>>> -            return
>> >>>> XMLMetaBeanManagerCreator.createXMLMetaBeanManager(builders);
>> >>>> -        }
>> >>>> -        return new MetaBeanManager(new
>> >>>> MetaBeanBuilder(builders.toArray(new
>> >> MetaBeanFactory[builders.size()])));
>> >>>> -    }
>> >>>> -
>> >>>> -    @Privileged
>> >>>> -    private <F extends MetaBeanFactory> F
>> >>>> createMetaBeanFactory(final
>> >>>> Class<F> cls) {
>> >>>> -        try {
>> >>>> -            Constructor<F> c =
>> >>>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>> >>>> ApacheFactoryContext.this.getClass());
>> >>>> -            if (c != null) {
>> >>>> -                return c.newInstance(ApacheFactoryContext.this);
>> >>>> -            }
>> >>>> -            c =
>> >>>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>> >>>> getFactory().getClass());
>> >>>> -            if (c != null) {
>> >>>> -                return c.newInstance(getFactory());
>> >>>> -            }
>> >>>> -            return cls.newInstance();
>> >>>> -        } catch (Exception e) {
>> >>>> -            throw new ValidationException(e);
>> >>>> -        }
>> >>>> -    }
>> >>>> -
>> >>>> -    /**
>> >>>> -     * separate class to prevent the classloader to immediately load
>> >>>> optional
>> >>>> -     * classes: XMLMetaBeanManager, XMLMetaBeanFactory,
>> >>>> XMLMetaBeanBuilder that
>> >>>> -     * might not be available in the classpath
>> >>>> -     */
>> >>>> -    private static class XMLMetaBeanManagerCreator {
>> >>>> -
>> >>>> -        static void addFactory(List<MetaBeanFactory> builders) {
>> >>>> -            builders.add(new XMLMetaBeanFactory());
>> >>>> -        }
>> >>>> -
>> >>>> -        /**
>> >>>> -         * Create the {@link MetaBeanManager} to process JSR303 XML.
>> >>>> Requires
>> >>>> -         * bval-xstream at RT.
>> >>>> -         *
>> >>>> -         * @param builders meta bean builders
>> >>>> -         * @return {@link MetaBeanManager}
>> >>>> -         */
>> >>>> -        // NOTE - We return MetaBeanManager instead of
>> >>> XMLMetaBeanManager
>> >>>> to
>> >>>> -        // keep
>> >>>> -        // bval-xstream an optional module.
>> >>>> -        protected static MetaBeanManager
>> >>>> createXMLMetaBeanManager(List<MetaBeanFactory> builders) {
>> >>>> -            return new XMLMetaBeanManager(
>> >>>> -                new XMLMetaBeanBuilder(builders.toArray(new
>> >>>> MetaBeanFactory[builders.size()])));
>> >>>> -        }
>> >>>> -    }
>> >>>> -
>> >>>> -    private Class<?> loadClass(final String className) {
>> >>>> -        try {
>> >>>> -            return Class.forName(className, true,
>> >>>> Reflection.getClassLoader(ApacheFactoryContext.class));
>> >>>> -        } catch (ClassNotFoundException ex) {
>> >>>> -            throw new ValidationException("Unable to load class: " +
>> >>>> className, ex);
>> >>>> -        }
>> >>>> -    }
>> >>>> }
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -18,13 +18,24 @@
>> >>>>  */
>> >>>> package org.apache.bval.jsr;
>> >>>>
>> >>>> +import org.apache.bval.IntrospectorMetaBeanFactory;
>> >>>> +import org.apache.bval.MetaBeanBuilder;
>> >>>> +import org.apache.bval.MetaBeanFactory;
>> >>>> +import org.apache.bval.MetaBeanFinder;
>> >>>> +import org.apache.bval.MetaBeanManager;
>> >>>> import org.apache.bval.jsr.xml.AnnotationIgnores;
>> >>>> import org.apache.bval.jsr.xml.MetaConstraint;
>> >>>> import org.apache.bval.jsr.xml.ValidationMappingParser;
>> >>>> import org.apache.bval.util.AccessStrategy;
>> >>>> import org.apache.bval.util.reflection.Reflection;
>> >>>> +import org.apache.bval.xml.XMLMetaBeanBuilder;
>> >>>> +import org.apache.bval.xml.XMLMetaBeanFactory;
>> >>>> +import org.apache.bval.xml.XMLMetaBeanManager;
>> >>>> import org.apache.commons.lang3.ArrayUtils;
>> >>>> import org.apache.commons.lang3.ClassUtils;
>> >>>> +import org.apache.commons.lang3.StringUtils;
>> >>>> +import org.apache.commons.lang3.reflect.ConstructorUtils;
>> >>>> +import org.apache.commons.weaver.privilizer.Privileged;
>> >>>> import org.apache.commons.weaver.privilizer.Privilizing;
>> >>>> import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> >>>>
>> >>>> @@ -37,9 +48,9 @@ import javax.validation.ValidationExcept
>> >>>> import javax.validation.Validator;
>> >>>> import javax.validation.ValidatorFactory;
>> >>>> import javax.validation.spi.ConfigurationState;
>> >>>> -
>> >>>> import java.io.Closeable;
>> >>>> import java.lang.annotation.Annotation;
>> >>>> +import java.lang.reflect.Constructor;
>> >>>> import java.lang.reflect.Modifier;
>> >>>> import java.util.ArrayList;
>> >>>> import java.util.Collection;
>> >>>> @@ -80,6 +91,60 @@ public class ApacheValidatorFactory impl
>> >>>>     private final ConcurrentMap<Class<?>, List<MetaConstraint<?, ?
>> >>>> extends Annotation>>> constraintMap;
>> >>>>
>> >>>>     private final Collection<Closeable> toClose = new
>> >>>> ArrayList<Closeable>();
>> >>>> +    private final MetaBeanFinder defaultMetaBeanFinder;
>> >>>> +
>> >>>> +    /**
>> >>>> +     * Create MetaBeanManager that uses factories:
>> >>>> +     * <ol>
>> >>>> +     * <li>if enabled by
>> >>>> +     * {@link
>> >>>> ApacheValidatorConfiguration.Properties#ENABLE_INTROSPECTOR}, an
>> >>>> +     * {@link IntrospectorMetaBeanFactory}</li>
>> >>>> +     * <li>{@link MetaBeanFactory} types (if any) specified by
>> >>>> +     * {@link
>> >>>> ApacheValidatorConfiguration.Properties#METABEAN_FACTORY_CLASSNAMES}
>> >>>> +     * </li>
>> >>>> +     * <li>if no {@link JsrMetaBeanFactory} has yet been specified
>> >> (this
>> >>>> +     * allows factory order customization), a {@link
>> >> JsrMetaBeanFactory}
>> >>>> +     * which handles both JSR303-XML and JSR303-Annotations</li>
>> >>>> +     * <li>if enabled by
>> >>>> +     * {@link
>> >>>> ApacheValidatorConfiguration.Properties#ENABLE_METABEANS_XML}, an
>> >>>> +     * {@link XMLMetaBeanFactory}</li>
>> >>>> +     * </ol>
>> >>>> +     *
>> >>>> +     * @return a new instance of MetaBeanManager with adequate
>> >>>> MetaBeanFactories
>> >>>> +     */
>> >>>> +    protected MetaBeanFinder buildMetaBeanFinder() {
>> >>>> +        final List<MetaBeanFactory> builders = new
>> >>>> ArrayList<MetaBeanFactory>();
>> >>>> +        if (Boolean.parseBoolean(getProperties().get(
>> >>>> +
>> >>>> ApacheValidatorConfiguration.Properties.ENABLE_INTROSPECTOR))) {
>> >>>> +            builders.add(new IntrospectorMetaBeanFactory());
>> >>>> +        }
>> >>>> +        final String[] factoryClassNames =
>> >>>> +                StringUtils.split(getProperties().get(
>> >>>> +
>> >>>>
>> >>>> ApacheValidatorConfiguration.Properties.METABEAN_FACTORY_CLASSNAMES));
>> >>>> +        if (factoryClassNames != null) {
>> >>>> +            for (String clsName : factoryClassNames) {
>> >>>> +                // cast, relying on #createMetaBeanFactory to throw
>> >> the
>> >>>> exception if incompatible:
>> >>>> +                @SuppressWarnings("unchecked")
>> >>>> +                final Class<? extends MetaBeanFactory> factoryClass
>> >>>> =
>> >>>> (Class<? extends MetaBeanFactory>) loadClass(clsName);
>> >>>> +                builders.add(createMetaBeanFactory(factoryClass));
>> >>>> +            }
>> >>>> +        }
>> >>>> +        boolean jsrFound = false;
>> >>>> +        for (MetaBeanFactory builder : builders) {
>> >>>> +            jsrFound |= builder instanceof JsrMetaBeanFactory;
>> >>>> +        }
>> >>>> +        if (!jsrFound) {
>> >>>> +            builders.add(new JsrMetaBeanFactory(this));
>> >>>> +        }
>> >>>> +        @SuppressWarnings("deprecation")
>> >>>> +        final boolean enableMetaBeansXml =
>> >>>> +                Boolean.parseBoolean(getProperties().get(
>> >>>> +
>> >>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML));
>> >>>> +        if (enableMetaBeansXml) {
>> >>>> +            XMLMetaBeanManagerCreator.addFactory(builders);
>> >>>> +        }
>> >>>> +        return createMetaBeanManager(builders);
>> >>>> +    }
>> >>>>
>> >>>>     /**
>> >>>>      * Convenience method to retrieve a default global
>> >>>> ApacheValidatorFactory
>> >>>> @@ -110,22 +175,11 @@ public class ApacheValidatorFactory impl
>> >>>>     /**
>> >>>>      * Create a new ApacheValidatorFactory instance.
>> >>>>      */
>> >>>> -    public ApacheValidatorFactory(ConfigurationState
>> >>> configurationState) {
>> >>>> -        properties = new HashMap<String, String>();
>> >>>> +    public ApacheValidatorFactory(ConfigurationState configuration)
>> >>>> {
>> >>>> +        properties = new HashMap<String,
>> >>>> String>(configuration.getProperties());
>> >>>>         defaultSequences = new HashMap<Class<?>, Class<?>[]>();
>> >>>>         validAccesses = new ConcurrentHashMap<Class<?>,
>> >>>> List<AccessStrategy>>();
>> >>>>         constraintMap = new ConcurrentHashMap<Class<?>,
>> >>>> List<MetaConstraint<?, ? extends Annotation>>>();
>> >>>> -        configure(configurationState);
>> >>>> -    }
>> >>>> -
>> >>>> -    /**
>> >>>> -     * Configure this {@link ApacheValidatorFactory} from a
>> >>>> -     * {@link ConfigurationState}.
>> >>>> -     *
>> >>>> -     * @param configuration
>> >>>> -     */
>> >>>> -    protected void configure(final ConfigurationState configuration)
>> >>>> {
>> >>>> -        getProperties().putAll(configuration.getProperties());
>> >>>>
>> >>>>         parameterNameProvider =
>> >>> configuration.getParameterNameProvider();
>> >>>>         messageResolver = configuration.getMessageInterpolator();
>> >>>> @@ -138,6 +192,8 @@ public class ApacheValidatorFactory impl
>> >>>>         }
>> >>>>
>> >>>>         new
>> >>>>
>> >>>
>> >>
>> >> ValidationMappingParser(this).processMappingConfig(configuration.getMappingStreams());
>> >>>> +
>> >>>> +        defaultMetaBeanFinder = buildMetaBeanFinder();
>> >>>>     }
>> >>>>
>> >>>>     /**
>> >>>> @@ -165,7 +221,7 @@ public class ApacheValidatorFactory impl
>> >>>>      * @return the validator factory's context
>> >>>>      */
>> >>>>     public ApacheFactoryContext usingContext() {
>> >>>> -        return new ApacheFactoryContext(this);
>> >>>> +        return new ApacheFactoryContext(this,
>> >>>> defaultMetaBeanFinder);
>> >>>>     }
>> >>>>
>> >>>>     /**
>> >>>> @@ -428,4 +484,73 @@ public class ApacheValidatorFactory impl
>> >>>>     private static Class<?>[] safeArray(Class<?>... array) {
>> >>>>         return ArrayUtils.isEmpty(array) ?
>> >> ArrayUtils.EMPTY_CLASS_ARRAY
>> >>> :
>> >>>> ArrayUtils.clone(array);
>> >>>>     }
>> >>>> +
>> >>>> +    /**
>> >>>> +     * Create a {@link MetaBeanManager} using the specified
>> >>>> builders.
>> >>>> +     *
>> >>>> +     * @param builders
>> >>>> +     *            {@link MetaBeanFactory} {@link List}
>> >>>> +     * @return {@link MetaBeanManager}
>> >>>> +     */
>> >>>> +    @SuppressWarnings("deprecation")
>> >>>> +    protected MetaBeanFinder
>> >> createMetaBeanManager(List<MetaBeanFactory>
>> >>>> builders) {
>> >>>> +        // as long as we support both: jsr (in the builders list)
>> >>>> and
>> >>>> xstream-xml metabeans:
>> >>>> +        if (Boolean.parseBoolean(getProperties().get(
>> >>>> +
>> >>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML))) {
>> >>>> +            return
>> >>>> XMLMetaBeanManagerCreator.createXMLMetaBeanManager(builders);
>> >>>> +        }
>> >>>> +        return new MetaBeanManager(new
>> >>>> MetaBeanBuilder(builders.toArray(new
>> >> MetaBeanFactory[builders.size()])));
>> >>>> +    }
>> >>>> +
>> >>>> +    @Privileged
>> >>>> +    private <F extends MetaBeanFactory> F
>> >>>> createMetaBeanFactory(final
>> >>>> Class<F> cls) {
>> >>>> +        try {
>> >>>> +            Constructor<F> c =
>> >>>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>> >>>> ApacheValidatorFactory.this.getClass());
>> >>>> +            if (c != null) {
>> >>>> +                return c.newInstance(this);
>> >>>> +            }
>> >>>> +            c =
>> >>>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>> >>>> getClass());
>> >>>> +            if (c != null) {
>> >>>> +                return c.newInstance(this);
>> >>>> +            }
>> >>>> +            return cls.newInstance();
>> >>>> +        } catch (Exception e) {
>> >>>> +            throw new ValidationException(e);
>> >>>> +        }
>> >>>> +    }
>> >>>> +
>> >>>> +    /**
>> >>>> +     * separate class to prevent the classloader to immediately load
>> >>>> optional
>> >>>> +     * classes: XMLMetaBeanManager, XMLMetaBeanFactory,
>> >>>> XMLMetaBeanBuilder that
>> >>>> +     * might not be available in the classpath
>> >>>> +     */
>> >>>> +    private static class XMLMetaBeanManagerCreator {
>> >>>> +
>> >>>> +        static void addFactory(List<MetaBeanFactory> builders) {
>> >>>> +            builders.add(new XMLMetaBeanFactory());
>> >>>> +        }
>> >>>> +
>> >>>> +        /**
>> >>>> +         * Create the {@link MetaBeanManager} to process JSR303 XML.
>> >>>> Requires
>> >>>> +         * bval-xstream at RT.
>> >>>> +         *
>> >>>> +         * @param builders meta bean builders
>> >>>> +         * @return {@link MetaBeanManager}
>> >>>> +         */
>> >>>> +        // NOTE - We return MetaBeanManager instead of
>> >>> XMLMetaBeanManager
>> >>>> to
>> >>>> +        // keep
>> >>>> +        // bval-xstream an optional module.
>> >>>> +        protected static MetaBeanManager
>> >>>> createXMLMetaBeanManager(List<MetaBeanFactory> builders) {
>> >>>> +            return new XMLMetaBeanManager(
>> >>>> +                    new XMLMetaBeanBuilder(builders.toArray(new
>> >>>> MetaBeanFactory[builders.size()])));
>> >>>> +        }
>> >>>> +    }
>> >>>> +
>> >>>> +    private Class<?> loadClass(final String className) {
>> >>>> +        try {
>> >>>> +            return Class.forName(className, true,
>> >>>> Reflection.getClassLoader(ApacheValidatorFactory.class));
>> >>>> +        } catch (ClassNotFoundException ex) {
>> >>>> +            throw new ValidationException("Unable to load class: " +
>> >>>> className, ex);
>> >>>> +        }
>> >>>> +    }
>> >>>> }
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -51,7 +51,6 @@ import javax.validation.metadata.MethodT
>> >>>> import javax.validation.metadata.ParameterDescriptor;
>> >>>> import javax.validation.metadata.PropertyDescriptor;
>> >>>> import javax.validation.metadata.ReturnValueDescriptor;
>> >>>> -
>> >>>> import java.beans.Introspector;
>> >>>> import java.lang.annotation.Annotation;
>> >>>> import java.lang.reflect.AccessibleObject;
>> >>>> @@ -329,7 +328,7 @@ public class BeanDescriptorImpl extends
>> >>>>         private ExecutableMeta(final ApacheFactoryContext
>> >>> factoryContext,
>> >>>> final MetaBean metaBean1, final Collection<ConstraintDescriptor<?>>
>> >>>> constraintDescriptors) {
>> >>>>             this.metaBean = metaBean1;
>> >>>>             this.factoryContext = factoryContext;
>> >>>> -            this.annotationProcessor = new
>> >>>> AnnotationProcessor(factoryContext);
>> >>>> +            this.annotationProcessor = new
>> >>>> AnnotationProcessor(factoryContext.getFactory());
>> >>>>
>> >>>>             buildExecutableDescriptors();
>> >>>>
>> >>>> @@ -840,7 +839,9 @@ public class BeanDescriptorImpl extends
>> >>>>                     }
>> >>>>                 }
>> >>>>             } else {
>> >>>> -                annotationProcessor.processAnnotation(annotation,
>> >> null,
>> >>>> ClassUtils.primitiveToWrapper((Class<?>) access.getJavaType()),
>> >>>> access,
>> >>>> validations, true);
>> >>>> +                annotationProcessor.processAnnotation(
>> >>>> +                        annotation, null,
>> >>>> ClassUtils.primitiveToWrapper((Class<?>) access.getJavaType()),
>> >>>> +                        access, validations, true);
>> >>>>             }
>> >>>>         }
>> >>>>
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -638,8 +638,9 @@ public class ClassValidator implements C
>> >>>>     protected <T> GroupValidationContext<T> createContext(MetaBean
>> >>>> metaBean, T object, Class<T> objectClass, Class<?>... groups) {
>> >>>>         final ConstraintValidationListener<T> listener = new
>> >>>> ConstraintValidationListener<T>(object, objectClass);
>> >>>>         final GroupValidationContextImpl<T> context =
>> >>>> -            new GroupValidationContextImpl<T>(listener,
>> >>>> this.factoryContext.getMessageInterpolator(),
>> >>>> -                this.factoryContext.getTraversableResolver(),
>> >>>> factoryContext.getParameterNameProvider(), metaBean);
>> >>>> +            new GroupValidationContextImpl<T>(listener,
>> >>>> factoryContext.getMessageInterpolator(),
>> >>>> +                factoryContext.getTraversableResolver(),
>> >>>> factoryContext.getParameterNameProvider(),
>> >>>> +                factoryContext.getConstraintValidatorFactory(),
>> >>> metaBean);
>> >>>>         context.setBean(object, metaBean);
>> >>>>         context.setGroups(groupsComputer.computeGroups(groups));
>> >>>>         return context;
>> >>>> @@ -648,8 +649,9 @@ public class ClassValidator implements C
>> >>>>     protected <T> GroupValidationContext<T>
>> >>>> createInvocableContext(MetaBean metaBean, T object, Class<T>
>> >> objectClass,
>> >>>> Class<?>... groups) {
>> >>>>         final ConstraintValidationListener<T> listener = new
>> >>>> ConstraintValidationListener<T>(object, objectClass);
>> >>>>         final GroupValidationContextImpl<T> context =
>> >>>> -                new GroupValidationContextImpl<T>(listener,
>> >>>> this.factoryContext.getMessageInterpolator(),
>> >>>> -
>> >>>> this.factoryContext.getTraversableResolver(),
>> >>>> factoryContext.getParameterNameProvider(), metaBean);
>> >>>> +                new GroupValidationContextImpl<T>(listener,
>> >>>> factoryContext.getMessageInterpolator(),
>> >>>> +                        factoryContext.getTraversableResolver(),
>> >>>> factoryContext.getParameterNameProvider(),
>> >>>> +
>> >> factoryContext.getConstraintValidatorFactory(),
>> >>>> metaBean);
>> >>>>         context.setBean(object, metaBean);
>> >>>>         final Groups computedGroup =
>> >>> groupsComputer.computeGroups(groups);
>> >>>>         if
>> >>>>
>> >>>
>> >>
>> >> (Collections.singletonList(Group.DEFAULT).equals(computedGroup.getGroups())
>> >>>> && metaBean.getFeature(JsrFeatures.Bean.GROUP_SEQUENCE) != null) {
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -39,7 +39,6 @@ import javax.validation.ValidationExcept
>> >>>> import
>> >> javax.validation.constraintvalidation.SupportedValidationTarget;
>> >>>> import javax.validation.constraintvalidation.ValidationTarget;
>> >>>> import javax.validation.metadata.ConstraintDescriptor;
>> >>>> -
>> >>>> import java.io.Serializable;
>> >>>> import java.lang.annotation.Annotation;
>> >>>> import java.lang.reflect.Array;
>> >>>> @@ -61,7 +60,6 @@ import java.util.Set;
>> >>>>  * this instance is immutable!<br/>
>> >>>>  */
>> >>>> public class ConstraintValidation<T extends Annotation> implements
>> >>>> Validation, ConstraintDescriptor<T> {
>> >>>> -    private final ConstraintValidatorFactory factory;
>> >>>>     private final AccessStrategy access;
>> >>>>     private final boolean reportFromComposite;
>> >>>>     private final Map<String, Object> attributes;
>> >>>> @@ -82,11 +80,9 @@ public class ConstraintValidation<T exte
>> >>>>     private Class<? extends ConstraintValidator<T, ?>>[]
>> >>> validatorClasses;
>> >>>>     private ConstraintTarget validationAppliesTo = null;
>> >>>>
>> >>>> -    public ConstraintValidation(ConstraintValidatorFactory factory,
>> >>>> -                                Class<? extends
>> >>>> ConstraintValidator<T,
>> >>>> ?>>[] validatorClasses,
>> >>>> +    public ConstraintValidation(Class<? extends
>> >>>> ConstraintValidator<T,
>> >>>> ?>>[] validatorClasses,
>> >>>>                                 T annotation, Class<?> owner,
>> >>>> AccessStrategy access,
>> >>>>                                 boolean reportFromComposite,
>> >>>> ConstraintTarget target) {
>> >>>> -        this.factory = factory;
>> >>>>         this.attributes = new HashMap<String, Object>();
>> >>>>         this.validatorClasses = ArrayUtils.clone(validatorClasses);
>> >>>>         this.annotation = annotation;
>> >>>> @@ -158,7 +154,8 @@ public class ConstraintValidation<T exte
>> >>>>             synchronized (this) {
>> >>>>                 if (validator == null) {
>> >>>>                     try {
>> >>>> -                        validator =
>> >>>> getConstraintValidator(annotation,
>> >>>> validatorClasses, owner, access);
>> >>>> +                        validator = getConstraintValidator(
>> >>>> +
>> >> context.getConstraintValidatorFactory(),
>> >>>> annotation, validatorClasses, owner, access);
>> >>>>                         if (validator != null) {
>> >>>>                             validator.initialize(annotation);
>> >>>>                         }
>> >>>> @@ -235,7 +232,8 @@ public class ConstraintValidation<T exte
>> >>>>         }
>> >>>>     }
>> >>>>
>> >>>> -    private <A extends Annotation> ConstraintValidator<A, ? super T>
>> >>>> getConstraintValidator(A annotation,
>> >>>> +    private <A extends Annotation> ConstraintValidator<A, ? super T>
>> >>>> getConstraintValidator(
>> >>>> +            ConstraintValidatorFactory factory, A annotation,
>> >>>>         Class<? extends ConstraintValidator<A, ?>>[]
>> >> constraintClasses,
>> >>>> Class<?> owner, AccessStrategy access) {
>> >>>>         if (ArrayUtils.isNotEmpty(constraintClasses)) {
>> >>>>             final Type type = determineTargetedType(owner, access);
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -24,6 +24,7 @@ import org.apache.bval.model.MetaBean;
>> >>>> import org.apache.bval.model.ValidationContext;
>> >>>>
>> >>>> import javax.validation.ConstraintValidator;
>> >>>> +import javax.validation.ConstraintValidatorFactory;
>> >>>> import javax.validation.ElementKind;
>> >>>> import javax.validation.MessageInterpolator;
>> >>>> import javax.validation.ParameterNameProvider;
>> >>>> @@ -107,6 +108,12 @@ public interface GroupValidationContext<
>> >>>>     TraversableResolver getTraversableResolver();
>> >>>>
>> >>>>     /**
>> >>>> +     * Get the {@link ConstraintValidatorFactory}.
>> >>>> +     * @return {@link ConstraintValidatorFactory}
>> >>>> +     */
>> >>>> +    ConstraintValidatorFactory getConstraintValidatorFactory();
>> >>>> +
>> >>>> +    /**
>> >>>>      * Accumulate a validated constraint.
>> >>>>      * @param constraint
>> >>>>      * @return true when the constraint for the object in this path
>> >> was
>> >>>> not
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -27,6 +27,7 @@ import org.apache.bval.model.MetaPropert
>> >>>> import org.apache.bval.util.AccessStrategy;
>> >>>>
>> >>>> import javax.validation.ConstraintValidator;
>> >>>> +import javax.validation.ConstraintValidatorFactory;
>> >>>> import javax.validation.ElementKind;
>> >>>> import javax.validation.MessageInterpolator;
>> >>>> import javax.validation.ParameterNameProvider;
>> >>>> @@ -70,6 +71,7 @@ final class GroupValidationContextImpl<T
>> >>>>
>> >>>>     private ConstraintValidation<?> constraintValidation;
>> >>>>     private final TraversableResolver traversableResolver;
>> >>>> +    private final ConstraintValidatorFactory
>> >> constraintValidatorFactory;
>> >>>>
>> >>>>     private Object[] parameters;
>> >>>>     private Object returnValue;
>> >>>> @@ -86,11 +88,14 @@ final class GroupValidationContextImpl<T
>> >>>>      * @param rootMetaBean
>> >>>>      */
>> >>>>     public GroupValidationContextImpl(ConstraintValidationListener<T>
>> >>>> listener, MessageInterpolator aMessageResolver,
>> >>>> -                                      TraversableResolver
>> >>>> traversableResolver, ParameterNameProvider parameterNameProvider,
>> >>> MetaBean
>> >>>> rootMetaBean) {
>> >>>> +                                      TraversableResolver
>> >>>> traversableResolver, ParameterNameProvider parameterNameProvider,
>> >>>> +                                      ConstraintValidatorFactory
>> >>>> constraintValidatorFactory,
>> >>>> +                                      MetaBean rootMetaBean) {
>> >>>>         // inherited variable 'validatedObjects' is of type:
>> >>>>         // HashMap<GraphBeanIdentity, Set<PathImpl>> in this class
>> >>>>         super(listener, new HashMap<GraphBeanIdentity,
>> >>> Set<PathImpl>>());
>> >>>>         this.messageResolver = aMessageResolver;
>> >>>> +        this.constraintValidatorFactory =
>> >>>> constraintValidatorFactory;
>> >>>>         this.traversableResolver =
>> >>>> CachingTraversableResolver.cacheFor(traversableResolver);
>> >>>>         this.parameterNameProvider = parameterNameProvider;
>> >>>>         this.rootMetaBean = rootMetaBean;
>> >>>> @@ -313,6 +318,11 @@ final class GroupValidationContextImpl<T
>> >>>>         return traversableResolver;
>> >>>>     }
>> >>>>
>> >>>> +    @Override
>> >>>> +    public ConstraintValidatorFactory
>> >>>> getConstraintValidatorFactory()
>> >> {
>> >>>> +        return constraintValidatorFactory;
>> >>>> +    }
>> >>>> +
>> >>>>     /**
>> >>>>      * {@inheritDoc}
>> >>>>      */
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>>
>> >>
>> >> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -63,8 +63,8 @@ public class JsrMetaBeanFactory implemen
>> >>>>     // of dubious utility as it's static :/
>> >>>>     protected static final Logger log =
>> >>>> Logger.getLogger(JsrMetaBeanFactory.class.getName());
>> >>>>
>> >>>> -    /** {@link ApacheFactoryContext} used */
>> >>>> -    protected final ApacheFactoryContext factoryContext;
>> >>>> +    /** {@link javax.validation.ValidatorFactory} used */
>> >>>> +    protected final ApacheValidatorFactory factory;
>> >>>>
>> >>>>     /**
>> >>>>      * {@link AnnotationProcessor} used.
>> >>>> @@ -74,11 +74,11 @@ public class JsrMetaBeanFactory implemen
>> >>>>     /**
>> >>>>      * Create a new Jsr303MetaBeanFactory instance.
>> >>>>      *
>> >>>> -     * @param factoryContext
>> >>>> +     * @param factory the validator factory.
>> >>>>      */
>> >>>> -    public JsrMetaBeanFactory(ApacheFactoryContext factoryContext) {
>> >>>> -        this.factoryContext = factoryContext;
>> >>>> -        this.annotationProcessor = new
>> >>>> AnnotationProcessor(factoryContext);
>> >>>> +    public JsrMetaBeanFactory(ApacheValidatorFactory factory) {
>> >>>> +        this.factory = factory;
>> >>>> +        this.annotationProcessor = new AnnotationProcessor(factory);
>> >>>>     }
>> >>>>
>> >>>>     /**
>> >>>> @@ -123,7 +123,7 @@ public class JsrMetaBeanFactory implemen
>> >>>>         InvocationTargetException {
>> >>>>
>> >>>>         // if NOT ignore class level annotations
>> >>>> -        if
>> >>>>
>> >>>
>> >>
>> >> (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(beanClass))
>> >>>> {
>> >>>> +        if
>> >>>> (!factory.getAnnotationIgnores().isIgnoreAnnotations(beanClass)) {
>> >>>>             annotationProcessor.processAnnotations(null, beanClass,
>> >>>> beanClass, null, new AppendValidationToMeta(metabean));
>> >>>>         }
>> >>>>
>> >>>> @@ -134,7 +134,7 @@ public class JsrMetaBeanFactory implemen
>> >>>>             MetaProperty metaProperty =
>> >>>> metabean.getProperty(field.getName());
>> >>>>             // create a property for those fields for which there is
>> >> not
>> >>>> yet a
>> >>>>             // MetaProperty
>> >>>> -            if
>> >>>>
>> >>>
>> >>
>> >> (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(field))
>> >>>> {
>> >>>> +            if
>> >>>> (!factory.getAnnotationIgnores().isIgnoreAnnotations(field)) {
>> >>>>                 AccessStrategy access = new FieldAccess(field);
>> >>>>                 boolean create = metaProperty == null;
>> >>>>                 if (create) {
>> >>>> @@ -160,7 +160,7 @@ public class JsrMetaBeanFactory implemen
>> >>>>                 propName = MethodAccess.getPropertyName(method);
>> >>>>             }
>> >>>>             if (propName != null) {
>> >>>> -                if
>> >>>>
>> >>>
>> >>
>> >> (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(method))
>> >>>> {
>> >>>> +                if
>> >>>> (!factory.getAnnotationIgnores().isIgnoreAnnotations(method)) {
>> >>>>                     AccessStrategy access = new
>> >>>> MethodAccess(propName,
>> >>>> method);
>> >>>>                     MetaProperty metaProperty =
>> >>>> metabean.getProperty(propName);
>> >>>>                     boolean create = metaProperty == null;
>> >>>> @@ -198,7 +198,7 @@ public class JsrMetaBeanFactory implemen
>> >>>>      */
>> >>>>     private void addXmlConstraints(Class<?> beanClass, MetaBean
>> >>> metabean)
>> >>>> throws IllegalAccessException,
>> >>>>         InvocationTargetException {
>> >>>> -        for (final MetaConstraint<?, ? extends Annotation>
>> >>> metaConstraint
>> >>>> : factoryContext.getFactory().getMetaConstraints(beanClass)) {
>> >>>> +        for (final MetaConstraint<?, ? extends Annotation>
>> >>> metaConstraint
>> >>>> : factory.getMetaConstraints(beanClass)) {
>> >>>>             Meta meta;
>> >>>>             AccessStrategy access =
>> >> metaConstraint.getAccessStrategy();
>> >>>>             boolean create = false;
>> >>>> @@ -263,7 +263,7 @@ public class JsrMetaBeanFactory implemen
>> >>>>                 metabean.putProperty(access.getPropertyName(), null);
>> >>>>             }
>> >>>>         }
>> >>>> -        for (final AccessStrategy access :
>> >>>> factoryContext.getFactory().getValidAccesses(beanClass)) {
>> >>>> +        for (final AccessStrategy access :
>> >>>> factory.getValidAccesses(beanClass)) {
>> >>>>             if (access.getElementType() == ElementType.PARAMETER) {
>> >>>>                 continue;
>> >>>>             }
>> >>>> @@ -289,7 +289,7 @@ public class JsrMetaBeanFactory implemen
>> >>>>         if (groupSeq == null) {
>> >>>>             groupSeq = metabean.initFeature(key, new
>> >>>> ArrayList<Group>(annotation == null ? 1 :
>> >>>> annotation.value().length));
>> >>>>         }
>> >>>> -        Class<?>[] groupClasses =
>> >>>> factoryContext.getFactory().getDefaultSequence(beanClass);
>> >>>> +        Class<?>[] groupClasses =
>> >> factory.getDefaultSequence(beanClass);
>> >>>>         if (groupClasses == null || groupClasses.length == 0) {
>> >>>>             if (annotation == null) {
>> >>>>                 groupSeq.add(Group.DEFAULT);
>> >>>>
>> >>>> Modified:
>> >>>>
>> >>
>> >> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> ---
>> >>>>
>> >>
>> >> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
>> >>>> (original)
>> >>>> +++
>> >>>>
>> >>
>> >> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
>> >>>> Wed Dec 23 12:45:01 2015
>> >>>> @@ -89,6 +89,10 @@ public class ValidationTest extends Test
>> >>>>         return factory.getValidator();
>> >>>>     }
>> >>>>
>> >>>> +    public void testCache() {
>> >>>> +
>> >>>>
>> >>>
>> >>
>> >> factory.getValidator().getConstraintsForClass(AccessTestBusinessObject.class);
>> >>>> +
>> >>>>
>> >>>
>> >>
>> >> factory.getValidator().getConstraintsForClass(AccessTestBusinessObject.class);
>> >>>> +    }
>> >>>>     public void testAccessStrategies_field_method() {
>> >>>>         AccessTestBusinessObject o1 = new
>> >> AccessTestBusinessObject("1");
>> >>>>         AccessTestBusinessObjectSub o2 = new
>> >>>> AccessTestBusinessObjectSub("3");
>> >>>>
>> >>>> Modified: bval/trunk/bval-tck/pom.xml
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/bval-tck/pom.xml?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> --- bval/trunk/bval-tck/pom.xml (original)
>> >>>> +++ bval/trunk/bval-tck/pom.xml Wed Dec 23 12:45:01 2015
>> >>>> @@ -169,6 +169,55 @@
>> >>>>                     <version>1.0.0</version>
>> >>>>                 </dependency>
>> >>>>             </dependencies>
>> >>>> +            <repositories>
>> >>>> +                <repository>
>> >>>> +                    <!-- override outdated URLs for jboss repo ids
>> >>>> -->
>> >>>> +                    <id>repository.jboss.org</id>
>> >>>> +                    <name>JBoss Public Maven Repository Group</name>
>> >>>> +                    <url>
>> >>>> https://repository.jboss.org/nexus/content/groups/public/</url>
>> >>>> +                    <layout>default</layout>
>> >>>> +                    <releases>
>> >>>> +                        <enabled>true</enabled>
>> >>>> +                        <updatePolicy>never</updatePolicy>
>> >>>> +                        <checksumPolicy>fail</checksumPolicy>
>> >>>> +                    </releases>
>> >>>> +                    <snapshots>
>> >>>> +                        <enabled>false</enabled>
>> >>>> +                        <updatePolicy>never</updatePolicy>
>> >>>> +                        <checksumPolicy>warn</checksumPolicy>
>> >>>> +                    </snapshots>
>> >>>> +                </repository>
>> >>>> +                <repository>
>> >>>> +                    <id>jboss</id>
>> >>>> +                    <name>JBoss Public Maven Repository Group
>> >>>> (again)</name>
>> >>>> +                    <url>
>> >>>> https://repository.jboss.org/nexus/content/groups/public/</url>
>> >>>> +                    <layout>default</layout>
>> >>>> +                    <releases>
>> >>>> +                        <enabled>true</enabled>
>> >>>> +                        <updatePolicy>never</updatePolicy>
>> >>>> +                        <checksumPolicy>fail</checksumPolicy>
>> >>>> +                    </releases>
>> >>>> +                    <snapshots>
>> >>>> +                        <enabled>false</enabled>
>> >>>> +                        <updatePolicy>never</updatePolicy>
>> >>>> +                        <checksumPolicy>warn</checksumPolicy>
>> >>>> +                    </snapshots>
>> >>>> +                </repository>
>> >>>> +                <repository>
>> >>>> +                    <id>snapshots.jboss.org</id>
>> >>>> +                    <url>
>> >>>> https://repository.jboss.org/nexus/content/repositories/snapshots/
>> >> </url>
>> >>>> +                    <snapshots>
>> >>>> +                        <enabled>true</enabled>
>> >>>> +                    </snapshots>
>> >>>> +                </repository>
>> >>>> +                <repository>
>> >>>> +                    <id>jboss-snapshots</id>
>> >>>> +                    <url>
>> >>>> https://repository.jboss.org/nexus/content/repositories/snapshots/
>> >> </url>
>> >>>> +                    <snapshots>
>> >>>> +                        <enabled>true</enabled>
>> >>>> +                    </snapshots>
>> >>>> +                </repository>
>> >>>> +            </repositories>
>> >>>>             <build>
>> >>>>                 <plugins>
>> >>>>                     <plugin>
>> >>>>
>> >>>> Modified: bval/trunk/pom.xml
>> >>>> URL:
>> >>>>
>> >>>
>> >>
>> >> http://svn.apache.org/viewvc/bval/trunk/pom.xml?rev=1721536&r1=1721535&r2=1721536&view=diff
>> >>>>
>> >>>>
>> >>>
>> >>
>> >> ==============================================================================
>> >>>> --- bval/trunk/pom.xml (original)
>> >>>> +++ bval/trunk/pom.xml Wed Dec 23 12:45:01 2015
>> >>>> @@ -571,6 +571,7 @@
>> >>>>
>> >> <artifactId>commons-weaver-maven-plugin</artifactId>
>> >>>>                     <version>${commons.weaver.version}</version>
>> >>>>                     <configuration>
>> >>>> +                        <verbose>true</verbose>
>> >>>>                         <weaverConfig>
>> >>>>
>> >>> <privilizer.policy>DYNAMIC</privilizer.policy>
>> >>>>                         </weaverConfig>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>
>> >>
>>
>

Re: svn commit: r1721536 - in /bval/trunk: ./ bval-jsr/ bval-jsr/src/main/java/org/apache/bval/jsr/ bval-jsr/src/test/java/org/apache/bval/jsr/ bval-tck/

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Think Matt is on it
Le 4 janv. 2016 09:44, "Mark Struberg" <st...@yahoo.de> a écrit :

> Means we should push for releasing commons-weaver first, right?
>
> LieGrue,
> strub
>
>
> > Am 23.12.2015 um 18:14 schrieb Romain Manni-Bucau <rmannibucau@gmail.com
> >:
> >
> > yep the loop with a constant index was not loved by the runtime ;)
> >
> > FYI this issue (the real one not the weaver one) was triggered by a user
> > which got very bad perfs upgrading to 1.1 so I'd like to get this out
> ASAP
> > and if anyone has time for a review it would be really welcomed.
> >
> >
> > Romain Manni-Bucau
> > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > <http://rmannibucau.wordpress.com> | Github <
> https://github.com/rmannibucau> |
> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> > <http://www.tomitribe.com>
> >
> > 2015-12-23 18:11 GMT+01:00 Matt Benson <gu...@gmail.com>:
> >
> >> You got it. :-)
> >>
> >> Matt
> >> On Dec 23, 2015 9:48 AM, "Romain Manni-Bucau" <rm...@gmail.com>
> >> wrote:
> >>
> >>> seems a bug in 1.1 of [weaver], looks fixed in coming 1.2 so just
> >> deployed
> >>> the snapshot and upgraded in bval to the snapshot
> >>>
> >>>
> >>> Romain Manni-Bucau
> >>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>> <http://rmannibucau.wordpress.com> | Github <
> >>> https://github.com/rmannibucau> |
> >>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> >>> <http://www.tomitribe.com>
> >>>
> >>> 2015-12-23 13:47 GMT+01:00 Romain Manni-Bucau <rm...@gmail.com>:
> >>>
> >>>> Hi guys
> >>>>
> >>>> I would need some help for commons-weaver-maven-plugin setup, i
> >> commented
> >>>> it out cause it was just hanging. Any inputs/help on that?
> >>>>
> >>>> Romain Manni-Bucau
> >>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>> <http://rmannibucau.wordpress.com> | Github
> >>>> <https://github.com/rmannibucau> | LinkedIn
> >>>> <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> >>>> <http://www.tomitribe.com>
> >>>>
> >>>> ---------- Forwarded message ----------
> >>>> From: <rm...@apache.org>
> >>>> Date: 2015-12-23 13:45 GMT+01:00
> >>>> Subject: svn commit: r1721536 - in /bval/trunk: ./ bval-jsr/
> >>>> bval-jsr/src/main/java/org/apache/bval/jsr/
> >>>> bval-jsr/src/test/java/org/apache/bval/jsr/ bval-tck/
> >>>> To: commits@bval.apache.org
> >>>>
> >>>>
> >>>> Author: rmannibucau
> >>>> Date: Wed Dec 23 12:45:01 2015
> >>>> New Revision: 1721536
> >>>>
> >>>> URL: http://svn.apache.org/viewvc?rev=1721536&view=rev
> >>>> Log:
> >>>> BVAL-143 caching should be hold by the factory or shouldnt be for
> >>>> performance reason + reactivating jboss repo since tck (1.0) modules
> >> are
> >>>> not on central
> >>>>
> >>>> Modified:
> >>>>    bval/trunk/bval-jsr/pom.xml
> >>>>
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
> >>>>
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
> >>>>
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
> >>>>
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
> >>>>
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
> >>>>
> >>>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
> >>>>
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
> >>>>
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
> >>>>
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
> >>>>
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
> >>>>
> >>>>
> >>
> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
> >>>>    bval/trunk/bval-tck/pom.xml
> >>>>    bval/trunk/pom.xml
> >>>>
> >>>> Modified: bval/trunk/bval-jsr/pom.xml
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/pom.xml?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> --- bval/trunk/bval-jsr/pom.xml (original)
> >>>> +++ bval/trunk/bval-jsr/pom.xml Wed Dec 23 12:45:01 2015
> >>>> @@ -297,10 +297,12 @@
> >>>>                     </includes>
> >>>>                 </configuration>
> >>>>             </plugin>
> >>>> +            <!-- TODO: activate but ATM it just doesnt build with it
> >>>>             <plugin>
> >>>>                 <groupId>org.apache.commons</groupId>
> >>>>                 <artifactId>commons-weaver-maven-plugin</artifactId>
> >>>>             </plugin>
> >>>> +            -->
> >>>>         </plugins>
> >>>>     </build>
> >>>> </project>
> >>>>
> >>>> Modified:
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
> >>>> (original)
> >>>> +++
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -18,6 +18,23 @@
> >>>>  */
> >>>> package org.apache.bval.jsr;
> >>>>
> >>>> +import org.apache.bval.jsr.groups.GroupsComputer;
> >>>> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
> >>>> +import org.apache.bval.util.AccessStrategy;
> >>>> +import org.apache.commons.lang3.ArrayUtils;
> >>>> +import org.apache.commons.lang3.reflect.TypeUtils;
> >>>> +import org.apache.commons.weaver.privilizer.Privileged;
> >>>> +
> >>>> +import javax.validation.Constraint;
> >>>> +import javax.validation.ConstraintDeclarationException;
> >>>> +import javax.validation.ConstraintDefinitionException;
> >>>> +import javax.validation.ConstraintTarget;
> >>>> +import javax.validation.ConstraintValidator;
> >>>> +import javax.validation.OverridesAttribute;
> >>>> +import javax.validation.Payload;
> >>>> +import javax.validation.ReportAsSingleViolation;
> >>>> +import
> >> javax.validation.constraintvalidation.SupportedValidationTarget;
> >>>> +import javax.validation.constraintvalidation.ValidationTarget;
> >>>> import java.lang.annotation.Annotation;
> >>>> import java.lang.reflect.InvocationTargetException;
> >>>> import java.lang.reflect.Method;
> >>>> @@ -32,25 +49,6 @@ import java.util.Set;
> >>>> import java.util.logging.Level;
> >>>> import java.util.logging.Logger;
> >>>>
> >>>> -import javax.validation.Constraint;
> >>>> -import javax.validation.ConstraintDeclarationException;
> >>>> -import javax.validation.ConstraintDefinitionException;
> >>>> -import javax.validation.ConstraintTarget;
> >>>> -import javax.validation.ConstraintValidator;
> >>>> -import javax.validation.ConstraintValidatorFactory;
> >>>> -import javax.validation.OverridesAttribute;
> >>>> -import javax.validation.Payload;
> >>>> -import javax.validation.ReportAsSingleViolation;
> >>>> -import
> >> javax.validation.constraintvalidation.SupportedValidationTarget;
> >>>> -import javax.validation.constraintvalidation.ValidationTarget;
> >>>> -
> >>>> -import org.apache.bval.jsr.groups.GroupsComputer;
> >>>> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
> >>>> -import org.apache.bval.util.AccessStrategy;
> >>>> -import org.apache.commons.lang3.ArrayUtils;
> >>>> -import org.apache.commons.lang3.reflect.TypeUtils;
> >>>> -import org.apache.commons.weaver.privilizer.Privileged;
> >>>> -
> >>>> /**
> >>>>  * Description: helper class that builds a {@link
> >> ConstraintValidation}
> >>>> or its
> >>>>  * composite constraint validations by parsing the jsr-annotations and
> >>>> @@ -64,19 +62,19 @@ final class AnnotationConstraintBuilder<
> >>>>
> >>>>     /**
> >>>>      * Create a new AnnotationConstraintBuilder instance.
> >>>> -     *
> >>>> +     *
> >>>>      * @param validatorClasses
> >>>>      * @param annotation
> >>>>      * @param owner
> >>>>      * @param access
> >>>>      */
> >>>> -    public AnnotationConstraintBuilder(ConstraintValidatorFactory
> >>> factory,
> >>>> -        Class<? extends ConstraintValidator<A, ?>>[]
> >> validatorClasses, A
> >>>> annotation, Class<?> owner,
> >>>> -        AccessStrategy access, ConstraintTarget target) {
> >>>> +    public AnnotationConstraintBuilder(
> >>>> +            Class<? extends ConstraintValidator<A, ?>>[]
> >>>> validatorClasses, A annotation, Class<?> owner,
> >>>> +            AccessStrategy access, ConstraintTarget target) {
> >>>>         final boolean reportFromComposite =
> >>>>             annotation != null &&
> >>>>
> >>>
> >>
> annotation.annotationType().isAnnotationPresent(ReportAsSingleViolation.class);
> >>>>         constraintValidation =
> >>>> -            new ConstraintValidation<A>(factory, validatorClasses,
> >>>> annotation, owner, access, reportFromComposite,
> >>>> +            new ConstraintValidation<A>(validatorClasses, annotation,
> >>>> owner, access, reportFromComposite,
> >>>>                 target);
> >>>>         buildFromAnnotation();
> >>>>     }
> >>>> @@ -259,7 +257,7 @@ final class AnnotationConstraintBuilder<
> >>>>
> >>>>     /**
> >>>>      * Get the configured {@link ConstraintValidation}.
> >>>> -     *
> >>>> +     *
> >>>>      * @return {@link ConstraintValidation}
> >>>>      */
> >>>>     public ConstraintValidation<?> getConstraintValidation() {
> >>>> @@ -309,7 +307,7 @@ final class AnnotationConstraintBuilder<
> >>>>      * Calculates the index of the composite constraint. The index
> >>>> represents
> >>>>      * the order in which it is added in reference to other
> >> constraints
> >>>> of the
> >>>>      * same type.
> >>>> -     *
> >>>> +     *
> >>>>      * @param composite
> >>>>      *            The composite constraint (not yet added).
> >>>>      * @return An integer index always >= 0
> >>>>
> >>>> Modified:
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
> >>>> (original)
> >>>> +++
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -34,7 +34,6 @@ import javax.validation.constraintvalida
> >>>> import javax.validation.constraintvalidation.ValidationTarget;
> >>>> import javax.validation.groups.ConvertGroup;
> >>>> import javax.validation.groups.Default;
> >>>> -
> >>>> import java.lang.annotation.Annotation;
> >>>> import java.lang.reflect.AnnotatedElement;
> >>>> import java.lang.reflect.InvocationTargetException;
> >>>> @@ -50,15 +49,15 @@ import java.util.Set;
> >>>> @Privilizing(@CallTo(Reflection.class))
> >>>> public final class AnnotationProcessor {
> >>>>     /** {@link ApacheFactoryContext} used */
> >>>> -    private final ApacheFactoryContext factoryContext;
> >>>> +    private final ApacheValidatorFactory factory;
> >>>>
> >>>>     /**
> >>>>      * Create a new {@link AnnotationProcessor} instance.
> >>>>      *
> >>>> -     * @param factoryContext
> >>>> +     * @param factory the validator factory.
> >>>>      */
> >>>> -    public AnnotationProcessor(ApacheFactoryContext factoryContext) {
> >>>> -        this.factoryContext = factoryContext;
> >>>> +    public AnnotationProcessor(ApacheValidatorFactory factory) {
> >>>> +        this.factory = factory;
> >>>>     }
> >>>>
> >>>>     /**
> >>>> @@ -112,7 +111,7 @@ public final class AnnotationProcessor {
> >>>>      * @throws InvocationTargetException
> >>>>      */
> >>>>     public <A extends Annotation> boolean processAnnotation(A
> >>> annotation,
> >>>> Meta prop, Class<?> owner,
> >>>> -        AccessStrategy access, AppendValidation appender, boolean
> >>>> reflection) throws IllegalAccessException,
> >>>> +            AccessStrategy access, AppendValidation appender, boolean
> >>>> reflection) throws IllegalAccessException,
> >>>>         InvocationTargetException {
> >>>>         if (annotation instanceof Valid) {
> >>>>             return addAccessStrategy(prop, access);
> >>>> @@ -204,12 +203,11 @@ public final class AnnotationProcessor {
> >>>>         }
> >>>>         final Class<A> annotationType = (Class<A>)
> >>>> annotation.annotationType();
> >>>>         Class<? extends ConstraintValidator<A, ?>>[] validatorClasses
> >> =
> >>>> -
> >>>>
> >>>
> >>
> factoryContext.getFactory().getConstraintsCache().getConstraintValidators(annotationType);
> >>>> +
> >>>> factory.getConstraintsCache().getConstraintValidators(annotationType);
> >>>>         if (validatorClasses == null) {
> >>>>             validatorClasses = (Class<? extends ConstraintValidator<A,
> >>>> ?>>[]) vcAnno.validatedBy();
> >>>>             if (validatorClasses.length == 0) {
> >>>> -                validatorClasses =
> >>>> -
> >>>>
> >>>
> >>
> factoryContext.getFactory().getDefaultConstraints().getValidatorClasses(annotationType);
> >>>> +                validatorClasses =
> >>>> factory.getDefaultConstraints().getValidatorClasses(annotationType);
> >>>>             }
> >>>>         }
> >>>>         return validatorClasses;
> >>>> @@ -234,7 +232,8 @@ public final class AnnotationProcessor {
> >>>>      * @throws IllegalAccessException
> >>>>      * @throws InvocationTargetException
> >>>>      */
> >>>> -    private <A extends Annotation> boolean applyConstraint(A
> >> annotation,
> >>>> +    private <A extends Annotation> boolean applyConstraint(
> >>>> +        A annotation,
> >>>>         Class<? extends ConstraintValidator<A, ?>>[]
> >>>> rawConstraintClasses, Meta prop, Class<?> owner,
> >>>>         AccessStrategy access, AppendValidation appender) throws
> >>>> IllegalAccessException, InvocationTargetException {
> >>>>
> >>>> @@ -244,7 +243,8 @@ public final class AnnotationProcessor {
> >>>>         }
> >>>>
> >>>>         final AnnotationConstraintBuilder<A> builder =
> >>>> -            new
> >>>>
> >>>
> >>
> AnnotationConstraintBuilder<A>(factoryContext.getConstraintValidatorFactory(),
> >>>> constraintClasses,
> >>>> +            new AnnotationConstraintBuilder<A>(
> >>>> +                constraintClasses,
> >>>>                 annotation, owner, access, null);
> >>>>
> >>>>         // JSR-303 3.4.4: Add implicit groups
> >>>>
> >>>> Modified:
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
> >>>> (original)
> >>>> +++
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -18,33 +18,18 @@
> >>>>  */
> >>>> package org.apache.bval.jsr;
> >>>>
> >>>> -import java.lang.reflect.Constructor;
> >>>> -import java.util.ArrayList;
> >>>> -import java.util.List;
> >>>> +import org.apache.bval.MetaBeanFinder;
> >>>> +import org.apache.bval.util.reflection.Reflection;
> >>>> +import org.apache.commons.weaver.privilizer.Privilizing;
> >>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> >>>>
> >>>> import javax.validation.ConstraintValidatorFactory;
> >>>> import javax.validation.MessageInterpolator;
> >>>> import javax.validation.ParameterNameProvider;
> >>>> import javax.validation.TraversableResolver;
> >>>> -import javax.validation.ValidationException;
> >>>> import javax.validation.Validator;
> >>>> import javax.validation.ValidatorContext;
> >>>>
> >>>> -import org.apache.bval.IntrospectorMetaBeanFactory;
> >>>> -import org.apache.bval.MetaBeanBuilder;
> >>>> -import org.apache.bval.MetaBeanFactory;
> >>>> -import org.apache.bval.MetaBeanFinder;
> >>>> -import org.apache.bval.MetaBeanManager;
> >>>> -import org.apache.bval.util.reflection.Reflection;
> >>>> -import org.apache.bval.xml.XMLMetaBeanBuilder;
> >>>> -import org.apache.bval.xml.XMLMetaBeanFactory;
> >>>> -import org.apache.bval.xml.XMLMetaBeanManager;
> >>>> -import org.apache.commons.lang3.StringUtils;
> >>>> -import org.apache.commons.lang3.reflect.ConstructorUtils;
> >>>> -import org.apache.commons.weaver.privilizer.Privileged;
> >>>> -import org.apache.commons.weaver.privilizer.Privilizing;
> >>>> -import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> >>>> -
> >>>> /**
> >>>>  * Description: Represents the context that is used to create
> >>>>  * <code>ClassValidator</code> instances.<br/>
> >>>> @@ -52,7 +37,7 @@ import org.apache.commons.weaver.privili
> >>>> @Privilizing(@CallTo(Reflection.class))
> >>>> public class ApacheFactoryContext implements ValidatorContext {
> >>>>     private final ApacheValidatorFactory factory;
> >>>> -    private final MetaBeanFinder metaBeanFinder;
> >>>> +    private volatile MetaBeanFinder metaBeanFinder;
> >>>>
> >>>>     private MessageInterpolator messageInterpolator;
> >>>>     private TraversableResolver traversableResolver;
> >>>> @@ -63,19 +48,9 @@ public class ApacheFactoryContext implem
> >>>>      * Create a new ApacheFactoryContext instance.
> >>>>      *
> >>>>      * @param factory validator factory
> >>>> -     */
> >>>> -    public ApacheFactoryContext(ApacheValidatorFactory factory) {
> >>>> -        this.factory = factory;
> >>>> -        this.metaBeanFinder = buildMetaBeanFinder();
> >>>> -    }
> >>>> -
> >>>> -    /**
> >>>> -     * Create a new ApacheFactoryContext instance.
> >>>> -     *
> >>>> -     * @param factory validator factory
> >>>>      * @param metaBeanFinder meta finder
> >>>>      */
> >>>> -    protected ApacheFactoryContext(ApacheValidatorFactory factory,
> >>>> MetaBeanFinder metaBeanFinder) {
> >>>> +    public ApacheFactoryContext(ApacheValidatorFactory factory,
> >>>> MetaBeanFinder metaBeanFinder) {
> >>>>         this.factory = factory;
> >>>>         this.metaBeanFinder = metaBeanFinder;
> >>>>     }
> >>>> @@ -99,11 +74,16 @@ public class ApacheFactoryContext implem
> >>>>         return metaBeanFinder;
> >>>>     }
> >>>>
> >>>> +    private synchronized void resetMeta() { // ensure to ingnore the
> >>>> cache and rebuild constraint with new model
> >>>> +        metaBeanFinder = factory.buildMetaBeanFinder();
> >>>> +    }
> >>>> +
> >>>>     /**
> >>>>      * {@inheritDoc}
> >>>>      */
> >>>>     public ValidatorContext messageInterpolator(MessageInterpolator
> >>>> messageInterpolator) {
> >>>>         this.messageInterpolator = messageInterpolator;
> >>>> +        resetMeta();
> >>>>         return this;
> >>>>     }
> >>>>
> >>>> @@ -112,6 +92,7 @@ public class ApacheFactoryContext implem
> >>>>      */
> >>>>     public ValidatorContext traversableResolver(TraversableResolver
> >>>> traversableResolver) {
> >>>>         this.traversableResolver = traversableResolver;
> >>>> +        resetMeta();
> >>>>         return this;
> >>>>     }
> >>>>
> >>>> @@ -120,11 +101,13 @@ public class ApacheFactoryContext implem
> >>>>      */
> >>>>     public ValidatorContext
> >>>> constraintValidatorFactory(ConstraintValidatorFactory
> >>>> constraintValidatorFactory) {
> >>>>         this.constraintValidatorFactory = constraintValidatorFactory;
> >>>> +        resetMeta();
> >>>>         return this;
> >>>>     }
> >>>>
> >>>>     public ValidatorContext
> >> parameterNameProvider(ParameterNameProvider
> >>>> parameterNameProvider) {
> >>>>         this.parameterNameProvider = parameterNameProvider;
> >>>> +        resetMeta();
> >>>>         return this;
> >>>>     }
> >>>>
> >>>> @@ -171,126 +154,4 @@ public class ApacheFactoryContext implem
> >>>>         return Boolean.parseBoolean(factory.getProperties().get(
> >>>>
> >>>> ApacheValidatorConfiguration.Properties.TREAT_MAPS_LIKE_BEANS));
> >>>>     }
> >>>> -
> >>>> -    /**
> >>>> -     * Create MetaBeanManager that uses factories:
> >>>> -     * <ol>
> >>>> -     * <li>if enabled by
> >>>> -     * {@link
> >>>> ApacheValidatorConfiguration.Properties#ENABLE_INTROSPECTOR}, an
> >>>> -     * {@link IntrospectorMetaBeanFactory}</li>
> >>>> -     * <li>{@link MetaBeanFactory} types (if any) specified by
> >>>> -     * {@link
> >>>> ApacheValidatorConfiguration.Properties#METABEAN_FACTORY_CLASSNAMES}
> >>>> -     * </li>
> >>>> -     * <li>if no {@link JsrMetaBeanFactory} has yet been specified
> >> (this
> >>>> -     * allows factory order customization), a {@link
> >> JsrMetaBeanFactory}
> >>>> -     * which handles both JSR303-XML and JSR303-Annotations</li>
> >>>> -     * <li>if enabled by
> >>>> -     * {@link
> >>>> ApacheValidatorConfiguration.Properties#ENABLE_METABEANS_XML}, an
> >>>> -     * {@link XMLMetaBeanFactory}</li>
> >>>> -     * </ol>
> >>>> -     *
> >>>> -     * @return a new instance of MetaBeanManager with adequate
> >>>> MetaBeanFactories
> >>>> -     */
> >>>> -    protected MetaBeanFinder buildMetaBeanFinder() {
> >>>> -        final List<MetaBeanFactory> builders = new
> >>>> ArrayList<MetaBeanFactory>();
> >>>> -        if (Boolean.parseBoolean(factory.getProperties().get(
> >>>> -
> >>>> ApacheValidatorConfiguration.Properties.ENABLE_INTROSPECTOR))) {
> >>>> -            builders.add(new IntrospectorMetaBeanFactory());
> >>>> -        }
> >>>> -        final String[] factoryClassNames =
> >>>> -            StringUtils.split(factory.getProperties().get(
> >>>> -
> >>>> ApacheValidatorConfiguration.Properties.METABEAN_FACTORY_CLASSNAMES));
> >>>> -        if (factoryClassNames != null) {
> >>>> -            for (String clsName : factoryClassNames) {
> >>>> -                // cast, relying on #createMetaBeanFactory to throw
> >> the
> >>>> exception if incompatible:
> >>>> -                @SuppressWarnings("unchecked")
> >>>> -                final Class<? extends MetaBeanFactory> factoryClass =
> >>>> (Class<? extends MetaBeanFactory>) loadClass(clsName);
> >>>> -                builders.add(createMetaBeanFactory(factoryClass));
> >>>> -            }
> >>>> -        }
> >>>> -        boolean jsrFound = false;
> >>>> -        for (MetaBeanFactory builder : builders) {
> >>>> -            jsrFound |= builder instanceof JsrMetaBeanFactory;
> >>>> -        }
> >>>> -        if (!jsrFound) {
> >>>> -            builders.add(new JsrMetaBeanFactory(this));
> >>>> -        }
> >>>> -        @SuppressWarnings("deprecation")
> >>>> -        final boolean enableMetaBeansXml =
> >>>> -            Boolean.parseBoolean(factory.getProperties().get(
> >>>> -
> >>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML));
> >>>> -        if (enableMetaBeansXml) {
> >>>> -            XMLMetaBeanManagerCreator.addFactory(builders);
> >>>> -        }
> >>>> -        return createMetaBeanManager(builders);
> >>>> -    }
> >>>> -
> >>>> -    /**
> >>>> -     * Create a {@link MetaBeanManager} using the specified builders.
> >>>> -     *
> >>>> -     * @param builders
> >>>> -     *            {@link MetaBeanFactory} {@link List}
> >>>> -     * @return {@link MetaBeanManager}
> >>>> -     */
> >>>> -    @SuppressWarnings("deprecation")
> >>>> -    protected MetaBeanFinder
> >> createMetaBeanManager(List<MetaBeanFactory>
> >>>> builders) {
> >>>> -        // as long as we support both: jsr (in the builders list) and
> >>>> xstream-xml metabeans:
> >>>> -        if (Boolean.parseBoolean(factory.getProperties().get(
> >>>> -
> >>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML))) {
> >>>> -            return
> >>>> XMLMetaBeanManagerCreator.createXMLMetaBeanManager(builders);
> >>>> -        }
> >>>> -        return new MetaBeanManager(new
> >>>> MetaBeanBuilder(builders.toArray(new
> >> MetaBeanFactory[builders.size()])));
> >>>> -    }
> >>>> -
> >>>> -    @Privileged
> >>>> -    private <F extends MetaBeanFactory> F createMetaBeanFactory(final
> >>>> Class<F> cls) {
> >>>> -        try {
> >>>> -            Constructor<F> c =
> >>>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
> >>>> ApacheFactoryContext.this.getClass());
> >>>> -            if (c != null) {
> >>>> -                return c.newInstance(ApacheFactoryContext.this);
> >>>> -            }
> >>>> -            c =
> ConstructorUtils.getMatchingAccessibleConstructor(cls,
> >>>> getFactory().getClass());
> >>>> -            if (c != null) {
> >>>> -                return c.newInstance(getFactory());
> >>>> -            }
> >>>> -            return cls.newInstance();
> >>>> -        } catch (Exception e) {
> >>>> -            throw new ValidationException(e);
> >>>> -        }
> >>>> -    }
> >>>> -
> >>>> -    /**
> >>>> -     * separate class to prevent the classloader to immediately load
> >>>> optional
> >>>> -     * classes: XMLMetaBeanManager, XMLMetaBeanFactory,
> >>>> XMLMetaBeanBuilder that
> >>>> -     * might not be available in the classpath
> >>>> -     */
> >>>> -    private static class XMLMetaBeanManagerCreator {
> >>>> -
> >>>> -        static void addFactory(List<MetaBeanFactory> builders) {
> >>>> -            builders.add(new XMLMetaBeanFactory());
> >>>> -        }
> >>>> -
> >>>> -        /**
> >>>> -         * Create the {@link MetaBeanManager} to process JSR303 XML.
> >>>> Requires
> >>>> -         * bval-xstream at RT.
> >>>> -         *
> >>>> -         * @param builders meta bean builders
> >>>> -         * @return {@link MetaBeanManager}
> >>>> -         */
> >>>> -        // NOTE - We return MetaBeanManager instead of
> >>> XMLMetaBeanManager
> >>>> to
> >>>> -        // keep
> >>>> -        // bval-xstream an optional module.
> >>>> -        protected static MetaBeanManager
> >>>> createXMLMetaBeanManager(List<MetaBeanFactory> builders) {
> >>>> -            return new XMLMetaBeanManager(
> >>>> -                new XMLMetaBeanBuilder(builders.toArray(new
> >>>> MetaBeanFactory[builders.size()])));
> >>>> -        }
> >>>> -    }
> >>>> -
> >>>> -    private Class<?> loadClass(final String className) {
> >>>> -        try {
> >>>> -            return Class.forName(className, true,
> >>>> Reflection.getClassLoader(ApacheFactoryContext.class));
> >>>> -        } catch (ClassNotFoundException ex) {
> >>>> -            throw new ValidationException("Unable to load class: " +
> >>>> className, ex);
> >>>> -        }
> >>>> -    }
> >>>> }
> >>>>
> >>>> Modified:
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
> >>>> (original)
> >>>> +++
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -18,13 +18,24 @@
> >>>>  */
> >>>> package org.apache.bval.jsr;
> >>>>
> >>>> +import org.apache.bval.IntrospectorMetaBeanFactory;
> >>>> +import org.apache.bval.MetaBeanBuilder;
> >>>> +import org.apache.bval.MetaBeanFactory;
> >>>> +import org.apache.bval.MetaBeanFinder;
> >>>> +import org.apache.bval.MetaBeanManager;
> >>>> import org.apache.bval.jsr.xml.AnnotationIgnores;
> >>>> import org.apache.bval.jsr.xml.MetaConstraint;
> >>>> import org.apache.bval.jsr.xml.ValidationMappingParser;
> >>>> import org.apache.bval.util.AccessStrategy;
> >>>> import org.apache.bval.util.reflection.Reflection;
> >>>> +import org.apache.bval.xml.XMLMetaBeanBuilder;
> >>>> +import org.apache.bval.xml.XMLMetaBeanFactory;
> >>>> +import org.apache.bval.xml.XMLMetaBeanManager;
> >>>> import org.apache.commons.lang3.ArrayUtils;
> >>>> import org.apache.commons.lang3.ClassUtils;
> >>>> +import org.apache.commons.lang3.StringUtils;
> >>>> +import org.apache.commons.lang3.reflect.ConstructorUtils;
> >>>> +import org.apache.commons.weaver.privilizer.Privileged;
> >>>> import org.apache.commons.weaver.privilizer.Privilizing;
> >>>> import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> >>>>
> >>>> @@ -37,9 +48,9 @@ import javax.validation.ValidationExcept
> >>>> import javax.validation.Validator;
> >>>> import javax.validation.ValidatorFactory;
> >>>> import javax.validation.spi.ConfigurationState;
> >>>> -
> >>>> import java.io.Closeable;
> >>>> import java.lang.annotation.Annotation;
> >>>> +import java.lang.reflect.Constructor;
> >>>> import java.lang.reflect.Modifier;
> >>>> import java.util.ArrayList;
> >>>> import java.util.Collection;
> >>>> @@ -80,6 +91,60 @@ public class ApacheValidatorFactory impl
> >>>>     private final ConcurrentMap<Class<?>, List<MetaConstraint<?, ?
> >>>> extends Annotation>>> constraintMap;
> >>>>
> >>>>     private final Collection<Closeable> toClose = new
> >>>> ArrayList<Closeable>();
> >>>> +    private final MetaBeanFinder defaultMetaBeanFinder;
> >>>> +
> >>>> +    /**
> >>>> +     * Create MetaBeanManager that uses factories:
> >>>> +     * <ol>
> >>>> +     * <li>if enabled by
> >>>> +     * {@link
> >>>> ApacheValidatorConfiguration.Properties#ENABLE_INTROSPECTOR}, an
> >>>> +     * {@link IntrospectorMetaBeanFactory}</li>
> >>>> +     * <li>{@link MetaBeanFactory} types (if any) specified by
> >>>> +     * {@link
> >>>> ApacheValidatorConfiguration.Properties#METABEAN_FACTORY_CLASSNAMES}
> >>>> +     * </li>
> >>>> +     * <li>if no {@link JsrMetaBeanFactory} has yet been specified
> >> (this
> >>>> +     * allows factory order customization), a {@link
> >> JsrMetaBeanFactory}
> >>>> +     * which handles both JSR303-XML and JSR303-Annotations</li>
> >>>> +     * <li>if enabled by
> >>>> +     * {@link
> >>>> ApacheValidatorConfiguration.Properties#ENABLE_METABEANS_XML}, an
> >>>> +     * {@link XMLMetaBeanFactory}</li>
> >>>> +     * </ol>
> >>>> +     *
> >>>> +     * @return a new instance of MetaBeanManager with adequate
> >>>> MetaBeanFactories
> >>>> +     */
> >>>> +    protected MetaBeanFinder buildMetaBeanFinder() {
> >>>> +        final List<MetaBeanFactory> builders = new
> >>>> ArrayList<MetaBeanFactory>();
> >>>> +        if (Boolean.parseBoolean(getProperties().get(
> >>>> +
> >>>> ApacheValidatorConfiguration.Properties.ENABLE_INTROSPECTOR))) {
> >>>> +            builders.add(new IntrospectorMetaBeanFactory());
> >>>> +        }
> >>>> +        final String[] factoryClassNames =
> >>>> +                StringUtils.split(getProperties().get(
> >>>> +
> >>>> ApacheValidatorConfiguration.Properties.METABEAN_FACTORY_CLASSNAMES));
> >>>> +        if (factoryClassNames != null) {
> >>>> +            for (String clsName : factoryClassNames) {
> >>>> +                // cast, relying on #createMetaBeanFactory to throw
> >> the
> >>>> exception if incompatible:
> >>>> +                @SuppressWarnings("unchecked")
> >>>> +                final Class<? extends MetaBeanFactory> factoryClass =
> >>>> (Class<? extends MetaBeanFactory>) loadClass(clsName);
> >>>> +                builders.add(createMetaBeanFactory(factoryClass));
> >>>> +            }
> >>>> +        }
> >>>> +        boolean jsrFound = false;
> >>>> +        for (MetaBeanFactory builder : builders) {
> >>>> +            jsrFound |= builder instanceof JsrMetaBeanFactory;
> >>>> +        }
> >>>> +        if (!jsrFound) {
> >>>> +            builders.add(new JsrMetaBeanFactory(this));
> >>>> +        }
> >>>> +        @SuppressWarnings("deprecation")
> >>>> +        final boolean enableMetaBeansXml =
> >>>> +                Boolean.parseBoolean(getProperties().get(
> >>>> +
> >>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML));
> >>>> +        if (enableMetaBeansXml) {
> >>>> +            XMLMetaBeanManagerCreator.addFactory(builders);
> >>>> +        }
> >>>> +        return createMetaBeanManager(builders);
> >>>> +    }
> >>>>
> >>>>     /**
> >>>>      * Convenience method to retrieve a default global
> >>>> ApacheValidatorFactory
> >>>> @@ -110,22 +175,11 @@ public class ApacheValidatorFactory impl
> >>>>     /**
> >>>>      * Create a new ApacheValidatorFactory instance.
> >>>>      */
> >>>> -    public ApacheValidatorFactory(ConfigurationState
> >>> configurationState) {
> >>>> -        properties = new HashMap<String, String>();
> >>>> +    public ApacheValidatorFactory(ConfigurationState configuration) {
> >>>> +        properties = new HashMap<String,
> >>>> String>(configuration.getProperties());
> >>>>         defaultSequences = new HashMap<Class<?>, Class<?>[]>();
> >>>>         validAccesses = new ConcurrentHashMap<Class<?>,
> >>>> List<AccessStrategy>>();
> >>>>         constraintMap = new ConcurrentHashMap<Class<?>,
> >>>> List<MetaConstraint<?, ? extends Annotation>>>();
> >>>> -        configure(configurationState);
> >>>> -    }
> >>>> -
> >>>> -    /**
> >>>> -     * Configure this {@link ApacheValidatorFactory} from a
> >>>> -     * {@link ConfigurationState}.
> >>>> -     *
> >>>> -     * @param configuration
> >>>> -     */
> >>>> -    protected void configure(final ConfigurationState configuration)
> {
> >>>> -        getProperties().putAll(configuration.getProperties());
> >>>>
> >>>>         parameterNameProvider =
> >>> configuration.getParameterNameProvider();
> >>>>         messageResolver = configuration.getMessageInterpolator();
> >>>> @@ -138,6 +192,8 @@ public class ApacheValidatorFactory impl
> >>>>         }
> >>>>
> >>>>         new
> >>>>
> >>>
> >>
> ValidationMappingParser(this).processMappingConfig(configuration.getMappingStreams());
> >>>> +
> >>>> +        defaultMetaBeanFinder = buildMetaBeanFinder();
> >>>>     }
> >>>>
> >>>>     /**
> >>>> @@ -165,7 +221,7 @@ public class ApacheValidatorFactory impl
> >>>>      * @return the validator factory's context
> >>>>      */
> >>>>     public ApacheFactoryContext usingContext() {
> >>>> -        return new ApacheFactoryContext(this);
> >>>> +        return new ApacheFactoryContext(this, defaultMetaBeanFinder);
> >>>>     }
> >>>>
> >>>>     /**
> >>>> @@ -428,4 +484,73 @@ public class ApacheValidatorFactory impl
> >>>>     private static Class<?>[] safeArray(Class<?>... array) {
> >>>>         return ArrayUtils.isEmpty(array) ?
> >> ArrayUtils.EMPTY_CLASS_ARRAY
> >>> :
> >>>> ArrayUtils.clone(array);
> >>>>     }
> >>>> +
> >>>> +    /**
> >>>> +     * Create a {@link MetaBeanManager} using the specified builders.
> >>>> +     *
> >>>> +     * @param builders
> >>>> +     *            {@link MetaBeanFactory} {@link List}
> >>>> +     * @return {@link MetaBeanManager}
> >>>> +     */
> >>>> +    @SuppressWarnings("deprecation")
> >>>> +    protected MetaBeanFinder
> >> createMetaBeanManager(List<MetaBeanFactory>
> >>>> builders) {
> >>>> +        // as long as we support both: jsr (in the builders list) and
> >>>> xstream-xml metabeans:
> >>>> +        if (Boolean.parseBoolean(getProperties().get(
> >>>> +
> >>>> ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML))) {
> >>>> +            return
> >>>> XMLMetaBeanManagerCreator.createXMLMetaBeanManager(builders);
> >>>> +        }
> >>>> +        return new MetaBeanManager(new
> >>>> MetaBeanBuilder(builders.toArray(new
> >> MetaBeanFactory[builders.size()])));
> >>>> +    }
> >>>> +
> >>>> +    @Privileged
> >>>> +    private <F extends MetaBeanFactory> F createMetaBeanFactory(final
> >>>> Class<F> cls) {
> >>>> +        try {
> >>>> +            Constructor<F> c =
> >>>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
> >>>> ApacheValidatorFactory.this.getClass());
> >>>> +            if (c != null) {
> >>>> +                return c.newInstance(this);
> >>>> +            }
> >>>> +            c =
> ConstructorUtils.getMatchingAccessibleConstructor(cls,
> >>>> getClass());
> >>>> +            if (c != null) {
> >>>> +                return c.newInstance(this);
> >>>> +            }
> >>>> +            return cls.newInstance();
> >>>> +        } catch (Exception e) {
> >>>> +            throw new ValidationException(e);
> >>>> +        }
> >>>> +    }
> >>>> +
> >>>> +    /**
> >>>> +     * separate class to prevent the classloader to immediately load
> >>>> optional
> >>>> +     * classes: XMLMetaBeanManager, XMLMetaBeanFactory,
> >>>> XMLMetaBeanBuilder that
> >>>> +     * might not be available in the classpath
> >>>> +     */
> >>>> +    private static class XMLMetaBeanManagerCreator {
> >>>> +
> >>>> +        static void addFactory(List<MetaBeanFactory> builders) {
> >>>> +            builders.add(new XMLMetaBeanFactory());
> >>>> +        }
> >>>> +
> >>>> +        /**
> >>>> +         * Create the {@link MetaBeanManager} to process JSR303 XML.
> >>>> Requires
> >>>> +         * bval-xstream at RT.
> >>>> +         *
> >>>> +         * @param builders meta bean builders
> >>>> +         * @return {@link MetaBeanManager}
> >>>> +         */
> >>>> +        // NOTE - We return MetaBeanManager instead of
> >>> XMLMetaBeanManager
> >>>> to
> >>>> +        // keep
> >>>> +        // bval-xstream an optional module.
> >>>> +        protected static MetaBeanManager
> >>>> createXMLMetaBeanManager(List<MetaBeanFactory> builders) {
> >>>> +            return new XMLMetaBeanManager(
> >>>> +                    new XMLMetaBeanBuilder(builders.toArray(new
> >>>> MetaBeanFactory[builders.size()])));
> >>>> +        }
> >>>> +    }
> >>>> +
> >>>> +    private Class<?> loadClass(final String className) {
> >>>> +        try {
> >>>> +            return Class.forName(className, true,
> >>>> Reflection.getClassLoader(ApacheValidatorFactory.class));
> >>>> +        } catch (ClassNotFoundException ex) {
> >>>> +            throw new ValidationException("Unable to load class: " +
> >>>> className, ex);
> >>>> +        }
> >>>> +    }
> >>>> }
> >>>>
> >>>> Modified:
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
> >>>> (original)
> >>>> +++
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -51,7 +51,6 @@ import javax.validation.metadata.MethodT
> >>>> import javax.validation.metadata.ParameterDescriptor;
> >>>> import javax.validation.metadata.PropertyDescriptor;
> >>>> import javax.validation.metadata.ReturnValueDescriptor;
> >>>> -
> >>>> import java.beans.Introspector;
> >>>> import java.lang.annotation.Annotation;
> >>>> import java.lang.reflect.AccessibleObject;
> >>>> @@ -329,7 +328,7 @@ public class BeanDescriptorImpl extends
> >>>>         private ExecutableMeta(final ApacheFactoryContext
> >>> factoryContext,
> >>>> final MetaBean metaBean1, final Collection<ConstraintDescriptor<?>>
> >>>> constraintDescriptors) {
> >>>>             this.metaBean = metaBean1;
> >>>>             this.factoryContext = factoryContext;
> >>>> -            this.annotationProcessor = new
> >>>> AnnotationProcessor(factoryContext);
> >>>> +            this.annotationProcessor = new
> >>>> AnnotationProcessor(factoryContext.getFactory());
> >>>>
> >>>>             buildExecutableDescriptors();
> >>>>
> >>>> @@ -840,7 +839,9 @@ public class BeanDescriptorImpl extends
> >>>>                     }
> >>>>                 }
> >>>>             } else {
> >>>> -                annotationProcessor.processAnnotation(annotation,
> >> null,
> >>>> ClassUtils.primitiveToWrapper((Class<?>) access.getJavaType()),
> access,
> >>>> validations, true);
> >>>> +                annotationProcessor.processAnnotation(
> >>>> +                        annotation, null,
> >>>> ClassUtils.primitiveToWrapper((Class<?>) access.getJavaType()),
> >>>> +                        access, validations, true);
> >>>>             }
> >>>>         }
> >>>>
> >>>>
> >>>> Modified:
> >>>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
> >>>> (original)
> >>>> +++
> >>>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -638,8 +638,9 @@ public class ClassValidator implements C
> >>>>     protected <T> GroupValidationContext<T> createContext(MetaBean
> >>>> metaBean, T object, Class<T> objectClass, Class<?>... groups) {
> >>>>         final ConstraintValidationListener<T> listener = new
> >>>> ConstraintValidationListener<T>(object, objectClass);
> >>>>         final GroupValidationContextImpl<T> context =
> >>>> -            new GroupValidationContextImpl<T>(listener,
> >>>> this.factoryContext.getMessageInterpolator(),
> >>>> -                this.factoryContext.getTraversableResolver(),
> >>>> factoryContext.getParameterNameProvider(), metaBean);
> >>>> +            new GroupValidationContextImpl<T>(listener,
> >>>> factoryContext.getMessageInterpolator(),
> >>>> +                factoryContext.getTraversableResolver(),
> >>>> factoryContext.getParameterNameProvider(),
> >>>> +                factoryContext.getConstraintValidatorFactory(),
> >>> metaBean);
> >>>>         context.setBean(object, metaBean);
> >>>>         context.setGroups(groupsComputer.computeGroups(groups));
> >>>>         return context;
> >>>> @@ -648,8 +649,9 @@ public class ClassValidator implements C
> >>>>     protected <T> GroupValidationContext<T>
> >>>> createInvocableContext(MetaBean metaBean, T object, Class<T>
> >> objectClass,
> >>>> Class<?>... groups) {
> >>>>         final ConstraintValidationListener<T> listener = new
> >>>> ConstraintValidationListener<T>(object, objectClass);
> >>>>         final GroupValidationContextImpl<T> context =
> >>>> -                new GroupValidationContextImpl<T>(listener,
> >>>> this.factoryContext.getMessageInterpolator(),
> >>>> -                        this.factoryContext.getTraversableResolver(),
> >>>> factoryContext.getParameterNameProvider(), metaBean);
> >>>> +                new GroupValidationContextImpl<T>(listener,
> >>>> factoryContext.getMessageInterpolator(),
> >>>> +                        factoryContext.getTraversableResolver(),
> >>>> factoryContext.getParameterNameProvider(),
> >>>> +
> >> factoryContext.getConstraintValidatorFactory(),
> >>>> metaBean);
> >>>>         context.setBean(object, metaBean);
> >>>>         final Groups computedGroup =
> >>> groupsComputer.computeGroups(groups);
> >>>>         if
> >>>>
> >>>
> >>
> (Collections.singletonList(Group.DEFAULT).equals(computedGroup.getGroups())
> >>>> && metaBean.getFeature(JsrFeatures.Bean.GROUP_SEQUENCE) != null) {
> >>>>
> >>>> Modified:
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
> >>>> (original)
> >>>> +++
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -39,7 +39,6 @@ import javax.validation.ValidationExcept
> >>>> import
> >> javax.validation.constraintvalidation.SupportedValidationTarget;
> >>>> import javax.validation.constraintvalidation.ValidationTarget;
> >>>> import javax.validation.metadata.ConstraintDescriptor;
> >>>> -
> >>>> import java.io.Serializable;
> >>>> import java.lang.annotation.Annotation;
> >>>> import java.lang.reflect.Array;
> >>>> @@ -61,7 +60,6 @@ import java.util.Set;
> >>>>  * this instance is immutable!<br/>
> >>>>  */
> >>>> public class ConstraintValidation<T extends Annotation> implements
> >>>> Validation, ConstraintDescriptor<T> {
> >>>> -    private final ConstraintValidatorFactory factory;
> >>>>     private final AccessStrategy access;
> >>>>     private final boolean reportFromComposite;
> >>>>     private final Map<String, Object> attributes;
> >>>> @@ -82,11 +80,9 @@ public class ConstraintValidation<T exte
> >>>>     private Class<? extends ConstraintValidator<T, ?>>[]
> >>> validatorClasses;
> >>>>     private ConstraintTarget validationAppliesTo = null;
> >>>>
> >>>> -    public ConstraintValidation(ConstraintValidatorFactory factory,
> >>>> -                                Class<? extends
> ConstraintValidator<T,
> >>>> ?>>[] validatorClasses,
> >>>> +    public ConstraintValidation(Class<? extends
> ConstraintValidator<T,
> >>>> ?>>[] validatorClasses,
> >>>>                                 T annotation, Class<?> owner,
> >>>> AccessStrategy access,
> >>>>                                 boolean reportFromComposite,
> >>>> ConstraintTarget target) {
> >>>> -        this.factory = factory;
> >>>>         this.attributes = new HashMap<String, Object>();
> >>>>         this.validatorClasses = ArrayUtils.clone(validatorClasses);
> >>>>         this.annotation = annotation;
> >>>> @@ -158,7 +154,8 @@ public class ConstraintValidation<T exte
> >>>>             synchronized (this) {
> >>>>                 if (validator == null) {
> >>>>                     try {
> >>>> -                        validator =
> getConstraintValidator(annotation,
> >>>> validatorClasses, owner, access);
> >>>> +                        validator = getConstraintValidator(
> >>>> +
> >> context.getConstraintValidatorFactory(),
> >>>> annotation, validatorClasses, owner, access);
> >>>>                         if (validator != null) {
> >>>>                             validator.initialize(annotation);
> >>>>                         }
> >>>> @@ -235,7 +232,8 @@ public class ConstraintValidation<T exte
> >>>>         }
> >>>>     }
> >>>>
> >>>> -    private <A extends Annotation> ConstraintValidator<A, ? super T>
> >>>> getConstraintValidator(A annotation,
> >>>> +    private <A extends Annotation> ConstraintValidator<A, ? super T>
> >>>> getConstraintValidator(
> >>>> +            ConstraintValidatorFactory factory, A annotation,
> >>>>         Class<? extends ConstraintValidator<A, ?>>[]
> >> constraintClasses,
> >>>> Class<?> owner, AccessStrategy access) {
> >>>>         if (ArrayUtils.isNotEmpty(constraintClasses)) {
> >>>>             final Type type = determineTargetedType(owner, access);
> >>>>
> >>>> Modified:
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
> >>>> (original)
> >>>> +++
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContext.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -24,6 +24,7 @@ import org.apache.bval.model.MetaBean;
> >>>> import org.apache.bval.model.ValidationContext;
> >>>>
> >>>> import javax.validation.ConstraintValidator;
> >>>> +import javax.validation.ConstraintValidatorFactory;
> >>>> import javax.validation.ElementKind;
> >>>> import javax.validation.MessageInterpolator;
> >>>> import javax.validation.ParameterNameProvider;
> >>>> @@ -107,6 +108,12 @@ public interface GroupValidationContext<
> >>>>     TraversableResolver getTraversableResolver();
> >>>>
> >>>>     /**
> >>>> +     * Get the {@link ConstraintValidatorFactory}.
> >>>> +     * @return {@link ConstraintValidatorFactory}
> >>>> +     */
> >>>> +    ConstraintValidatorFactory getConstraintValidatorFactory();
> >>>> +
> >>>> +    /**
> >>>>      * Accumulate a validated constraint.
> >>>>      * @param constraint
> >>>>      * @return true when the constraint for the object in this path
> >> was
> >>>> not
> >>>>
> >>>> Modified:
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
> >>>> (original)
> >>>> +++
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/GroupValidationContextImpl.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -27,6 +27,7 @@ import org.apache.bval.model.MetaPropert
> >>>> import org.apache.bval.util.AccessStrategy;
> >>>>
> >>>> import javax.validation.ConstraintValidator;
> >>>> +import javax.validation.ConstraintValidatorFactory;
> >>>> import javax.validation.ElementKind;
> >>>> import javax.validation.MessageInterpolator;
> >>>> import javax.validation.ParameterNameProvider;
> >>>> @@ -70,6 +71,7 @@ final class GroupValidationContextImpl<T
> >>>>
> >>>>     private ConstraintValidation<?> constraintValidation;
> >>>>     private final TraversableResolver traversableResolver;
> >>>> +    private final ConstraintValidatorFactory
> >> constraintValidatorFactory;
> >>>>
> >>>>     private Object[] parameters;
> >>>>     private Object returnValue;
> >>>> @@ -86,11 +88,14 @@ final class GroupValidationContextImpl<T
> >>>>      * @param rootMetaBean
> >>>>      */
> >>>>     public GroupValidationContextImpl(ConstraintValidationListener<T>
> >>>> listener, MessageInterpolator aMessageResolver,
> >>>> -                                      TraversableResolver
> >>>> traversableResolver, ParameterNameProvider parameterNameProvider,
> >>> MetaBean
> >>>> rootMetaBean) {
> >>>> +                                      TraversableResolver
> >>>> traversableResolver, ParameterNameProvider parameterNameProvider,
> >>>> +                                      ConstraintValidatorFactory
> >>>> constraintValidatorFactory,
> >>>> +                                      MetaBean rootMetaBean) {
> >>>>         // inherited variable 'validatedObjects' is of type:
> >>>>         // HashMap<GraphBeanIdentity, Set<PathImpl>> in this class
> >>>>         super(listener, new HashMap<GraphBeanIdentity,
> >>> Set<PathImpl>>());
> >>>>         this.messageResolver = aMessageResolver;
> >>>> +        this.constraintValidatorFactory = constraintValidatorFactory;
> >>>>         this.traversableResolver =
> >>>> CachingTraversableResolver.cacheFor(traversableResolver);
> >>>>         this.parameterNameProvider = parameterNameProvider;
> >>>>         this.rootMetaBean = rootMetaBean;
> >>>> @@ -313,6 +318,11 @@ final class GroupValidationContextImpl<T
> >>>>         return traversableResolver;
> >>>>     }
> >>>>
> >>>> +    @Override
> >>>> +    public ConstraintValidatorFactory getConstraintValidatorFactory()
> >> {
> >>>> +        return constraintValidatorFactory;
> >>>> +    }
> >>>> +
> >>>>     /**
> >>>>      * {@inheritDoc}
> >>>>      */
> >>>>
> >>>> Modified:
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
> >>>> (original)
> >>>> +++
> >>>>
> >>>
> >>
> bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -63,8 +63,8 @@ public class JsrMetaBeanFactory implemen
> >>>>     // of dubious utility as it's static :/
> >>>>     protected static final Logger log =
> >>>> Logger.getLogger(JsrMetaBeanFactory.class.getName());
> >>>>
> >>>> -    /** {@link ApacheFactoryContext} used */
> >>>> -    protected final ApacheFactoryContext factoryContext;
> >>>> +    /** {@link javax.validation.ValidatorFactory} used */
> >>>> +    protected final ApacheValidatorFactory factory;
> >>>>
> >>>>     /**
> >>>>      * {@link AnnotationProcessor} used.
> >>>> @@ -74,11 +74,11 @@ public class JsrMetaBeanFactory implemen
> >>>>     /**
> >>>>      * Create a new Jsr303MetaBeanFactory instance.
> >>>>      *
> >>>> -     * @param factoryContext
> >>>> +     * @param factory the validator factory.
> >>>>      */
> >>>> -    public JsrMetaBeanFactory(ApacheFactoryContext factoryContext) {
> >>>> -        this.factoryContext = factoryContext;
> >>>> -        this.annotationProcessor = new
> >>>> AnnotationProcessor(factoryContext);
> >>>> +    public JsrMetaBeanFactory(ApacheValidatorFactory factory) {
> >>>> +        this.factory = factory;
> >>>> +        this.annotationProcessor = new AnnotationProcessor(factory);
> >>>>     }
> >>>>
> >>>>     /**
> >>>> @@ -123,7 +123,7 @@ public class JsrMetaBeanFactory implemen
> >>>>         InvocationTargetException {
> >>>>
> >>>>         // if NOT ignore class level annotations
> >>>> -        if
> >>>>
> >>>
> >>
> (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(beanClass))
> >>>> {
> >>>> +        if
> >>>> (!factory.getAnnotationIgnores().isIgnoreAnnotations(beanClass)) {
> >>>>             annotationProcessor.processAnnotations(null, beanClass,
> >>>> beanClass, null, new AppendValidationToMeta(metabean));
> >>>>         }
> >>>>
> >>>> @@ -134,7 +134,7 @@ public class JsrMetaBeanFactory implemen
> >>>>             MetaProperty metaProperty =
> >>>> metabean.getProperty(field.getName());
> >>>>             // create a property for those fields for which there is
> >> not
> >>>> yet a
> >>>>             // MetaProperty
> >>>> -            if
> >>>>
> >>>
> >>
> (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(field))
> >>>> {
> >>>> +            if
> >>>> (!factory.getAnnotationIgnores().isIgnoreAnnotations(field)) {
> >>>>                 AccessStrategy access = new FieldAccess(field);
> >>>>                 boolean create = metaProperty == null;
> >>>>                 if (create) {
> >>>> @@ -160,7 +160,7 @@ public class JsrMetaBeanFactory implemen
> >>>>                 propName = MethodAccess.getPropertyName(method);
> >>>>             }
> >>>>             if (propName != null) {
> >>>> -                if
> >>>>
> >>>
> >>
> (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(method))
> >>>> {
> >>>> +                if
> >>>> (!factory.getAnnotationIgnores().isIgnoreAnnotations(method)) {
> >>>>                     AccessStrategy access = new MethodAccess(propName,
> >>>> method);
> >>>>                     MetaProperty metaProperty =
> >>>> metabean.getProperty(propName);
> >>>>                     boolean create = metaProperty == null;
> >>>> @@ -198,7 +198,7 @@ public class JsrMetaBeanFactory implemen
> >>>>      */
> >>>>     private void addXmlConstraints(Class<?> beanClass, MetaBean
> >>> metabean)
> >>>> throws IllegalAccessException,
> >>>>         InvocationTargetException {
> >>>> -        for (final MetaConstraint<?, ? extends Annotation>
> >>> metaConstraint
> >>>> : factoryContext.getFactory().getMetaConstraints(beanClass)) {
> >>>> +        for (final MetaConstraint<?, ? extends Annotation>
> >>> metaConstraint
> >>>> : factory.getMetaConstraints(beanClass)) {
> >>>>             Meta meta;
> >>>>             AccessStrategy access =
> >> metaConstraint.getAccessStrategy();
> >>>>             boolean create = false;
> >>>> @@ -263,7 +263,7 @@ public class JsrMetaBeanFactory implemen
> >>>>                 metabean.putProperty(access.getPropertyName(), null);
> >>>>             }
> >>>>         }
> >>>> -        for (final AccessStrategy access :
> >>>> factoryContext.getFactory().getValidAccesses(beanClass)) {
> >>>> +        for (final AccessStrategy access :
> >>>> factory.getValidAccesses(beanClass)) {
> >>>>             if (access.getElementType() == ElementType.PARAMETER) {
> >>>>                 continue;
> >>>>             }
> >>>> @@ -289,7 +289,7 @@ public class JsrMetaBeanFactory implemen
> >>>>         if (groupSeq == null) {
> >>>>             groupSeq = metabean.initFeature(key, new
> >>>> ArrayList<Group>(annotation == null ? 1 : annotation.value().length));
> >>>>         }
> >>>> -        Class<?>[] groupClasses =
> >>>> factoryContext.getFactory().getDefaultSequence(beanClass);
> >>>> +        Class<?>[] groupClasses =
> >> factory.getDefaultSequence(beanClass);
> >>>>         if (groupClasses == null || groupClasses.length == 0) {
> >>>>             if (annotation == null) {
> >>>>                 groupSeq.add(Group.DEFAULT);
> >>>>
> >>>> Modified:
> >>>>
> >>
> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> ---
> >>>>
> >>
> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
> >>>> (original)
> >>>> +++
> >>>>
> >>
> bval/trunk/bval-jsr/src/test/java/org/apache/bval/jsr/ValidationTest.java
> >>>> Wed Dec 23 12:45:01 2015
> >>>> @@ -89,6 +89,10 @@ public class ValidationTest extends Test
> >>>>         return factory.getValidator();
> >>>>     }
> >>>>
> >>>> +    public void testCache() {
> >>>> +
> >>>>
> >>>
> >>
> factory.getValidator().getConstraintsForClass(AccessTestBusinessObject.class);
> >>>> +
> >>>>
> >>>
> >>
> factory.getValidator().getConstraintsForClass(AccessTestBusinessObject.class);
> >>>> +    }
> >>>>     public void testAccessStrategies_field_method() {
> >>>>         AccessTestBusinessObject o1 = new
> >> AccessTestBusinessObject("1");
> >>>>         AccessTestBusinessObjectSub o2 = new
> >>>> AccessTestBusinessObjectSub("3");
> >>>>
> >>>> Modified: bval/trunk/bval-tck/pom.xml
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/bval-tck/pom.xml?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> --- bval/trunk/bval-tck/pom.xml (original)
> >>>> +++ bval/trunk/bval-tck/pom.xml Wed Dec 23 12:45:01 2015
> >>>> @@ -169,6 +169,55 @@
> >>>>                     <version>1.0.0</version>
> >>>>                 </dependency>
> >>>>             </dependencies>
> >>>> +            <repositories>
> >>>> +                <repository>
> >>>> +                    <!-- override outdated URLs for jboss repo ids
> -->
> >>>> +                    <id>repository.jboss.org</id>
> >>>> +                    <name>JBoss Public Maven Repository Group</name>
> >>>> +                    <url>
> >>>> https://repository.jboss.org/nexus/content/groups/public/</url>
> >>>> +                    <layout>default</layout>
> >>>> +                    <releases>
> >>>> +                        <enabled>true</enabled>
> >>>> +                        <updatePolicy>never</updatePolicy>
> >>>> +                        <checksumPolicy>fail</checksumPolicy>
> >>>> +                    </releases>
> >>>> +                    <snapshots>
> >>>> +                        <enabled>false</enabled>
> >>>> +                        <updatePolicy>never</updatePolicy>
> >>>> +                        <checksumPolicy>warn</checksumPolicy>
> >>>> +                    </snapshots>
> >>>> +                </repository>
> >>>> +                <repository>
> >>>> +                    <id>jboss</id>
> >>>> +                    <name>JBoss Public Maven Repository Group
> >>>> (again)</name>
> >>>> +                    <url>
> >>>> https://repository.jboss.org/nexus/content/groups/public/</url>
> >>>> +                    <layout>default</layout>
> >>>> +                    <releases>
> >>>> +                        <enabled>true</enabled>
> >>>> +                        <updatePolicy>never</updatePolicy>
> >>>> +                        <checksumPolicy>fail</checksumPolicy>
> >>>> +                    </releases>
> >>>> +                    <snapshots>
> >>>> +                        <enabled>false</enabled>
> >>>> +                        <updatePolicy>never</updatePolicy>
> >>>> +                        <checksumPolicy>warn</checksumPolicy>
> >>>> +                    </snapshots>
> >>>> +                </repository>
> >>>> +                <repository>
> >>>> +                    <id>snapshots.jboss.org</id>
> >>>> +                    <url>
> >>>> https://repository.jboss.org/nexus/content/repositories/snapshots/
> >> </url>
> >>>> +                    <snapshots>
> >>>> +                        <enabled>true</enabled>
> >>>> +                    </snapshots>
> >>>> +                </repository>
> >>>> +                <repository>
> >>>> +                    <id>jboss-snapshots</id>
> >>>> +                    <url>
> >>>> https://repository.jboss.org/nexus/content/repositories/snapshots/
> >> </url>
> >>>> +                    <snapshots>
> >>>> +                        <enabled>true</enabled>
> >>>> +                    </snapshots>
> >>>> +                </repository>
> >>>> +            </repositories>
> >>>>             <build>
> >>>>                 <plugins>
> >>>>                     <plugin>
> >>>>
> >>>> Modified: bval/trunk/pom.xml
> >>>> URL:
> >>>>
> >>>
> >>
> http://svn.apache.org/viewvc/bval/trunk/pom.xml?rev=1721536&r1=1721535&r2=1721536&view=diff
> >>>>
> >>>>
> >>>
> >>
> ==============================================================================
> >>>> --- bval/trunk/pom.xml (original)
> >>>> +++ bval/trunk/pom.xml Wed Dec 23 12:45:01 2015
> >>>> @@ -571,6 +571,7 @@
> >>>>
> >> <artifactId>commons-weaver-maven-plugin</artifactId>
> >>>>                     <version>${commons.weaver.version}</version>
> >>>>                     <configuration>
> >>>> +                        <verbose>true</verbose>
> >>>>                         <weaverConfig>
> >>>>
> >>> <privilizer.policy>DYNAMIC</privilizer.policy>
> >>>>                         </weaverConfig>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>
>
>