If a method overrides a method from a super-class or implements an interface method, its @ValidateOnExecution settings must be taken from the highest method in the hierarchy. (e.g. if C#foo() overrides B#foo() and B#foo() overrides A#foo(), the settings for C#foo() must be taken from A#foo()).
This is not guaranteed to work as in ValidationExtension#replaceWithInterfaceMethod() the first overridden method in the given set is considered, whose iteration order is not guaranteed to be from top to bottom of the hierarchy.
See
- ExecutableValidationTest#testExecutableValidationUsesSettingFromHighestMethodInHierarchyIfValidatedMethodImplementsAnInterfaceMethod()
|