You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by mb...@apache.org on 2010/11/08 21:06:07 UTC

svn commit: r1032684 - /incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/ClassValidator.java

Author: mbenson
Date: Mon Nov  8 20:06:07 2010
New Revision: 1032684

URL: http://svn.apache.org/viewvc?rev=1032684&view=rev
Log:
fix failure: cascading validation of a property path with no subordinate validations

Modified:
    incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/ClassValidator.java

Modified: incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/ClassValidator.java
URL: http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/ClassValidator.java?rev=1032684&r1=1032683&r2=1032684&view=diff
==============================================================================
--- incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/ClassValidator.java (original)
+++ incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/ClassValidator.java Mon Nov  8 20:06:07 2010
@@ -695,7 +695,7 @@ public class ClassValidator implements C
      * @return {@link ConstraintViolation} {@link Set}
      */
     private <T> Set<ConstraintViolation<T>> validateValueImpl(Class<T> beanType, T object, String propertyName,
-        Object value, boolean cascade, Class<?>... groups) {
+        Object value, final boolean cascade, Class<?>... groups) {
 
         assert (object == null) ^ (value == VALIDATE_PROPERTY);
         checkPropertyName(propertyName);
@@ -722,6 +722,8 @@ public class ClassValidator implements C
                     fixed = true;
                 }
             }
+            boolean doCascade = cascade && (prop == null || prop.getMetaBean() != null);
+
             Object bean = context.getBean();
 
             ConstraintValidationListener<T> result = context.getListener();
@@ -732,10 +734,10 @@ public class ClassValidator implements C
             for (Group current : sequence.getGroups()) {
                 context.setCurrentGroup(current);
 
-                if (!cascade || prop != null) {
+                if (!doCascade || prop != null) {
                     validatePropertyInGroup(context);
                 }
-                if (cascade) {
+                if (doCascade) {
                     contextTraversal.moveDownIfNecessary();
                     if (context.getMetaBean() instanceof DynamicMetaBean) {
                         context.setMetaBean(context.getMetaBean().resolveMetaBean(
@@ -759,10 +761,10 @@ public class ClassValidator implements C
                 for (Group current : eachSeq) {
                     context.setCurrentGroup(current);
 
-                    if (!cascade || prop != null) {
+                    if (!doCascade || prop != null) {
                         validatePropertyInGroup(context);
                     }
-                    if (cascade) {
+                    if (doCascade) {
                         contextTraversal.moveDownIfNecessary();
                         if (context.getMetaBean() instanceof DynamicMetaBean) {
                             context.setMetaBean(context.getMetaBean().resolveMetaBean(