Repository: bval Updated Branches: refs/heads/bv2 d28ee4d5d -> 861d64d4f
fixing ValidationInterceptorPriorityTest Project: http://git-wip-us.apache.org/repos/asf/bval/repo Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/861d64d4 Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/861d64d4 Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/861d64d4 Branch: refs/heads/bv2 Commit: 861d64d4fca5f789690b9eba40966479cdc6d8e6 Parents: d28ee4d Author: Romain Manni-Bucau <rmannibu...@gmail.com> Authored: Thu Feb 22 19:07:42 2018 +0100 Committer: Romain Manni-Bucau <rmannibu...@gmail.com> Committed: Thu Feb 22 19:07:42 2018 +0100 ---------------------------------------------------------------------- .../org/apache/bval/jsr/BeanDescriptorImpl.java | 6 ++-- .../org/apache/bval/jsr/ConstraintCached.java | 2 +- .../ComputeConstraintValidatorClass.java | 32 ++++++++++++++------ .../apache/bval/jsr/descriptor/ConstraintD.java | 2 +- .../org/apache/bval/jsr/metadata/Metas.java | 15 +++++++++ bval-tck11/work-tests-suite.xml | 2 +- 6 files changed, 42 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/bval/blob/861d64d4/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java index 2700674..9d0c32a 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java @@ -890,10 +890,8 @@ public class BeanDescriptorImpl extends ElementDescriptorImpl implements BeanDes final Object value = worker.read(annotation); if (Annotation[].class.isInstance(value)) { final Annotation[] children = Annotation[].class.cast(value); - if (children != null) { - for (Annotation child : children) { - processAnnotation(child, desc, access, validations); // recursion - } + for (Annotation child : children) { + processAnnotation(child, desc, access, validations); // recursion } } } http://git-wip-us.apache.org/repos/asf/bval/blob/861d64d4/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintCached.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintCached.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintCached.java index 3a89560..28379b7 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintCached.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintCached.java @@ -124,7 +124,7 @@ public class ConstraintCached { return; } Validate.notNull(annotationClass, "annotationClass"); - Stream.of(definitionClasses).map(t -> new ConstraintValidatorInfo<>(t)) + Stream.of(definitionClasses).map(ConstraintValidatorInfo::new) .forEach(constraintValidatorInfo.computeIfAbsent(annotationClass, k -> new HashSet<>())::add); } http://git-wip-us.apache.org/repos/asf/bval/blob/861d64d4/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ComputeConstraintValidatorClass.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ComputeConstraintValidatorClass.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ComputeConstraintValidatorClass.java index d2595ea..a6493c5 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ComputeConstraintValidatorClass.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ComputeConstraintValidatorClass.java @@ -21,6 +21,7 @@ import java.lang.reflect.Array; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.lang.reflect.WildcardType; +import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -98,15 +99,16 @@ class ComputeConstraintValidatorClass<A extends Annotation> private final ApacheValidatorFactory validatorFactory; private final Class<?> validatedType; - private final ValidationTarget validationTarget; + private final Collection<ValidationTarget> validationTargets; private final A constraint; private final boolean composed; - ComputeConstraintValidatorClass(ApacheValidatorFactory validatorFactory, ValidationTarget validationTarget, + ComputeConstraintValidatorClass(ApacheValidatorFactory validatorFactory, + Collection<ValidationTarget> validationTargets, A constraint, Class<?> validatedType) { super(); this.validatorFactory = Validate.notNull(validatorFactory, "validatorFactory"); - this.validationTarget = Validate.notNull(validationTarget, "validationTarget"); + this.validationTargets = Validate.notNull(validationTargets, "validationTargets"); this.constraint = Validate.notNull(constraint, "constraint"); this.validatedType = Validate.notNull(validatedType, "validatedType"); this.composed = validatorFactory.getAnnotationsManager().isComposed(constraint); @@ -120,14 +122,24 @@ class ComputeConstraintValidatorClass<A extends Annotation> } private Class<? extends ConstraintValidator<A, ?>> findValidator(Set<ConstraintValidatorInfo<A>> infos) { - switch (validationTarget) { - case PARAMETERS: - return findCrossParameterValidator(infos); - case ANNOTATED_ELEMENT: - return findAnnotatedElementValidator(infos); - default: - return null; + RuntimeException error = null; + for (ValidationTarget vt : validationTargets) { // TODO: to rework, perf are not correct + try { + switch (vt) { + case PARAMETERS: + return findCrossParameterValidator(infos); + case ANNOTATED_ELEMENT: + return findAnnotatedElementValidator(infos); + default: + } + } catch (final RuntimeException re) { + error = re; + } + } + if (error != null) { + throw error; } + return null; } private Class<? extends ConstraintValidator<A, ?>> findCrossParameterValidator( http://git-wip-us.apache.org/repos/asf/bval/blob/861d64d4/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ConstraintD.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ConstraintD.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ConstraintD.java index 0c1be1b..c812cf5 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ConstraintD.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ConstraintD.java @@ -101,7 +101,7 @@ public class ConstraintD<A extends Annotation> implements ConstraintDescriptor<A constraintValidatorClasses = new Lazy<>(computeConstraintValidatorClasses(validatorFactory)); final Supplier<Class<? extends ConstraintValidator<A, ?>>> computeConstraintValidatorClass = - new ComputeConstraintValidatorClass<>(validatorFactory, meta.getValidationTarget(), annotation, + new ComputeConstraintValidatorClass<>(validatorFactory, meta.getValidationTargets(), annotation, validatedType); constraintValidatorClass = new Lazy<>(computeConstraintValidatorClass); http://git-wip-us.apache.org/repos/asf/bval/blob/861d64d4/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/Metas.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/Metas.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/Metas.java index 667c404..bd04439 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/Metas.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/Metas.java @@ -18,6 +18,9 @@ */ package org.apache.bval.jsr.metadata; +import static java.util.Arrays.asList; +import static java.util.Collections.singleton; + import java.lang.annotation.Annotation; import java.lang.annotation.ElementType; import java.lang.reflect.AnnotatedElement; @@ -29,6 +32,8 @@ import java.lang.reflect.Member; import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.lang.reflect.Type; +import java.util.Arrays; +import java.util.Collection; import java.util.Objects; import javax.validation.constraintvalidation.ValidationTarget; @@ -208,6 +213,11 @@ public abstract class Metas<E extends AnnotatedElement> { } @Override + public Collection<ValidationTarget> getValidationTargets() { + return asList(ValidationTarget.values()); + } + + @Override public Type getType() { return getHost().getType(); } @@ -293,6 +303,11 @@ public abstract class Metas<E extends AnnotatedElement> { public abstract String getName(); + public Collection<ValidationTarget> getValidationTargets() { + // todo: cache for perf? + return singleton(getValidationTarget()); + } + public ValidationTarget getValidationTarget() { return ValidationTarget.ANNOTATED_ELEMENT; } http://git-wip-us.apache.org/repos/asf/bval/blob/861d64d4/bval-tck11/work-tests-suite.xml ---------------------------------------------------------------------- diff --git a/bval-tck11/work-tests-suite.xml b/bval-tck11/work-tests-suite.xml index 950fa8f..a5f8c39 100644 --- a/bval-tck11/work-tests-suite.xml +++ b/bval-tck11/work-tests-suite.xml @@ -21,7 +21,7 @@ think to add -Dvalidation.provider=org.apache.bval.jsr303.ApacheValidationProvid <suite name="tmp" verbose="1"> <test name="tmp"> <classes> - <class name="org.hibernate.beanvalidation.tck.tests.integration.cdi.executable.global.ExecutableValidationBasedOnGlobalConfigurationTest"> + <class name="org.hibernate.beanvalidation.tck.tests.integration.cdi.executable.priority.ValidationInterceptorPriorityTest"> </class> </classes> </test>