Hi all,
With reference to spec v2.0 section 5.4.6, I am having trouble with item 3b, where a class X has no @GroupSequence annotation, among its Default constraints are:
if X has a direct superclass Y, every constraint in the group Default of Y this rule is necessary in case Y redefines the group Default
Consider this with the concrete example in GroupSequenceIsolationTest#testCorrectDefaultSequenceInheritance3(). Here B3 extends A, whose @GroupSequence is defined as { Minimal, A }. Rule 4 says of a class X with a @GroupSequence annotation:
If X
does have a @GroupSequence
annotation, the group Default
contains every constraint belonging to every group declared by the @GroupSequence
annotation.
I thus conclude that Default contains for A: { Minimal, A } and that Default for B3 should contain { B3 (per rule 3a), Minimal, A } and that the validation performed at line 128 should detect violations at:
nickname (group B3)
size (group Minimal)
name (group A)
The assertions of the test, however, expect only the first two. Why is A omitted? If the sequence defined by a superclass to be respected, where is this specified? TBH I would think it would make sense, but my read of this section specifically set me down a path of removing this behavior from the Apache BVal codebase as I couldn't find a justification for it.
Thanks,
Matt