Repository: bval
Updated Branches:
  refs/heads/bv2 339ada646 -> 513606da5


improve handling of non-constrained executables


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

Branch: refs/heads/bv2
Commit: 513606da5de2d05c31f8adf5c64708ab55098831
Parents: 339ada6
Author: Matt Benson <[email protected]>
Authored: Thu Mar 22 12:12:10 2018 -0500
Committer: Matt Benson <[email protected]>
Committed: Thu Mar 22 12:12:10 2018 -0500

----------------------------------------------------------------------
 .../apache/bval/jsr/job/ValidateParameters.java |  5 +++
 .../bval/jsr/job/ValidateReturnValue.java       |  5 +++
 .../org/apache/bval/jsr/job/ValidationJob.java  | 35 ++++++++++++--------
 3 files changed, 32 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bval/blob/513606da/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateParameters.java
----------------------------------------------------------------------
diff --git 
a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateParameters.java 
b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateParameters.java
index c80937f..d4f9668 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateParameters.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateParameters.java
@@ -162,6 +162,11 @@ public abstract class ValidateParameters<E extends 
Executable, T> extends Valida
         return new ParametersFrame(describe(), new 
GraphContext(validatorContext, cp, parameterValues));
     }
 
+    @Override
+    protected boolean hasWork() {
+        return describe() != null;
+    }
+
     protected abstract ExecutableDescriptor describe();
 
     protected abstract List<String> getParameterNames(ParameterNameProvider 
parameterNameProvider);

http://git-wip-us.apache.org/repos/asf/bval/blob/513606da/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateReturnValue.java
----------------------------------------------------------------------
diff --git 
a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateReturnValue.java 
b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateReturnValue.java
index ca1deba..d477b72 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateReturnValue.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateReturnValue.java
@@ -131,6 +131,11 @@ public abstract class ValidateReturnValue<E extends 
Executable, T> extends Valid
             
context.getConstraintDescriptor().unwrap(ConstraintD.class).getDeclaredOn(), 
returnValue, null);
     }
 
+    @Override
+    protected boolean hasWork() {
+        return describe() != null;
+    }
+
     protected abstract ExecutableD<?, ?, ?> describe();
 
     protected abstract T getRootBean();

http://git-wip-us.apache.org/repos/asf/bval/blob/513606da/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 b8f22c1..61dcd39 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
@@ -489,26 +489,31 @@ public abstract class ValidationJob<T> {
         if (results.optional().isPresent()) {
             return results.get();
         }
-        final Frame<?> baseFrame = computeBaseFrame();
-        Validate.validState(baseFrame != null, "%s computed null baseFrame", 
getClass().getName());
+        if (hasWork()) {
+            final Frame<?> baseFrame = computeBaseFrame();
+            Validate.validState(baseFrame != null, "%s computed null 
baseFrame", getClass().getName());
 
-        final Consumer<ConstraintViolation<T>> sink = 
results.consumer(Set::add);
+            final Consumer<ConstraintViolation<T>> sink = 
results.consumer(Set::add);
 
-        validatedPathsByConstraint = new ConcurrentHashMap<>();
+            validatedPathsByConstraint = new ConcurrentHashMap<>();
 
-        try {
-            groups.getGroups().stream().map(Group::getGroup).forEach(g -> 
baseFrame.process(g, sink));
+            try {
+                groups.getGroups().stream().map(Group::getGroup).forEach(g -> 
baseFrame.process(g, sink));
 
-            sequences: for (List<Group> seq : groups.getSequences()) {
-                final boolean proceed = 
each(seq.stream().map(Group::getGroup), baseFrame::process, sink);
-                if (!proceed) {
-                    break sequences;
+                sequences: for (List<Group> seq : groups.getSequences()) {
+                    final boolean proceed = 
each(seq.stream().map(Group::getGroup), baseFrame::process, sink);
+                    if (!proceed) {
+                        break sequences;
+                    }
                 }
+            } finally {
+                validatedPathsByConstraint = null;
+            }
+            if (results.optional().isPresent()) {
+                return Collections.unmodifiableSet(results.get());
             }
-        } finally {
-            validatedPathsByConstraint = null;
         }
-        return 
results.optional().map(Collections::unmodifiableSet).orElse(Collections.emptySet());
+        return results.reset(Collections::emptySet).get();
     }
 
     private boolean each(Stream<Class<?>> groupSequence, BiConsumer<Class<?>, 
Consumer<ConstraintViolation<T>>> closure,
@@ -543,6 +548,10 @@ public abstract class ValidationJob<T> {
 
     protected abstract Class<T> getRootBeanClass();
 
+    protected boolean hasWork() {
+        return true;
+    }
+
     private final String interpolate(String messageTemplate, 
MessageInterpolator.Context context) {
         try {
             return 
validatorContext.getMessageInterpolator().interpolate(messageTemplate, context);

Reply via email to