Cascaded validation adds a constraint violation for valid child property
------------------------------------------------------------------------

                 Key: BVAL-88
                 URL: https://issues.apache.org/jira/browse/BVAL-88
             Project: BeanValidation
          Issue Type: Bug
    Affects Versions: 0.2-incubating
            Reporter: Chris Ey


Precondition: 

Parent bean (call it 'Department') has an invalid property, say, "description" 
annotated with @NotEmpty and value is null. 
Department also has a valid child element, say, Person manager, which itself 
has a name. Manager is annotated with @Valid and @NotNull, and name is 
annotated with @NotEmpty. Both manager and name are correctly populated with 
non null values:

Department {
    @NotEmpty
    String description;
    @NotNull;
    @Valid
    Person manager;
}
Person {
    @NotEmpty
    String name;
}

Values:
Department.description: Intentionally left empty (to cause a constraint 
violation)
Department.manager: new Person()
Person.name: "Valid Value"

Action:
Department is validated using bean validation.

Expected:
1 Constraint violation:
empty Department.description

Actual:
2 Constraint violations:
empty Department.description
empty Person.name

I debugged a bit and it seems like when traversing down to Person's properties, 
it somehow switches into (isReportsAsSingleViolation() == true) path 
(constraintviolation.j...@162), then it sets failed = true in line 171, because 
the context does have violations (caused previously by Department.description). 
But failed should apparently stay false, because there was no /new/ error 
caused by Person.
Nevertheless, a new ConstraintViolation gets added in line 183 because failed 
was true (while it shouldn't be).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to