diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BaseComparablePropertyValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BaseComparablePropertyValidator.java index 52ba86f..a88cf26 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BaseComparablePropertyValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BaseComparablePropertyValidator.java @@ -21,6 +21,18 @@ import java.util.function.Supplier; import com.google.common.collect.Range; +/** + * 针对 {@code Comparable} 类型的属性校验器基类 + * + *

+ * 内置了判断属性是否在给定区间内的校验规则。 + * + * @param 待校验对象类型 + * @param 属性类型 + * @param 当前属性校验器类型,用于链式调用 + * @see Range + * @author ZhouXY + */ public abstract class BaseComparablePropertyValidator, TPropertyValidator extends BaseComparablePropertyValidator> extends BasePropertyValidator { @@ -28,6 +40,12 @@ public abstract class BaseComparablePropertyValidator range) { withRule(value -> value != null && range.contains(value), value -> new IllegalArgumentException( @@ -35,30 +53,41 @@ public abstract class BaseComparablePropertyValidator range, String errMsg) { - withRule(value -> value != null && range.contains(value), convertExceptionCreator(errMsg)); + withRule(value -> value != null && range.contains(value), convertToExceptionFunction(errMsg)); return thisObject(); } + /** + * 添加一条校验属性的规则,校验属性是否在给定的区间之内 + * + * @param range 区间 + * @param e 自定义异常 + * @return 属性校验器 + */ public TPropertyValidator inRange( - Range range, - Supplier exceptionCreator) { - withRule(value -> value != null && range.contains(value), exceptionCreator); + Range range, Supplier e) { + withRule(value -> value != null && range.contains(value), e); return thisObject(); } + /** + * 添加一条校验属性的规则,校验属性是否在给定的区间之内 + * + * @param range 区间 + * @param e 自定义异常 + * @return 属性校验器 + */ public TPropertyValidator inRange( - Range range, - Function exceptionCreator) { - withRule(value -> value != null && range.contains(value), exceptionCreator); + Range range, Function e) { + withRule(value -> value != null && range.contains(value), e); return thisObject(); } - - static Function convertExceptionCreator(String errMsg) { - return value -> new IllegalArgumentException(errMsg); - } - - static Function convertExceptionCreator(Supplier exceptionSupplier) { - return value -> exceptionSupplier.get(); - } } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BasePropertyValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BasePropertyValidator.java index 3f511be..34dd961 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BasePropertyValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BasePropertyValidator.java @@ -25,6 +25,15 @@ import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; +/** + * 属性校验器。包含针对属性的校验规则。 + * + *

+ * 内置基础的校验规则。 + *

+ * + * @author ZhouXY + */ public abstract class BasePropertyValidator> { private final Function getter; @@ -35,20 +44,47 @@ public abstract class BasePropertyValidator rule) { return withRule(rule, v -> new IllegalArgumentException()); } + /** + * 添加一条校验属性的规则 + * + * @param rule 校验规则 + * @param errMsg 校验失败的错误信息 + * @return 属性校验器 + */ public final TPropertyValidator withRule( Predicate rule, String errMsg) { - return withRule(rule, convertExceptionCreator(errMsg)); + return withRule(rule, convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则 + * + * @param rule 校验规则 + * @param e 自定义异常 + * @return 属性校验器 + */ public final TPropertyValidator withRule( Predicate rule, Supplier e) { - return withRule(rule, convertExceptionCreator(e)); + return withRule(rule, convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则 + * + * @param rule 校验规则 + * @param e 自定义异常 + * @return 属性校验器 + */ public final TPropertyValidator withRule( Predicate rule, Function e) { this.consumers.add(v -> { @@ -59,9 +95,13 @@ public abstract class BasePropertyValidator consumer : consumers) { - consumer.accept(getter.apply(obj)); + consumer.accept(getter.apply(propertyValue)); } } @@ -75,20 +115,45 @@ public abstract class BasePropertyValidator TPropertyValidator notNull(Supplier exceptionCreator) { - return notNull(convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否不为空 + * + * @param 自定义异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public TPropertyValidator notNull(Supplier e) { + return notNull(convertToExceptionFunction(e)); } - public TPropertyValidator notNull(Function exceptionCreator) { - withRule(Objects::nonNull, exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否不为空 + * + * @param 自定义异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public TPropertyValidator notNull(Function e) { + withRule(Objects::nonNull, e); return thisObject(); } @@ -100,20 +165,45 @@ public abstract class BasePropertyValidator TPropertyValidator isNull(Supplier exceptionCreator) { - return isNull(convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否为空 + * + * @param 自定义异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public TPropertyValidator isNull(Supplier e) { + return isNull(convertToExceptionFunction(e)); } - public TPropertyValidator isNull(Function exceptionCreator) { - withRule(Objects::isNull, exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否为空 + * + * @param 自定义异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public TPropertyValidator isNull(Function e) { + withRule(Objects::isNull, e); return thisObject(); } @@ -125,23 +215,52 @@ public abstract class BasePropertyValidator new IllegalArgumentException(String.format("The input must be equal to '%s'.", that))); } + /** + * 添加一条校验属性的规则,校验属性是否等于给定值 + * + * @param that 给定值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public TPropertyValidator equalTo(Object that, String errMsg) { - return equalTo(that, convertExceptionCreator(errMsg)); + return equalTo(that, convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则,校验属性是否等于给定值 + * + * @param 自定义异常类型 + * @param that 给定值 + * @param e 自定义异常 + * @return 属性校验器 + */ public TPropertyValidator equalTo( - Object that, Supplier exceptionCreator) { - return equalTo(that, convertExceptionCreator(exceptionCreator)); + Object that, Supplier e) { + return equalTo(that, convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性是否等于给定值 + * + * @param 自定义异常类型 + * @param that 给定值 + * @param e 自定义异常 + * @return 属性校验器 + */ public TPropertyValidator equalTo( - Object that, Function exceptionCreator) { - withRule(value -> Objects.equals(value, that), exceptionCreator); + Object that, Function e) { + withRule(value -> Objects.equals(value, that), e); return thisObject(); } @@ -153,46 +272,103 @@ public abstract class BasePropertyValidator condition) { return must(condition, "The specified condition was not met for the input."); } + /** + * 添加一条校验属性的规则,校验属性是否满足给定的条件 + * + * @param condition 校验规则 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public TPropertyValidator must(Predicate condition, String errMsg) { - return must(condition, convertExceptionCreator(errMsg)); + return must(condition, convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则,校验属性是否满足给定的条件 + * + * @param 自定义异常类型 + * @param condition 校验规则 + * @param e 自定义异常 + * @return 属性校验器 + */ public TPropertyValidator must( Predicate condition, - Supplier exceptionCreator) { - return must(condition, convertExceptionCreator(exceptionCreator)); + Supplier e) { + return must(condition, convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性是否满足给定的条件 + * + * @param 自定义异常类型 + * @param condition 校验规则 + * @param e 自定义异常 + * @return 属性校验器 + */ public TPropertyValidator must( Predicate condition, - Function exceptionCreator) { - withRule(condition, exceptionCreator); + Function e) { + withRule(condition, e); return thisObject(); } + /** + * 添加多条校验属性的规则,校验属性是否满足给定的所有条件 + * + * @param conditions 校验规则 + * @return 属性校验器 + */ public TPropertyValidator must(Collection> conditions) { return must(conditions, "The specified conditions were not met for the input."); } + /** + * 添加多条校验属性的规则,校验属性是否满足给定的所有条件 + * + * @param conditions 校验规则 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public TPropertyValidator must(Collection> conditions, String errMsg) { - return must(conditions, convertExceptionCreator(errMsg)); + return must(conditions, convertToExceptionFunction(errMsg)); } + /** + * 添加多条校验属性的规则,校验属性是否满足给定的所有条件 + * + * @param 自定义异常类型 + * @param conditions 校验规则 + * @param e 自定义异常 + * @return 属性校验器 + */ public TPropertyValidator must( - Collection> conditions, - Supplier exceptionCreator) { - return must(conditions, convertExceptionCreator(exceptionCreator)); + Collection> conditions, Supplier e) { + return must(conditions, convertToExceptionFunction(e)); } + /** + * 添加多条校验属性的规则,校验属性是否满足给定的所有条件 + * + * @param 自定义异常类型 + * @param conditions 校验规则 + * @param e 自定义异常 + * @return 属性校验器 + */ public TPropertyValidator must( Collection> conditions, - Function exceptionCreator) { + Function e) { for (Predicate condition : conditions) { - withRule(condition, exceptionCreator); + withRule(condition, e); } return thisObject(); } @@ -201,11 +377,12 @@ public abstract class BasePropertyValidator Function convertExceptionCreator(String errMsg) { + static Function convertToExceptionFunction(String errMsg) { return value -> new IllegalArgumentException(errMsg); } - static Function convertExceptionCreator(Supplier exceptionSupplier) { + static Function convertToExceptionFunction( + Supplier exceptionSupplier) { return value -> exceptionSupplier.get(); } } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BaseValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BaseValidator.java index 7bd1f61..bcb95ea 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BaseValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BaseValidator.java @@ -27,120 +27,226 @@ import java.util.function.Supplier; import xyz.zhouxy.plusone.validator.function.*; /** - * BaseValidator - * - *

* 校验器的基类 - *

* *

- * NOTE: content. - *

+ * 通过继承 {@code BaseValidator},可以自定义一个针对特定类型的校验器,包含对该类型的校验逻辑。 + * * @author ZhouXY - * @since 0.0.1 */ public abstract class BaseValidator implements IValidator { + + /** + * 规则集合 + */ private final List> rules = new ArrayList<>(); + /** + * 添加一个校验规则 + * + * @param rule 校验规则 + * @param errorMessage 错误信息 + */ protected final void withRule(final Predicate rule, final String errorMessage) { withRule(rule, () -> new IllegalArgumentException(errorMessage)); } - protected final void withRule(Predicate rule, Supplier exceptionBuilder) { - withRule(rule, value -> exceptionBuilder.get()); + /** + * 添加一个校验规则 + * + * @param 自定义异常类型 + * @param rule 校验规则 + * @param e 自定义异常 + */ + protected final void withRule( + final Predicate rule, final Supplier e) { + withRule(rule, value -> e.get()); } + /** + * 添加一个校验规则 + * + * @param 自定义异常类型 + * @param condition 校验条件 + * @param e 自定义异常 + */ protected final void withRule( - Predicate condition, Function exceptionBuilder) { + final Predicate condition, final Function e) { withRule(value -> { if (!condition.test(value)) { - throw exceptionBuilder.apply(value); + throw e.apply(value); } }); } + /** + * 添加一个校验规则 + * + * @param rule 校验规则。内部包含断言条件,如果条件不满足,则抛出异常。 + */ protected final void withRule(Consumer rule) { this.rules.add(rule); } + /** + * 添加一个属性校验器 + * + * @param getter 属性获取函数 + * @return 属性校验器 + */ protected final ObjectPropertyValidator ruleFor(Function getter) { ObjectPropertyValidator validator = new ObjectPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } - protected final > ComparablePropertyValidator ruleForComparable(Function getter) { + /** + * 添加一个针对 {@code Comparable} 属性的校验器 + * + * @param 属性类型 + * @param getter 属性获取函数 + * @return 属性校验器 + */ + protected final > ComparablePropertyValidator ruleForComparable( + Function getter) { ComparablePropertyValidator validator = new ComparablePropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code Integer} 属性的校验器 + * + * @param getter 属性获取函数 + * @return 属性校验器 + */ protected final IntPropertyValidator ruleForInt(Function getter) { IntPropertyValidator validator = new IntPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code Integer} 属性的校验器 + * + * @param getter 属性获取函数 + * @return 属性校验器 + */ protected final IntPropertyValidator ruleFor(ToIntegerFunction getter) { IntPropertyValidator validator = new IntPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code Long} 属性的校验器 + * + * @param getter 属性获取函数 + * @return 属性校验器 + */ protected final LongPropertyValidator ruleForLong(Function getter) { LongPropertyValidator validator = new LongPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code Long} 属性的校验器 + * + * @param getter 属性获取函数 + * @return 属性校验器 + */ protected final LongPropertyValidator ruleFor(ToLongObjectFunction getter) { LongPropertyValidator validator = new LongPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code Double} 属性的校验器 + * + * @param getter 属性获取函数 + * @return 属性校验器 + */ protected final DoublePropertyValidator ruleForDouble(Function getter) { DoublePropertyValidator validator = new DoublePropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code Double} 属性的校验器 + * + * @param getter 属性获取函数 + * @return 属性校验器 + */ protected final DoublePropertyValidator ruleFor(ToDoubleObjectFunction getter) { DoublePropertyValidator validator = new DoublePropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code Boolean} 属性的校验器 + * + * @param getter 属性获取函数 + * @return 属性校验器 + */ protected final BoolPropertyValidator ruleForBool(Function getter) { BoolPropertyValidator validator = new BoolPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code Boolean} 属性的校验器 + * + * @param getter 属性获取函数 + * @return 属性校验器 + */ protected final BoolPropertyValidator ruleFor(ToBoolObjectFunction getter) { BoolPropertyValidator validator = new BoolPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code String} 属性的校验器 + * + * @param getter 获取属性值的函数 + * @return 属性校验器 + */ protected final StringPropertyValidator ruleForString(Function getter) { StringPropertyValidator validator = new StringPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code String} 属性的校验器 + * + * @param getter 获取属性值的函数 + * @return 属性校验器 + */ protected final StringPropertyValidator ruleFor(ToStringFunction getter) { StringPropertyValidator validator = new StringPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** + * 添加一个针对 {@code Collection} 属性的校验器 + * + * @param getter 获取属性值的函数 + * @return 集合属性校验器 + */ protected final CollectionPropertyValidator ruleForCollection(Function> getter) { CollectionPropertyValidator validator = new CollectionPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; } + /** {@inheritDoc} */ @Override public void validate(T obj) { this.rules.forEach(rule -> rule.accept(obj)); diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BoolPropertyValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BoolPropertyValidator.java index 2357381..b2bfc5c 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BoolPropertyValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/BoolPropertyValidator.java @@ -19,6 +19,15 @@ package xyz.zhouxy.plusone.validator; import java.util.function.Function; import java.util.function.Supplier; +/** + * 针对 {@code Boolean} 类型的属性校验器 + * + *

+ * 内置了判断 Boolean 值是否为 true 或 false 的校验规则。 + *

+ * + * @author ZhouXY + */ public class BoolPropertyValidator extends BasePropertyValidator> { BoolPropertyValidator(Function getter) { @@ -27,43 +36,89 @@ public class BoolPropertyValidator extends BasePropertyValidator isTrueValue() { return isTrueValue("The input must be true."); } + /** + * 添加一条判断属性值是否为 {@code true} 的校验规则 + * + * @param errMsg 校验失败的错误信息 + * @return 属性校验器 + */ public BoolPropertyValidator isTrueValue(String errMsg) { - return isTrueValue(convertExceptionCreator(errMsg)); + return isTrueValue(convertToExceptionFunction(errMsg)); } - public BoolPropertyValidator isTrueValue( - Supplier exceptionCreator) { - return isTrueValue(convertExceptionCreator(exceptionCreator)); + /** + * 添加一条判断属性值是否为 {@code true} 的校验规则 + * + * @param 自定义异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public BoolPropertyValidator isTrueValue(Supplier e) { + return isTrueValue(convertToExceptionFunction(e)); } - public BoolPropertyValidator isTrueValue( - Function exceptionCreator) { - withRule(Boolean.TRUE::equals, exceptionCreator); + /** + * 添加一条判断属性值是否为 {@code true} 的校验规则 + * + * @param 自定义异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public BoolPropertyValidator isTrueValue(Function e) { + withRule(Boolean.TRUE::equals, e); return this; } // ====== isFalseValue ====== + /** + * 添加一条判断属性值是否为 {@code false} 的校验规则 + * + * @return 属性校验器 + */ public BoolPropertyValidator isFalseValue() { return isFalseValue("The input must be false."); } + /** + * 添加一条判断属性值是否为 {@code false} 的校验规则 + * + * @param errMsg 错误信息 + * @return 属性校验器 + */ public BoolPropertyValidator isFalseValue(String errMsg) { - return isFalseValue(convertExceptionCreator(errMsg)); + return isFalseValue(convertToExceptionFunction(errMsg)); } - public BoolPropertyValidator isFalseValue( - Supplier exceptionCreator) { - return isFalseValue(convertExceptionCreator(exceptionCreator)); + /** + * 添加一条判断属性值是否为 {@code false} 的校验规则 + * + * @param 异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public BoolPropertyValidator isFalseValue(Supplier e) { + return isFalseValue(convertToExceptionFunction(e)); } - public BoolPropertyValidator isFalseValue( - Function exceptionCreator) { - withRule(Boolean.FALSE::equals, exceptionCreator); + /** + * 添加一条判断属性值是否为 {@code false} 的校验规则 + * + * @param 异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public BoolPropertyValidator isFalseValue(Function e) { + withRule(Boolean.FALSE::equals, e); return this; } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/CollectionPropertyValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/CollectionPropertyValidator.java index 8b657e4..e5d42fc 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/CollectionPropertyValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/CollectionPropertyValidator.java @@ -22,6 +22,14 @@ import java.util.function.Supplier; import xyz.zhouxy.plusone.commons.collection.CollectionTools; +/** + * 针对集合类型的属性校验器 + * + *

+ * 内置判断集合是否为空的校验规则。 + * + * @author ZhouXY + */ public class CollectionPropertyValidator extends BasePropertyValidator, CollectionPropertyValidator> { @@ -31,43 +39,91 @@ public class CollectionPropertyValidator // ====== notEmpty ===== + /** + * 添加一条校验属性的规则,校验属性是否非空 + * + * @return 属性校验器 + */ public CollectionPropertyValidator notEmpty() { return notEmpty("The input must not be empty."); } + /** + * 添加一条校验属性的规则,校验属性是否非空 + * + * @param errMsg 异常信息 + * @return 属性校验器 + */ public CollectionPropertyValidator notEmpty(String errMsg) { - return notEmpty(convertExceptionCreator(errMsg)); + return notEmpty(convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则,校验属性是否非空 + * + * @param 自定义异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ public CollectionPropertyValidator notEmpty( - Supplier exceptionCreator) { - return notEmpty(convertExceptionCreator(exceptionCreator)); + Supplier e) { + return notEmpty(convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性是否非空 + * + * @param 自定义异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ public CollectionPropertyValidator notEmpty( - Function, E> exceptionCreator) { - withRule(CollectionTools::isNotEmpty, exceptionCreator); + Function, E> e) { + withRule(CollectionTools::isNotEmpty, e); return this; } // ====== isEmpty ===== + /** + * 添加一条校验属性的规则,校验属性是否为空 + * + * @return 属性校验器 + */ public CollectionPropertyValidator isEmpty() { return isEmpty("The input must be empty."); } + /** + * 添加一条校验属性的规则,校验属性是否为空 + * + * @param errMsg 异常信息 + * @return 属性校验器 + */ public CollectionPropertyValidator isEmpty(String errMsg) { - return isEmpty(convertExceptionCreator(errMsg)); + return isEmpty(convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则,校验属性是否为空 + * + * @param e 自定义异常 + * @return 属性校验器 + */ public CollectionPropertyValidator isEmpty( - Supplier exceptionCreator) { - return isEmpty(convertExceptionCreator(exceptionCreator)); + Supplier e) { + return isEmpty(convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性是否为空 + * + * @param e 自定义异常 + * @return 属性校验器 + */ public CollectionPropertyValidator isEmpty( - Function, E> exceptionCreator) { - withRule(CollectionTools::isEmpty, exceptionCreator); + Function, E> e) { + withRule(CollectionTools::isEmpty, e); return this; } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/ComparablePropertyValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/ComparablePropertyValidator.java index 3fc8820..63621db 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/ComparablePropertyValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/ComparablePropertyValidator.java @@ -18,6 +18,18 @@ package xyz.zhouxy.plusone.validator; import java.util.function.Function; +/** + * 针对 {@code Comparable} 类型的默认属性校验器 + * + *

+ * 继承自 {@link BaseComparablePropertyValidator},内置了判断属性是否在给定区间内的校验规则。 + * + * @param 待校验对象类型 + * @param 属性类型 + * @param 当前属性校验器类型,用于链式调用 + * @see Range + * @author ZhouXY + */ public class ComparablePropertyValidator> extends BaseComparablePropertyValidator> { diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/DoublePropertyValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/DoublePropertyValidator.java index c48a8f5..8c37068 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/DoublePropertyValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/DoublePropertyValidator.java @@ -19,6 +19,14 @@ package xyz.zhouxy.plusone.validator; import java.util.function.Function; import java.util.function.Supplier; +/** + * 浮点数属性校验器 + * + *

+ * 内置对 {@code Double} 类型常用的校验规则。 + * + * @author ZhouXY + */ public class DoublePropertyValidator extends BaseComparablePropertyValidator> { @@ -30,23 +38,50 @@ public class DoublePropertyValidator // #region - greater than // ================================ + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param min 最小值 + * @return 属性校验器 + */ public DoublePropertyValidator gt(double min) { return gt(min, () -> new IllegalArgumentException( String.format("The input must be greater than '%s'.", min))); } + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param min 最小值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public DoublePropertyValidator gt(double min, String errMsg) { - return gt(min, convertExceptionCreator(errMsg)); + return gt(min, convertToExceptionFunction(errMsg)); } - public DoublePropertyValidator gt( - double min, Supplier exceptionCreator) { - return gt(min, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 错误信息 + * @return 属性校验器 + */ + public DoublePropertyValidator gt(double min, Supplier e) { + return gt(min, convertToExceptionFunction(e)); } - public DoublePropertyValidator gt( - double min, Function exceptionCreator) { - withRule(value -> (value != null && value > min), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public DoublePropertyValidator gt(double min, Function e) { + withRule(value -> (value != null && value > min), e); return this; } @@ -58,23 +93,50 @@ public class DoublePropertyValidator // #region - greater than or equal to // ================================ + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param min 最小值 + * @return 属性校验器 + */ public DoublePropertyValidator ge(double min) { return ge(min, () -> new IllegalArgumentException( String.format("The input must be greater than or equal to '%s'.", min))); } + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param min 最小值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public DoublePropertyValidator ge(double min, String errMsg) { - return ge(min, convertExceptionCreator(errMsg)); + return ge(min, convertToExceptionFunction(errMsg)); } - public DoublePropertyValidator ge( - double min, Supplier exceptionCreator) { - return ge(min, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public DoublePropertyValidator ge(double min, Supplier e) { + return ge(min, convertToExceptionFunction(e)); } - public DoublePropertyValidator ge( - double min, Function exceptionCreator) { - withRule(value -> (value != null && value >= min), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public DoublePropertyValidator ge(double min, Function e) { + withRule(value -> (value != null && value >= min), e); return this; } @@ -86,23 +148,50 @@ public class DoublePropertyValidator // #region - less than // ================================ + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param max 最大值 + * @return 属性校验器 + */ public DoublePropertyValidator lt(double max) { return lt(max, () -> new IllegalArgumentException( String.format("The input must be less than '%s'.", max))); } + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param max 最大值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public DoublePropertyValidator lt(double max, String errMsg) { - return lt(max, convertExceptionCreator(errMsg)); + return lt(max, convertToExceptionFunction(errMsg)); } - public DoublePropertyValidator lt( - double max, Supplier exceptionCreator) { - return lt(max, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public DoublePropertyValidator lt(double max, Supplier e) { + return lt(max, convertToExceptionFunction(e)); } - public DoublePropertyValidator lt( - double max, Function exceptionCreator) { - withRule(value -> (value != null && value < max), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public DoublePropertyValidator lt(double max, Function e) { + withRule(value -> (value != null && value < max), e); return this; } @@ -114,23 +203,50 @@ public class DoublePropertyValidator // #region - less than or equal to // ================================ + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param max 最大值 + * @return 属性校验器 + */ public DoublePropertyValidator le(double max) { return le(max, () -> new IllegalArgumentException( String.format("The input must be less than or equal to '%s'.", max))); } + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param max 最大值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public DoublePropertyValidator le(double max, String errMsg) { - return le(max, convertExceptionCreator(errMsg)); + return le(max, convertToExceptionFunction(errMsg)); } - public DoublePropertyValidator le( - double max, Supplier exceptionCreator) { - return le(max, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public DoublePropertyValidator le(double max, Supplier e) { + return le(max, convertToExceptionFunction(e)); } - public DoublePropertyValidator le( - double max, Function exceptionCreator) { - withRule(value -> (value != null && value <= max), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public DoublePropertyValidator le(double max, Function e) { + withRule(value -> (value != null && value <= max), e); return this; } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/IValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/IValidator.java index 78b01b5..79f9be7 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/IValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/IValidator.java @@ -22,5 +22,10 @@ package xyz.zhouxy.plusone.validator; */ public interface IValidator { + /** + * 校验对象 + * + * @param obj + */ void validate(T obj); } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/IntPropertyValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/IntPropertyValidator.java index 50740cd..6459f07 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/IntPropertyValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/IntPropertyValidator.java @@ -19,6 +19,14 @@ package xyz.zhouxy.plusone.validator; import java.util.function.Function; import java.util.function.Supplier; +/** + * 整数属性校验器 + * + *

+ * 内置对 {@code Integer} 类型常用的校验规则。 + * + * @author ZhouXY + */ public class IntPropertyValidator extends BaseComparablePropertyValidator> { @@ -30,23 +38,50 @@ public class IntPropertyValidator // #region - greater than // ================================ + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param min 最小值 + * @return 属性校验器 + */ public IntPropertyValidator gt(int min) { return gt(min, () -> new IllegalArgumentException( String.format("The input must be greater than '%d'.", min))); } + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param min 最小值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public IntPropertyValidator gt(int min, String errMsg) { - return gt(min, convertExceptionCreator(errMsg)); + return gt(min, convertToExceptionFunction(errMsg)); } - public IntPropertyValidator gt( - int min, Supplier exceptionCreator) { - return gt(min, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 错误信息 + * @return 属性校验器 + */ + public IntPropertyValidator gt(int min, Supplier e) { + return gt(min, convertToExceptionFunction(e)); } - public IntPropertyValidator gt( - int min, Function exceptionCreator) { - withRule(value -> (value != null && value > min), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public IntPropertyValidator gt(int min, Function e) { + withRule(value -> (value != null && value > min), e); return this; } @@ -58,23 +93,50 @@ public class IntPropertyValidator // #region - greater than or equal to // ================================ + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param min 最小值 + * @return 属性校验器 + */ public IntPropertyValidator ge(int min) { return ge(min, () -> new IllegalArgumentException( String.format("The input must be greater than or equal to '%d'.", min))); } + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param min 最小值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public IntPropertyValidator ge(int min, String errMsg) { - return ge(min, convertExceptionCreator(errMsg)); + return ge(min, convertToExceptionFunction(errMsg)); } - public IntPropertyValidator ge( - int min, Supplier exceptionCreator) { - return ge(min, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public IntPropertyValidator ge(int min, Supplier e) { + return ge(min, convertToExceptionFunction(e)); } - public IntPropertyValidator ge( - int min, Function exceptionCreator) { - withRule(value -> (value != null && value >= min), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public IntPropertyValidator ge(int min, Function e) { + withRule(value -> (value != null && value >= min), e); return this; } @@ -86,23 +148,50 @@ public class IntPropertyValidator // #region - less than // ================================ + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param max 最大值 + * @return 属性校验器 + */ public IntPropertyValidator lt(int max) { return lt(max, () -> new IllegalArgumentException( String.format("The input must be less than '%d'.", max))); } + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param max 最大值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public IntPropertyValidator lt(int max, String errMsg) { - return lt(max, convertExceptionCreator(errMsg)); + return lt(max, convertToExceptionFunction(errMsg)); } - public IntPropertyValidator lt( - int max, Supplier exceptionCreator) { - return lt(max, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public IntPropertyValidator lt(int max, Supplier e) { + return lt(max, convertToExceptionFunction(e)); } - public IntPropertyValidator lt( - int max, Function exceptionCreator) { - withRule(value -> (value != null && value < max), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public IntPropertyValidator lt(int max, Function e) { + withRule(value -> (value != null && value < max), e); return this; } @@ -114,23 +203,50 @@ public class IntPropertyValidator // #region - less than or equal to // ================================ + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param max 最大值 + * @return 属性校验器 + */ public IntPropertyValidator le(int max) { return le(max, () -> new IllegalArgumentException( String.format("The input must be less than or equal to '%d'.", max))); } + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param max 最大值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public IntPropertyValidator le(int max, String errMsg) { - return le(max, convertExceptionCreator(errMsg)); + return le(max, convertToExceptionFunction(errMsg)); } - public IntPropertyValidator le( - int max, Supplier exceptionCreator) { - return le(max, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public IntPropertyValidator le(int max, Supplier e) { + return le(max, convertToExceptionFunction(e)); } - public IntPropertyValidator le( - int max, Function exceptionCreator) { - withRule(value -> (value != null && value <= max), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public IntPropertyValidator le(int max, Function e) { + withRule(value -> (value != null && value <= max), e); return this; } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/LongPropertyValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/LongPropertyValidator.java index 92b284a..5aef774 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/LongPropertyValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/LongPropertyValidator.java @@ -19,6 +19,14 @@ package xyz.zhouxy.plusone.validator; import java.util.function.Function; import java.util.function.Supplier; +/** + * 长整数属性校验器 + * + *

+ * 内置对 {@code Long} 类型常用的校验规则。 + * + * @author ZhouXY + */ public class LongPropertyValidator extends BaseComparablePropertyValidator> { @@ -30,23 +38,50 @@ public class LongPropertyValidator // #region - greater than // ================================ + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param min 最小值 + * @return 属性校验器 + */ public LongPropertyValidator gt(long min) { return gt(min, () -> new IllegalArgumentException( String.format("The input must be greater than '%d'.", min))); } + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param min 最小值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public LongPropertyValidator gt(long min, String errMsg) { - return gt(min, convertExceptionCreator(errMsg)); + return gt(min, convertToExceptionFunction(errMsg)); } - public LongPropertyValidator gt( - long min, Supplier exceptionCreator) { - return gt(min, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 错误信息 + * @return 属性校验器 + */ + public LongPropertyValidator gt(long min, Supplier e) { + return gt(min, convertToExceptionFunction(e)); } - public LongPropertyValidator gt( - long min, Function exceptionCreator) { - withRule(value -> (value != null && value > min), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否大于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public LongPropertyValidator gt(long min, Function e) { + withRule(value -> (value != null && value > min), e); return this; } @@ -58,23 +93,50 @@ public class LongPropertyValidator // #region - greater than or equal to // ================================ + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param min 最小值 + * @return 属性校验器 + */ public LongPropertyValidator ge(long min) { return ge(min, () -> new IllegalArgumentException( String.format("The input must be greater than or equal to '%d'.", min))); } + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param min 最小值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public LongPropertyValidator ge(long min, String errMsg) { - return ge(min, convertExceptionCreator(errMsg)); + return ge(min, convertToExceptionFunction(errMsg)); } - public LongPropertyValidator ge( - long min, Supplier exceptionCreator) { - return ge(min, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public LongPropertyValidator ge(long min, Supplier e) { + return ge(min, convertToExceptionFunction(e)); } - public LongPropertyValidator ge( - long min, Function exceptionCreator) { - withRule(value -> (value != null && value >= min), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否大于等于给定值 + * + * @param 异常类型 + * @param min 最小值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public LongPropertyValidator ge(long min, Function e) { + withRule(value -> (value != null && value >= min), e); return this; } @@ -86,23 +148,50 @@ public class LongPropertyValidator // #region - less than // ================================ + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param max 最大值 + * @return 属性校验器 + */ public LongPropertyValidator lt(long max) { return lt(max, () -> new IllegalArgumentException( String.format("The input must be less than '%d'.", max))); } + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param max 最大值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public LongPropertyValidator lt(long max, String errMsg) { - return lt(max, convertExceptionCreator(errMsg)); + return lt(max, convertToExceptionFunction(errMsg)); } - public LongPropertyValidator lt( - long max, Supplier exceptionCreator) { - return lt(max, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public LongPropertyValidator lt(long max, Supplier e) { + return lt(max, convertToExceptionFunction(e)); } - public LongPropertyValidator lt( - long max, Function exceptionCreator) { - withRule(value -> (value != null && value < max), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否小于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public LongPropertyValidator lt(long max, Function e) { + withRule(value -> (value != null && value < max), e); return this; } @@ -114,23 +203,50 @@ public class LongPropertyValidator // #region - less than or equal to // ================================ + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param max 最大值 + * @return 属性校验器 + */ public LongPropertyValidator le(long max) { return le(max, () -> new IllegalArgumentException( String.format("The input must be less than or equal to '%d'.", max))); } + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param max 最大值 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public LongPropertyValidator le(long max, String errMsg) { - return le(max, convertExceptionCreator(errMsg)); + return le(max, convertToExceptionFunction(errMsg)); } - public LongPropertyValidator le( - long max, Supplier exceptionCreator) { - return le(max, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public LongPropertyValidator le(long max, Supplier e) { + return le(max, convertToExceptionFunction(e)); } - public LongPropertyValidator le( - long max, Function exceptionCreator) { - withRule(value -> (value != null && value <= max), exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否小于等于给定值 + * + * @param 异常类型 + * @param max 最大值 + * @param e 自定义异常 + * @return 属性校验器 + */ + public LongPropertyValidator le(long max, Function e) { + withRule(value -> (value != null && value <= max), e); return this; } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/MapValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/MapValidator.java index c678ff7..5fa1796 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/MapValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/MapValidator.java @@ -23,28 +23,67 @@ import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; +/** + * 对 Map 进行校验的校验器 + * + *

+ * 校验后拷贝出一个新的 Map 对象,仅保留指定的 key。 + * + * @author ZhouXY + */ public abstract class MapValidator extends BaseValidator> { private final Set keys; + /** + * 构造函数 + * + * @param keys 要保留的 key 的集合 + */ protected MapValidator(K[] keys) { this(Arrays.asList(keys)); } + /** + * 构造函数 + * @param keys 要保留的 key 的集合 + */ protected MapValidator(Collection keys) { this.keys = keys.stream().collect(Collectors.toSet()); } - // ========== validate & validateAndCopy ========== + // ================================ + // #region - validateAndCopy + // ================================ + /** + * 校验并拷贝,仅保留指定 key 的属性。 + * + * @param obj 待校验的 map + * @return 拷贝后的 map + */ public final Map validateAndCopy(Map obj) { return validateAndCopyInternal(obj, this.keys); } + /** + * 校验并拷贝,仅保留指定 key 的属性。 + * + * @param obj 待校验的 map + * @param keys 指定 key + * @return 拷贝后的 map + */ public final Map validateAndCopy(Map obj, Collection keys) { return validateAndCopyInternal(obj, keys); } + /** + * 校验并拷贝,仅保留指定 key 的属性。 + * + * @param obj 待校验的 map + * @param keys 待校验的 key + * @return 拷贝后的 map + */ @SafeVarargs public final Map validateAndCopy(Map obj, K... keys) { return validateAndCopyInternal(obj, Arrays.asList(keys)); @@ -57,42 +96,101 @@ public abstract class MapValidator extends BaseValidator> { .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); } - // ========== ruleFor ========== + // ================================ + // #endregion - validateAndCopy + // ================================ + // ================================ + // #region - ruleFor + // ================================ + + /** + * 添加一个属性校验器,对指定 key 对应的 value 进行校验 + * + * @param key key + * @return 属性校验器 + */ protected final ObjectPropertyValidator, V> ruleFor(K key) { final Function, V> func = m -> m.get(key); return ruleFor(func); } + /** + * 添加一个属性校验器,对指定 key 对应的 {@code Integer} 类型的 value 进行校验 + * + * @param key key + * @return 属性校验器 + */ protected final IntPropertyValidator> ruleForInt(K key) { return ruleForInt(m -> (Integer) m.get(key)); } + /** + * 添加一个属性校验器,对指定 key 对应的 {@code Long} 类型的 value 进行校验 + * + * @param key key + * @return 属性校验器 + */ protected final LongPropertyValidator> ruleForLong(K key) { return ruleForLong(m -> (Long) m.get(key)); } + /** + * 添加一个属性校验器,对指定 key 对应的 {@code Double} 类型的 value 进行校验 + * + * @param key key + * @return 属性校验器 + */ protected final DoublePropertyValidator> ruleForDouble(K key) { return ruleForDouble(m -> (Double) m.get(key)); } + /** + * 添加一个属性校验器,对指定 key 对应的 {@code Boolean} 类型的 value 进行校验 + * + * @param key key + * @return 属性校验器 + */ protected final BoolPropertyValidator> ruleForBool(K key) { return ruleForBool(m -> (Boolean) m.get(key)); } + /** + * 添加一个属性校验器,对指定 key 对应的 {@code String} 类型的 value 进行校验 + * + * @param key key + * @return 属性校验器 + */ protected final StringPropertyValidator> ruleForString(K key) { return ruleForString(m -> (String) m.get(key)); } + /** + * 添加一个属性校验器,对指定 key 对应的 {@code Comparable} 的 value 进行校验 + * + * @param key key + * @return 属性校验器 + */ protected final > ComparablePropertyValidator, E> ruleForComparable(K key) { @SuppressWarnings("unchecked") Function, E> getter = m -> (E) m.get(key); return ruleForComparable(getter); } + /** + * 添加一个属性校验器,对指定 key 对应的集合类型的 value 进行校验 + * + * @param 集合元素的类型 + * @param key key + * @return 属性校验器 + */ protected final CollectionPropertyValidator, E> ruleForCollection(K key) { @SuppressWarnings("unchecked") Function, Collection> getter = m -> (Collection) m.get(key); return ruleForCollection(getter); } + + // ================================ + // #endregion - ruleFor + // ================================ } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/ObjectPropertyValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/ObjectPropertyValidator.java index 29b36c4..9445ce1 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/ObjectPropertyValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/ObjectPropertyValidator.java @@ -18,6 +18,11 @@ package xyz.zhouxy.plusone.validator; import java.util.function.Function; +/** + * 通用类型属性校验器。继承自 {@link BasePropertyValidator},包含针对属性的校验规则。 + * + * @author ZhouXY + */ public class ObjectPropertyValidator extends BasePropertyValidator> { diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/StringPropertyValidator.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/StringPropertyValidator.java index 6d87b74..70190af 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/StringPropertyValidator.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/StringPropertyValidator.java @@ -31,7 +31,7 @@ import xyz.zhouxy.plusone.commons.util.StringTools; * StringPropertyValidator * *

- * 针对文本字段的验证器。 + * 针对文本字段的校验器。 *

* * @author ZhouXY @@ -46,20 +46,41 @@ public class StringPropertyValidator extends BaseComparablePropertyValidator< // #region - matches // ================================ + /** + * 添加一条校验属性的规则,校验属性是否匹配正则表达式 + * + * @param regex 正则表达式 + * @param errMsg 异常信息 + * @return 属性校验器 + */ public StringPropertyValidator matches(Pattern regex, String errMsg) { - return matches(regex, convertExceptionCreator(errMsg)); + return matches(regex, convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则,校验属性是否匹配正则表达式 + * + * @param 异常类型 + * @param regex 正则表达式 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator matches( - Pattern regex, - Supplier exceptionCreator) { - return matches(regex, convertExceptionCreator(exceptionCreator)); + Pattern regex, Supplier e) { + return matches(regex, convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性是否匹配正则表达式 + * + * @param 异常类型 + * @param regex 正则表达式 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator matches( - Pattern regex, - Function exceptionCreator) { - withRule(input -> (input == null || RegexTools.matches(input, regex)), exceptionCreator); + Pattern regex, Function e) { + withRule(input -> (input == null || RegexTools.matches(input, regex)), e); return this; } @@ -71,37 +92,79 @@ public class StringPropertyValidator extends BaseComparablePropertyValidator< // #region - matchesOne // ================================ + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的多个正则表达式的其中一个 + * + * @param regexs 正则表达式 + * @param errMsg 异常信息 + * @return 属性校验器 + */ public StringPropertyValidator matchesOne(Pattern[] regexs, String errMsg) { - return matchesOne(regexs, convertExceptionCreator(errMsg)); + return matchesOne(regexs, convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的多个正则表达式的其中一个 + * + * @param 异常类型 + * @param regexs 正则表达式 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator matchesOne( - Pattern[] regexs, - Supplier exceptionCreator) { - return matchesOne(regexs, convertExceptionCreator(exceptionCreator)); + Pattern[] regexs, Supplier e) { + return matchesOne(regexs, convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的多个正则表达式的其中一个 + * + * @param 异常类型 + * @param regexs 正则表达式 + * @param e 自定义异常 + * @return + */ public StringPropertyValidator matchesOne( - Pattern[] regexs, - Function exceptionCreator) { - withRule(input -> input == null || RegexTools.matchesOne(input, regexs), exceptionCreator); + Pattern[] regexs, Function e) { + withRule(input -> input == null || RegexTools.matchesOne(input, regexs), e); return this; } + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的多个正则表达式的其中一个 + * + * @param regexs 正则表达式 + * @param errMsg 异常信息 + * @return 属性校验器 + */ public StringPropertyValidator matchesOne(List regexs, String errMsg) { - return matchesOne(regexs, convertExceptionCreator(errMsg)); + return matchesOne(regexs, convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的多个正则表达式的其中一个 + * + * @param 异常类型 + * @param regexs 正则表达式 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator matchesOne( - List regexs, - Supplier exceptionCreator) { - return matchesOne(regexs, convertExceptionCreator(exceptionCreator)); + List regexs, Supplier e) { + return matchesOne(regexs, convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的多个正则表达式的其中一个 + * + * @param 异常类型 + * @param regexs 正则表达式 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator matchesOne( - List regexs, - Function exceptionCreator) { - withRule(input -> input == null || RegexTools.matchesOne(input, regexs.toArray(new Pattern[regexs.size()])), exceptionCreator); + List regexs, Function e) { + withRule(input -> input == null || RegexTools.matchesOne(input, regexs.toArray(new Pattern[regexs.size()])), e); return this; } @@ -113,37 +176,79 @@ public class StringPropertyValidator extends BaseComparablePropertyValidator< // #region - matchesAll // ================================ + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的所有正则表达式 + * + * @param regexs 正则表达式 + * @param errMsg 异常信息 + * @return 属性校验器 + */ public StringPropertyValidator matchesAll(Pattern[] regexs, String errMsg) { - return matchesAll(regexs, convertExceptionCreator(errMsg)); + return matchesAll(regexs, convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的所有正则表达式 + * + * @param 异常类型 + * @param regexs 正则表达式 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator matchesAll( - Pattern[] regexs, - Supplier exceptionCreator) { - return matchesAll(regexs, convertExceptionCreator(exceptionCreator)); + Pattern[] regexs, Supplier e) { + return matchesAll(regexs, convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的所有正则表达式 + * + * @param 异常类型 + * @param regexs 正则表达式 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator matchesAll( - Pattern[] regexs, - Function exceptionCreator) { - withRule(input -> input == null || RegexTools.matchesAll(input, regexs), exceptionCreator); + Pattern[] regexs, Function e) { + withRule(input -> input == null || RegexTools.matchesAll(input, regexs), e); return this; } + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的所有正则表达式 + * + * @param regexs 正则表达式 + * @param errMsg 异常信息 + * @return 属性校验器 + */ public StringPropertyValidator matchesAll(Collection regexs, String errMsg) { - return matchesAll(regexs, convertExceptionCreator(errMsg)); + return matchesAll(regexs, convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的所有正则表达式 + * + * @param 异常类型 + * @param regexs 正则表达式 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator matchesAll( - Collection regexs, - Supplier exceptionCreator) { - return matchesAll(regexs, convertExceptionCreator(exceptionCreator)); + Collection regexs, Supplier e) { + return matchesAll(regexs, convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性是否匹配指定的所有正则表达式 + * + * @param 异常类型 + * @param regexs 正则表达式 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator matchesAll( - Collection regexs, - Function exceptionCreator) { - withRule(input -> input == null || RegexTools.matchesAll(input, regexs.toArray(new Pattern[regexs.size()])), exceptionCreator); + Collection regexs, Function e) { + withRule(input -> input == null || RegexTools.matchesAll(input, regexs.toArray(new Pattern[regexs.size()])), e); return this; } @@ -155,21 +260,45 @@ public class StringPropertyValidator extends BaseComparablePropertyValidator< // #region - notBlank // ================================ + /** + * 添加一条校验属性的规则,校验属性是否不为空白字符串 + * + * @return 属性校验器 + */ public StringPropertyValidator notBlank() { return notBlank("The input must not be blank."); } + /** + * 添加一条校验属性的规则,校验属性是否不为空白字符串 + * + * @param errMsg 异常信息 + * @return 属性校验器 + */ public StringPropertyValidator notBlank(String errMsg) { - return notBlank(convertExceptionCreator(errMsg)); + return notBlank(convertToExceptionFunction(errMsg)); } - public StringPropertyValidator notBlank(Supplier exceptionCreator) { - return notBlank(convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否不为空白字符串 + * + * @param 异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public StringPropertyValidator notBlank(Supplier e) { + return notBlank(convertToExceptionFunction(e)); } - public StringPropertyValidator notBlank( - Function exceptionCreator) { - withRule(StringTools::isNotBlank, exceptionCreator); + /** + * 添加一条校验属性的规则,校验属性是否不为空白字符串 + * + * @param 异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public StringPropertyValidator notBlank(Function e) { + withRule(StringTools::isNotBlank, e); return this; } @@ -181,22 +310,46 @@ public class StringPropertyValidator extends BaseComparablePropertyValidator< // #region - emailAddress // ================================ + /** + * 添加一条校验属性的规则,校验属性是否是邮箱地址 + * + * @return 属性校验器 + */ public StringPropertyValidator emailAddress() { return emailAddress("The input is not a valid email address."); } + /** + * 添加一条校验属性的规则,校验属性是否是邮箱地址 + * + * @param errMsg 校验失败的错误信息 + * @return 属性校验器 + */ public StringPropertyValidator emailAddress(String errMsg) { - return emailAddress(convertExceptionCreator(errMsg)); + return emailAddress(convertToExceptionFunction(errMsg)); } - public StringPropertyValidator emailAddress( - Supplier exceptionCreator) { - return emailAddress(convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性是否是邮箱地址 + * + * @param 异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public StringPropertyValidator emailAddress(Supplier e) { + return emailAddress(convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性是否是邮箱地址 + * + * @param 异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator emailAddress( - Function exceptionCreator) { - return matches(PatternConsts.EMAIL, exceptionCreator); + Function e) { + return matches(PatternConsts.EMAIL, e); } // ================================ @@ -207,21 +360,46 @@ public class StringPropertyValidator extends BaseComparablePropertyValidator< // #region - notEmpty // ================================ + /** + * 添加一条校验属性的规则,校验字符串属性是否不为空 + * + * @return 属性校验器 + */ public StringPropertyValidator notEmpty() { return notEmpty("The input must not be empty."); } + /** + * 添加一条校验属性的规则,校验字符串属性是否不为空 + * + * @param errMsg 异常信息 + * @return 属性校验器 + */ public StringPropertyValidator notEmpty(String errMsg) { - return notEmpty(convertExceptionCreator(errMsg)); + return notEmpty(convertToExceptionFunction(errMsg)); } - public StringPropertyValidator notEmpty(Supplier exceptionCreator) { - return notEmpty(convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验字符串属性是否不为空 + * + * @param 异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ + public StringPropertyValidator notEmpty(Supplier e) { + return notEmpty(convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验字符串属性是否不为空 + * + * @param 异常类型 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator notEmpty( - Function exceptionCreator) { - withRule(s -> s != null && !s.isEmpty(), exceptionCreator); + Function e) { + withRule(s -> s != null && !s.isEmpty(), e); return this; } @@ -233,20 +411,41 @@ public class StringPropertyValidator extends BaseComparablePropertyValidator< // #region - length // ================================ + /** + * 添加一条校验属性的规则,校验属性长度是否等于指定长度 + * + * @param length 指定长度 + * @param errMsg 异常信息 + * @return 属性校验器 + */ public StringPropertyValidator length(int length, String errMsg) { - return length(length, convertExceptionCreator(errMsg)); + return length(length, convertToExceptionFunction(errMsg)); } - public StringPropertyValidator length(int length, - Supplier exceptionCreator) { - return length(length, convertExceptionCreator(exceptionCreator)); + /** + * 添加一条校验属性的规则,校验属性长度是否等于指定长度 + * + * @param 异常类型 + * @param length 指定长度 + * @param e 自定义异常 + * @return 属性校验器 + */ + public StringPropertyValidator length(int length, Supplier e) { + return length(length, convertToExceptionFunction(e)); } - public StringPropertyValidator length(int length, - Function exceptionCreator) { + /** + * 添加一条校验属性的规则,校验属性长度是否等于指定长度 + * + * @param 异常类型 + * @param length 指定长度 + * @param e 自定义异常 + * @return 属性校验器 + */ + public StringPropertyValidator length(int length, Function e) { AssertTools.checkArgument(length >= 0, "The expected length must be greater than or equal to 0."); - withRule(s -> s == null || s.length() == length, exceptionCreator); + withRule(s -> s == null || s.length() == length, e); return this; } @@ -258,20 +457,44 @@ public class StringPropertyValidator extends BaseComparablePropertyValidator< return len >= min && len <= max; } + /** + * 添加一条校验属性的规则,校验属性的长度范围 + * + * @param min 最小长度 + * @param max 最大长度 + * @param errMsg 错误信息 + * @return 属性校验器 + */ public StringPropertyValidator length(int min, int max, String errMsg) { - return length(min, max, convertExceptionCreator(errMsg)); + return length(min, max, convertToExceptionFunction(errMsg)); } + /** + * 添加一条校验属性的规则,校验属性的长度范围 + * + * @param min 最小长度 + * @param max 最大长度 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator length(int min, int max, - Supplier exceptionCreator) { - return length(min, max, convertExceptionCreator(exceptionCreator)); + Supplier e) { + return length(min, max, convertToExceptionFunction(e)); } + /** + * 添加一条校验属性的规则,校验属性的长度范围 + * + * @param min 最小长度 + * @param max 最大长度 + * @param e 自定义异常 + * @return 属性校验器 + */ public StringPropertyValidator length(int min, int max, - Function exceptionCreator) { + Function e) { AssertTools.checkArgument(min >= 0, "min must be non-negative."); AssertTools.checkArgument(min <= max, "min must be less than or equal to max."); - withRule(s -> length(s, min, max), exceptionCreator); + withRule(s -> length(s, min, max), e); return this; } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToBoolObjectFunction.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToBoolObjectFunction.java index f5e40c7..4237be4 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToBoolObjectFunction.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToBoolObjectFunction.java @@ -18,6 +18,11 @@ package xyz.zhouxy.plusone.validator.function; import java.io.Serializable; import java.util.function.Function; +/** + * Function<T, Boolean> + * + * @author ZhouXY + */ @FunctionalInterface public interface ToBoolObjectFunction extends Function, Serializable { } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToDoubleObjectFunction.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToDoubleObjectFunction.java index 318e903..65707e2 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToDoubleObjectFunction.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToDoubleObjectFunction.java @@ -18,6 +18,11 @@ package xyz.zhouxy.plusone.validator.function; import java.io.Serializable; import java.util.function.Function; +/** + * Function<T, Double> + * + * @author ZhouXY + */ @FunctionalInterface public interface ToDoubleObjectFunction extends Function, Serializable { } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToIntegerFunction.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToIntegerFunction.java index 8b6c7f6..8ed42d7 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToIntegerFunction.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToIntegerFunction.java @@ -18,6 +18,11 @@ package xyz.zhouxy.plusone.validator.function; import java.io.Serializable; import java.util.function.Function; +/** + * Function<T, Integer> + * + * @author ZhouXY + */ @FunctionalInterface public interface ToIntegerFunction extends Function, Serializable { } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToLongObjectFunction.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToLongObjectFunction.java index 3965286..2b0e458 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToLongObjectFunction.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToLongObjectFunction.java @@ -18,6 +18,11 @@ package xyz.zhouxy.plusone.validator.function; import java.io.Serializable; import java.util.function.Function; +/** + * Function<T, Long> + * + * @author ZhouXY + */ @FunctionalInterface public interface ToLongObjectFunction extends Function, Serializable { } diff --git a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToStringFunction.java b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToStringFunction.java index ba5a37c..833b4a9 100644 --- a/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToStringFunction.java +++ b/plusone-validator/src/main/java/xyz/zhouxy/plusone/validator/function/ToStringFunction.java @@ -18,6 +18,11 @@ package xyz.zhouxy.plusone.validator.function; import java.io.Serializable; import java.util.function.Function; +/** + * Function<T, String> + * + * @author ZhouXY + */ @FunctionalInterface public interface ToStringFunction extends Function, Serializable { }