You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by rm...@apache.org on 2018/02/22 18:07:48 UTC

bval git commit: fixing ValidationInterceptorPriorityTest

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 <rm...@gmail.com>
Authored: Thu Feb 22 19:07:42 2018 +0100
Committer: Romain Manni-Bucau <rm...@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>