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(