You got it. :-) Matt On Dec 23, 2015 9:48 AM, "Romain Manni-Bucau" <[email protected]> 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 <[email protected]>: > > > 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: <[email protected]> > > 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: [email protected] > > > > > > 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> > > > > > > > > >
