I have a class-level annotation which I use to check someField
before checking another field with type Bar
@SomeClassValidation
class Foo {
String someField;
@Valid
Bar someBar;
}
the implementation for ConstraintValidator<SomeClassValidation, Foo>
looks something like:
if(someField == someExpectedValue) {
return someBar != null;
}
When the initial checks done with @SomeClassValidation
pass, I also need to validate the fields inside the Bar
class which looks something like:
class Bar {
@NotEmpty
@Size(min=2, max=2)
String fieldA;
@NotEmpty
@Size(min=3, max=10)
String fieldB;
}
Following the answer in another similar question, I figured I need to use validation groupings where BarValidationGroup
is a marker interface I used for the fields in Bar
class.
@SomeClassValidation
@GroupSequence({Foo.class, BarValidationGroup.class})
class Foo {
String someField;
@Valid
Bar someBar;
}
class Bar {
@NotEmpty
@Size(min=2, max=2, groups = BarValidationGroup.class)
String fieldA;
@NotEmpty
@Size(min=3, max=10, groups = BarValidationGroup.class)
String fieldB;
}
The first level validation (@SomeClassValidation
) triggers but the validations for Bar
doesn't. What am I doing wrong?