diff --git a/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelAssertTestBean.java b/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelAssertTestBean.java index cc3a733..a2ede48 100644 --- a/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelAssertTestBean.java +++ b/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelAssertTestBean.java @@ -1,7 +1,6 @@ package cn.sticki.spel.validator.javax.bean; import cn.sticki.spel.validator.core.constrain.SpelAssert; -import cn.sticki.spel.validator.javax.SpelValid; import cn.sticki.spel.validator.javax.util.ID; import cn.sticki.spel.validator.javax.util.VerifyFailedField; import cn.sticki.spel.validator.javax.util.VerifyObject; @@ -19,36 +18,6 @@ */ public class SpelAssertTestBean { - @Data - @SpelValid(spelGroups = "#this.group") - public static class ParamTestBean implements ID { - - private int id; - - @SpelAssert(condition = "false", assertTrue = "false") - private Integer test; - - @SpelAssert(condition = "true", assertTrue = "false ") - private List test2; - - @SpelAssert(condition = "true") - private Double test3; - - @SpelAssert(assertTrue = "#this.test4 == 'test4'", message = "test4") - private String test4; - - private String group; - - @SpelAssert(assertTrue = "false", message = "group1", group = "'group1'") - private Boolean test5; - - private String group2 = "group2"; - - @SpelAssert(assertTrue = "false", message = "group2", group = "#this.group2") - private Boolean test6; - - } - public static List paramTestCase() { ArrayList list = new ArrayList<>(); @@ -68,7 +37,7 @@ public static List paramTestCase() { bean2, VerifyFailedField.of(ParamTestBean::getTest2), VerifyFailedField.of(ParamTestBean::getTest5, "group1") - )); + ).setGroups("#this.group")); ParamTestBean bean3 = new ParamTestBean(); bean3.setId(3); @@ -77,7 +46,7 @@ public static List paramTestCase() { list.add(VerifyObject.of( bean3, VerifyFailedField.of(ParamTestBean::getTest2) - )); + ).setGroups("#this.group")); ParamTestBean bean4 = new ParamTestBean(); bean4.setId(4); @@ -88,13 +57,43 @@ public static List paramTestCase() { VerifyFailedField.of(ParamTestBean::getTest2), VerifyFailedField.of(ParamTestBean::getTest4, "test4"), VerifyFailedField.of(ParamTestBean::getTest6, "group2") - )); + ).setGroups("#this.group")); return list; } @Data - @SpelValid + // @SpelValid(spelGroups = "#this.group") + public static class ParamTestBean implements ID { + + private int id; + + @SpelAssert(condition = "false", assertTrue = "false") + private Integer test; + + @SpelAssert(condition = "true", assertTrue = "false ") + private List test2; + + @SpelAssert(condition = "true") + private Double test3; + + @SpelAssert(assertTrue = "#this.test4 == 'test4'", message = "test4") + private String test4; + + private String group; + + @SpelAssert(assertTrue = "false", message = "group1", group = "'group1'") + private Boolean test5; + + private String group2 = "group2"; + + @SpelAssert(assertTrue = "false", message = "group2", group = "#this.group2") + private Boolean test6; + + } + + @Data + // @SpelValid public static class EmptyTestBean { @SpelAssert(condition = "true", assertTrue = "") diff --git a/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelMaxTestBean.java b/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelMaxTestBean.java index 23baf63..f12bf85 100644 --- a/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelMaxTestBean.java +++ b/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelMaxTestBean.java @@ -1,7 +1,6 @@ package cn.sticki.spel.validator.javax.bean; import cn.sticki.spel.validator.core.constrain.SpelMax; -import cn.sticki.spel.validator.javax.SpelValid; import cn.sticki.spel.validator.javax.util.ID; import cn.sticki.spel.validator.javax.util.VerifyFailedField; import cn.sticki.spel.validator.javax.util.VerifyObject; @@ -27,7 +26,7 @@ public class SpelMaxTestBean { */ @Data @Builder - @SpelValid + // @SpelValid public static class ParamTestBean implements ID { private int id; diff --git a/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelMinTestBean.java b/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelMinTestBean.java index e5c05c2..52650f4 100644 --- a/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelMinTestBean.java +++ b/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/bean/SpelMinTestBean.java @@ -1,7 +1,6 @@ package cn.sticki.spel.validator.javax.bean; import cn.sticki.spel.validator.core.constrain.SpelMin; -import cn.sticki.spel.validator.javax.SpelValid; import cn.sticki.spel.validator.javax.util.ID; import cn.sticki.spel.validator.javax.util.VerifyFailedField; import cn.sticki.spel.validator.javax.util.VerifyObject; @@ -27,7 +26,7 @@ public class SpelMinTestBean { */ @Data @Builder - @SpelValid + // @SpelValid public static class ParamTestBean implements ID { private int id; @@ -164,7 +163,7 @@ public static List paramTestCase() { */ @Data @Builder - @SpelValid + // @SpelValid public static class RepeatableTestBean implements ID { private int id; @@ -240,7 +239,7 @@ public static List repeatableTestCase() { */ @Data @Builder - @SpelValid + // @SpelValid public static class ParamTestBean2 implements ID { private int id; @@ -311,7 +310,7 @@ public static List paramTest2Case() { */ @Data @Builder - @SpelValid + // @SpelValid public static class ValueTypeTestBean implements ID { private int id; @@ -513,7 +512,7 @@ public static List valueTypeTestCase() { */ @Data @Builder - @SpelValid + // @SpelValid public static class NotSupportValueTypeTestBean implements ID { private int id; diff --git a/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/util/ValidateUtil.java b/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/util/ValidateUtil.java index e08964a..92fa35c 100644 --- a/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/util/ValidateUtil.java +++ b/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/util/ValidateUtil.java @@ -9,6 +9,7 @@ import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Set; @@ -34,11 +35,12 @@ public class ValidateUtil { * * @return 校验结果 */ - public static ObjectValidResult validate(Object obj) { + public static ObjectValidResult validate(Object obj, String[] spelGroups) { // 如果对象没有使用 SpelValid 注解,则直接调用验证执行器进行验证 // 这种情况下,只会验证本框架提供的约束注解 if (!obj.getClass().isAnnotationPresent(SpelValid.class)) { - return SpelValidExecutor.validateObject(obj); + Set collect = Arrays.stream(spelGroups).collect(Collectors.toSet()); + return SpelValidExecutor.validateObject(obj, collect); } // 通过 @Valid 的方式进行验证 @@ -74,6 +76,7 @@ public static boolean checkConstraintResult(List verifyObjectList) */ public static boolean checkConstraintResult(VerifyObject verifyObject) { Object object = verifyObject.getObject(); + String[] spelGroups = verifyObject.getSpelGroups(); Collection verifyFailedFields = verifyObject.getVerifyFailedFields(); boolean expectException = verifyObject.isExpectException(); @@ -84,7 +87,7 @@ public static boolean checkConstraintResult(VerifyObject verifyObject) { int failCount = 0; try { // 执行约束校验 - ObjectValidResult validResult = ValidateUtil.validate(object); + ObjectValidResult validResult = ValidateUtil.validate(object, spelGroups); failCount += processVerifyResult(verifyFailedFields, ConstraintViolationSet.of(validResult.getErrors())); } catch (Exception e) { if (expectException) { @@ -164,5 +167,4 @@ private static int processVerifyResult(Collection verifyFaile return failCount; } - } diff --git a/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/util/VerifyObject.java b/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/util/VerifyObject.java index bc4939f..213a039 100644 --- a/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/util/VerifyObject.java +++ b/spel-validator-javax/src/test/java/cn/sticki/spel/validator/javax/util/VerifyObject.java @@ -1,6 +1,7 @@ package cn.sticki.spel.validator.javax.util; import lombok.Data; +import org.intellij.lang.annotations.Language; import java.util.Arrays; import java.util.Collection; @@ -30,6 +31,12 @@ public class VerifyObject { */ private boolean expectException; + /** + * spel 分组参数,当未使用 @SpelValid 注解时,该参数生效 + */ + @Language("spel") + private String[] spelGroups; + private VerifyObject() { } @@ -107,4 +114,9 @@ public static VerifyObject of(Object object, Collection verif return verifyObject; } + public VerifyObject setGroups(@Language("spel") String... spelGroups) { + this.spelGroups = spelGroups; + return this; + } + }