Here is an ability to arrange multiple constraints into the single constraint such as below:
{code} @NotNull @Size(min = 2, max = 14) @CheckCase(CaseMode.UPPER) @Target({ METHOD, FIELD, ANNOTATION_TYPE }) @Retention(RUNTIME) @Constraint(validatedBy = { }) @Documented public @interface ValidLicensePlate {
String message() default "{org.hibernate.validator.referenceguide.chapter06." + "constraintcomposition.ValidLicensePlate.message}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { }; } {code}
In this case annotations {{@NotNull}}, {{@Size}} and {{@CheckCase}} will be processed as a single {{@ValidLicensePlate}} constraint. But the execution order of {{@ NotNul NotNull }} l , {{@Size}} and {{@CheckCase}} annotations can not be defined and sometimes it breaks validation by throwing exception. I've found that this bug is inside of a constructor of the {{org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTre}} class. Child constraints can be sorted by groups such top level constraints. |
|