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> > > > >
