001package cn.sticki.validator.spel;
002
003import cn.sticki.validator.spel.result.FieldValidResult;
004
005import java.lang.annotation.Annotation;
006import java.lang.reflect.Field;
007import java.util.Collections;
008import java.util.Set;
009
010/**
011 * Spel 约束校验器。
012 *
013 * @author 阿杆
014 * @version 1.0
015 * @since 2024/4/11
016 */
017public interface SpelConstraintValidator<A extends Annotation> {
018
019        /**
020         * 校验被标记的注解。
021         *
022         * @param annotation 注解值
023         * @param obj        被校验的对象
024         * @param field      被校验的字段,该字段存在于 obj 中
025         * @return 校验结果
026         */
027        FieldValidResult isValid(A annotation, Object obj, Field field);
028
029        Set<Class<?>> DEFAULT_SUPPORT_TYPE = Collections.singleton(Object.class);
030
031        /**
032         * 校验器支持的对象类型列表,默认为 Object。
033         */
034        default Set<Class<?>> supportType() {
035                return DEFAULT_SUPPORT_TYPE;
036        }
037
038}