Repository: bval
Updated Branches:
  refs/heads/bv2 51b9ab27b -> b7b7a1032


TCK: DefaultGroupRedefinitionTest


Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/dda3f942
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/dda3f942
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/dda3f942

Branch: refs/heads/bv2
Commit: dda3f942bcc95ca2e4def054c6580255039e4f4d
Parents: 51b9ab2
Author: Matt Benson <mben...@apache.org>
Authored: Mon Mar 12 17:19:18 2018 -0500
Committer: Matt Benson <mben...@apache.org>
Committed: Mon Mar 12 17:19:18 2018 -0500

----------------------------------------------------------------------
 .../apache/bval/jsr/descriptor/ElementD.java    | 21 +++++++-----
 .../org/apache/bval/jsr/job/ValidationJob.java  | 35 +++++++++-----------
 2 files changed, 27 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bval/blob/dda3f942/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ElementD.java
----------------------------------------------------------------------
diff --git 
a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ElementD.java 
b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ElementD.java
index 249b555..a788c14 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ElementD.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ElementD.java
@@ -29,6 +29,7 @@ import java.util.Set;
 import javax.validation.metadata.ConstraintDescriptor;
 import javax.validation.metadata.ElementDescriptor;
 
+import org.apache.bval.jsr.metadata.Meta;
 import org.apache.bval.util.Validate;
 import org.apache.bval.util.reflection.TypeUtils;
 
@@ -72,16 +73,14 @@ public abstract class ElementD<E extends AnnotatedElement, 
R extends MetadataRea
 
     protected final Type genericType;
 
-    private final E target;
-    private final ElementType elementType;
+    private final Meta<E> meta;
     private final Set<ConstraintD<?>> constraints;
 
     protected ElementD(R reader) {
         super();
         Validate.notNull(reader, "reader");
+        this.meta = reader.meta;
         this.genericType = reader.meta.getType();
-        this.target = reader.meta.getHost();
-        this.elementType = reader.meta.getElementType();
         this.constraints = reader.getConstraints();
     }
 
@@ -102,21 +101,25 @@ public abstract class ElementD<E extends 
AnnotatedElement, R extends MetadataRea
     }
 
     public final ElementType getElementType() {
-        return elementType;
+        return meta.getElementType();
     }
 
     public final E getTarget() {
-        return target;
+        return meta.getHost();
+    }
+
+    public final Class<?> getDeclaringClass() {
+        return meta.getDeclaringClass();
     }
 
     public abstract Type getGenericType();
 
     public abstract List<Class<?>> getGroupSequence();
 
-    protected abstract BeanD<?> getBean();
-
     @Override
     public String toString() {
-        return String.format("%s: %s", getClass().getSimpleName(), target);
+        return String.format("%s: %s", getClass().getSimpleName(), 
getTarget());
     }
+
+    protected abstract BeanD<?> getBean();
 }

http://git-wip-us.apache.org/repos/asf/bval/blob/dda3f942/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java 
b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
index f2eaa26..2d4237c 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
@@ -93,8 +93,10 @@ public abstract class ValidationJob<T> {
         final void process(Class<?> group, Consumer<ConstraintViolation<T>> 
sink) {
             Validate.notNull(sink, "sink");
 
-            each(expand(group), this::validateDescriptorConstraints, sink);
-            recurse(group, sink);
+            each(expand(group), (g, s) -> {
+                validateDescriptorConstraints(g, s);
+                recurse(g, s);
+            }, sink);
         }
 
         abstract void recurse(Class<?> group, Consumer<ConstraintViolation<T>> 
sink);
@@ -222,12 +224,7 @@ public abstract class ValidationJob<T> {
 
         @Override
         void recurse(Class<?> group, Consumer<ConstraintViolation<T>> sink) {
-            // bean frame has to do some convoluted things to properly handle 
groups and recursion; skipping
-            // frame#process() on properties:
-            final List<Frame<?>> propertyFrames = propertyFrames();
-
-            each(expand(group), (g, s) -> propertyFrames.forEach(f -> 
f.validateDescriptorConstraints(g, s)), sink);
-            propertyFrames.forEach(f -> f.recurse(group, sink));
+            propertyFrames().forEach(f -> f.process(group, sink));
         }
 
         protected Frame<?> propertyFrame(PropertyD<?> d, GraphContext context) 
{
@@ -239,23 +236,20 @@ public abstract class ValidationJob<T> {
             return context.getValue();
         }
 
-        private List<Frame<?>> propertyFrames() {
+        private Stream<Frame<?>> propertyFrames() {
             final Stream<PropertyD<?>> properties = 
descriptor.getConstrainedProperties().stream()
                 .flatMap(d -> ComposedD.unwrap(d, PropertyD.class)).map(d -> 
(PropertyD<?>) d);
 
             final TraversableResolver traversableResolver = 
validatorContext.getTraversableResolver();
 
-            final Stream<PropertyD<?>> reachableProperties =
-                    properties.filter(d -> {
-                        final PathImpl p = PathImpl.copy(context.getPath());
-                        p.addProperty(d.getPropertyName());
-                        return 
traversableResolver.isReachable(context.getValue(), p.removeLeafNode(), 
getRootBeanClass(),
-                            p, d.getElementType());
-                    });
-
+            final Stream<PropertyD<?>> reachableProperties = 
properties.filter(d -> {
+                final PathImpl p = PathImpl.copy(context.getPath());
+                p.addProperty(d.getPropertyName());
+                return traversableResolver.isReachable(context.getValue(), 
p.removeLeafNode(), getRootBeanClass(), p,
+                    d.getElementType());
+            });
             return reachableProperties.flatMap(
-                d -> d.read(context).filter(context -> 
!context.isRecursive()).map(child -> propertyFrame(d, child)))
-                .collect(Collectors.toList());
+                d -> d.read(context).filter(context -> 
!context.isRecursive()).map(child -> propertyFrame(d, child)));
         }
     }
 
@@ -272,7 +266,8 @@ public abstract class ValidationJob<T> {
         @Override
         void recurse(Class<?> group, Consumer<ConstraintViolation<T>> sink) {
             final Groups convertedGroups =
-                
validatorContext.getGroupsComputer().computeCascadingGroups(descriptor.getGroupConversions(),
 group);
+                
validatorContext.getGroupsComputer().computeCascadingGroups(descriptor.getGroupConversions(),
+                    descriptor.getDeclaringClass().isAssignableFrom(group) ? 
Default.class : group);
 
             
convertedGroups.getGroups().stream().map(Group::getGroup).forEach(g -> 
recurseSingleExpandedGroup(g, sink));
 

Reply via email to