@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = EnumCheck.Validator.class)
public @interface EnumCheck {
String message() default "{enum.value.invalid}"; // 错误信息
Class extends Enum>> enumClass(); // 枚举类
Class>[] groups() default {};
Class extends Payload>[] payload() default {};
String enumMethodCode() default "getCode"; // 枚举校验方法
String enumMethodName() default "getName"; // 枚举校验方法
boolean allowNull() default false; // 是否允许为空
class Validator implements ConstraintValidator {
private Class extends Enum>> enumClass;
private String enumMethodCode;
private String enumMethodName;
private boolean allowNull;
@Override
public void initialize(EnumCheck enumValue) {
enumMethodCode = enumValue.enumMethodCode();
enumMethodName = enumValue.enumMethodName();
enumClass = enumValue.enumClass();
allowNull = enumValue.allowNull();
}
@Override
public boolean isValid(Object value, ConstraintValidatorContext constraintValidatorContext) {
if (value == null) {
return allowNull;
}
if (enumClass == null) {
return Boolean.TRUE;
}
JenkinsProcessEnum enumByParameter = EnumUtil.getEnumByParameter(JenkinsProcessEnum.class, enumMethodCode, value);
if (enumByParameter != null) {
return true;
}
JenkinsProcessEnum enumByParameter1 = EnumUtil.getEnumByParameter(JenkinsProcessEnum.class, enumMethodName, value);
if (enumByParameter1 != null) {
return true;
}
return false;
}
}
}复制代码