package sample.model.constraints; import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.*; import javax.validation.*; import javax.validation.constraints.*; import org.hibernate.validator.constraints.NotBlank; /** * 名称(必須)を表現する制約注釈。 * low: 実際は姓名(ミドルネーム)の考慮やモノ系の名称などを意識する必要があります。 */ @Documented @Constraint(validatedBy = {}) @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @ReportAsSingleViolation @NotBlank @Size @Pattern(regexp = "") public @interface Name { String message() default "{error.domain.name}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; @OverridesAttribute(constraint = Size.class, name = "max") int max() default 30; @OverridesAttribute(constraint = Pattern.class, name = "regexp") String regexp() default ".*"; @OverridesAttribute(constraint = Pattern.class, name = "flags") Pattern.Flag[] flags() default {}; @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @Documented public @interface List { Name[] value(); } }