From 2977c9a7fb8dafb1a245065798eb3b0cc1d75a85 Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Fri, 25 Jul 2025 10:57:47 +0800 Subject: [PATCH] =?UTF-8?q?refactor!:=20=E4=BC=98=E5=8C=96=E4=BA=8C?= =?UTF-8?q?=E5=85=83=E7=BB=84=E6=A0=A1=E9=AA=8C=E7=9A=84=20API=20=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plusone/validator/BaseValidator.java | 19 +++++++++++-------- .../plusone/validator/MapValidator.java | 17 ++++++++--------- .../validator/PairPropertyValidatorTests.java | 11 ++++++----- 3 files changed, 25 insertions(+), 22 deletions(-) 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 8ee57b2..b35eb58 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 @@ -281,8 +281,12 @@ public abstract class BaseValidator implements IValidator { * @param 第二个元素的类型 * @param getter 根据对象构造一个二元组,通常是两个属性的值。 * @return {@code PairPropertyValidator}。用于添加针对该二元组的校验规则。 + * + * @deprecated 请使用 {@link #ruleFor(Function, Function)} 代替。 */ - protected final PairPropertyValidator ruleForPair(Function> getter) { + @Deprecated + protected final PairPropertyValidator ruleForPair( // NOSONAR + Function> getter) { PairPropertyValidator validator = new PairPropertyValidator<>(getter); this.rules.add(validator::validate); return validator; @@ -291,15 +295,14 @@ public abstract class BaseValidator implements IValidator { /** * 添加一个针对二元组的校验器 * - * @param 第一个元素的类型 - * @param 第二个元素的类型 - * @param v1Getter 用于从目标对象获取第一个元素的函数式接口。示例:{@code Person::getName1}。 - * @param v2Getter 用于从目标对象获取第二个元素的函数式接口。示例:{@code Person::getName2}。 + * @param 第1个元素的类型 + * @param 第2个元素的类型 + * @param v1Getter 用于从目标对象获取第1个元素的函数式接口。示例:{@code Person::getName1}。 + * @param v2Getter 用于从目标对象获取第2个元素的函数式接口。示例:{@code Person::getName2}。 * @return {@code PairPropertyValidator}。用于添加针对该二元组的校验规则。 */ - protected final PairPropertyValidator ruleForPair( - Function v1Getter, - Function v2Getter) { + protected final PairPropertyValidator ruleFor( + Function v1Getter, Function v2Getter) { PairPropertyValidator validator = new PairPropertyValidator<>( t -> new SimpleImmutableEntry<>(v1Getter.apply(t), v2Getter.apply(t))); this.rules.add(validator::validate); 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 859ea8e..4cbb010 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 @@ -16,11 +16,9 @@ package xyz.zhouxy.plusone.validator; -import java.util.AbstractMap.SimpleImmutableEntry; import java.util.Arrays; import java.util.Collection; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; @@ -196,18 +194,19 @@ public abstract class MapValidator extends BaseValidator> { /** * 添加一个属性校验器,对指定的两个 key 对应的 value 进行校验 - * @param 第一个属性的类型 - * @param 第二个属性的类型 - * @param k1 第一个 key - * @param k2 第二个 key + * @param 第1个属性的类型 + * @param 第2个属性的类型 + * @param k1 第1个 key + * @param k2 第2个 key * @return 属性校验器 */ protected final PairPropertyValidator, V1, V2> ruleForPair(K k1, K k2) { @SuppressWarnings("unchecked") - Function, Entry> getter = m -> - new SimpleImmutableEntry<>((V1) m.get(k1), (V2) m.get(k2)); - return ruleForPair(getter); + final Function, V1> v1Getter = m -> (V1) m.get(k1); + @SuppressWarnings("unchecked") + final Function, V2> v2Getter = m -> (V2) m.get(k2); + return ruleFor(v1Getter, v2Getter); } // ================================ diff --git a/plusone-validator/src/test/java/xyz/zhouxy/plusone/example/validator/PairPropertyValidatorTests.java b/plusone-validator/src/test/java/xyz/zhouxy/plusone/example/validator/PairPropertyValidatorTests.java index 8396c1a..791a64a 100644 --- a/plusone-validator/src/test/java/xyz/zhouxy/plusone/example/validator/PairPropertyValidatorTests.java +++ b/plusone-validator/src/test/java/xyz/zhouxy/plusone/example/validator/PairPropertyValidatorTests.java @@ -31,6 +31,7 @@ import xyz.zhouxy.plusone.validator.BaseValidator; import xyz.zhouxy.plusone.validator.IValidator; import xyz.zhouxy.plusone.validator.ValidationException; +@SuppressWarnings("deprecation") public class PairPropertyValidatorTests { static final String MESSAGE = "Validation failed."; @@ -57,7 +58,7 @@ public class PairPropertyValidatorTests { IValidator validator2 = new BaseValidator() { { - ruleForPair(ExampleCommand::getStringProperty, ExampleCommand::getIntProperty) + ruleFor(ExampleCommand::getStringProperty, ExampleCommand::getIntProperty) .must((str, intValue) -> Objects.equals(str, intValue.toString())) .must((str, intValue) -> Objects.equals(str, intValue.toString()), MESSAGE) .must((str, intValue) -> Objects.equals(str, intValue.toString()), () -> ExampleException.withMessage(MESSAGE)) @@ -83,7 +84,7 @@ public class PairPropertyValidatorTests { IValidator validator2 = new BaseValidator() { { - ruleForPair(ExampleCommand::getStringProperty, ExampleCommand::getIntProperty) + ruleFor(ExampleCommand::getStringProperty, ExampleCommand::getIntProperty) .must((str, intValue) -> Objects.equals(str, intValue.toString())); } }; @@ -106,7 +107,7 @@ public class PairPropertyValidatorTests { IValidator validator2 = new BaseValidator() { { - ruleForPair(ExampleCommand::getStringProperty, ExampleCommand::getIntProperty) + ruleFor(ExampleCommand::getStringProperty, ExampleCommand::getIntProperty) .must((str, intValue) -> Objects.equals(str, intValue.toString()), MESSAGE); } }; @@ -129,7 +130,7 @@ public class PairPropertyValidatorTests { IValidator validator2 = new BaseValidator() { { - ruleForPair(ExampleCommand::getStringProperty, ExampleCommand::getIntProperty) + ruleFor(ExampleCommand::getStringProperty, ExampleCommand::getIntProperty) .must((str, intValue) -> Objects.equals(str, intValue.toString()), () -> ExampleException.withMessage(MESSAGE)); } }; @@ -153,7 +154,7 @@ public class PairPropertyValidatorTests { IValidator validator2 = new BaseValidator() { { - ruleForPair(ExampleCommand::getStringProperty, ExampleCommand::getIntProperty) + ruleFor(ExampleCommand::getStringProperty, ExampleCommand::getIntProperty) .must((str, intValue) -> Objects.equals(str, intValue.toString()), (str, intValue) -> ExampleException.withMessage("Validation failed: ('%s', %d).", str, intValue)); }