refactor: 修改项目结构,创建 plusone-validator-parent,将 plusone-validator 作为其 module

创建 `plusone-validator-parent`,将 `plusone-validator` 作为其 module,
方便后续在 `plusone-validator-parent` 下创建测试等相关子模块。

删除 `commons-lang3`,用 `plusone-commons` 的 `StringTools` 替代 `commons-lang3` 的 `StringUtils`。

补充测试依赖 `junit-jupiter-engine`。
This commit is contained in:
zhouxy108 2025-05-08 23:25:48 +08:00
parent 6d5cad48e2
commit 818c8fb26f
21 changed files with 64 additions and 33 deletions

View File

@ -11,5 +11,5 @@ charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.xml]
[*.{xml,yaml,yml}]
indent_size = 2

45
plusone-validator/pom.xml Normal file
View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>xyz.zhouxy.plusone</groupId>
<artifactId>plusone-validator-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>plusone-validator</artifactId>
<name>plusone-validator</name>
<url>http://zhouxy.xyz</url>
<description>
Plusone Validator 是一个参数校验框架,可针对 DTO 创建对应的校验器,并复用该校验器实例,对 DTO 进行校验。
</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<dependencies>
<dependency>
<groupId>xyz.zhouxy.plusone</groupId>
<artifactId>plusone-commons</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@ -8,10 +8,10 @@ import java.util.Map;
import java.util.Objects;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Test;
import xyz.zhouxy.plusone.commons.constant.PatternConsts;
import xyz.zhouxy.plusone.commons.util.StringTools;
import xyz.zhouxy.plusone.validator.MapValidator;
public //
@ -80,7 +80,7 @@ class ParamsValidator extends MapValidator<String, Object> {
this.<String>ruleForCollection(ROLE_LIST)
.notEmpty("角色列表不能为空!")
.withRule(l -> l.stream().allMatch(StringUtils::isNotBlank),
.withRule(l -> l.stream().allMatch(StringTools::isNotBlank),
() -> new IllegalArgumentException("角色标识不能为空!"));
}
}

View File

@ -5,7 +5,6 @@ import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Test;
import com.google.common.collect.Range;
@ -13,6 +12,7 @@ import com.google.common.collect.Range;
import xyz.zhouxy.plusone.commons.constant.PatternConsts;
import xyz.zhouxy.plusone.commons.function.PredicateTools;
import xyz.zhouxy.plusone.commons.util.RegexTools;
import xyz.zhouxy.plusone.commons.util.StringTools;
import xyz.zhouxy.plusone.validator.BaseValidator;
import xyz.zhouxy.plusone.validator.ValidTools;
@ -38,8 +38,8 @@ class BaseValidatorTest {
ruleForString(RegisterCommand::getUsername)
.isTrue(PredicateTools.<String>from(Objects::nonNull)
.and(StringUtils::isNotEmpty)
.and(StringUtils::isNotBlank)
.and(StringTools::isNotEmpty)
.and(StringTools::isNotBlank)
.and(username -> RegexTools.matches(username, PatternConsts.USERNAME)),
username -> new IllegalArgumentException(String.format("用户名【%s】不符合规范", username)));
ruleForString(RegisterCommand::getAccount)

View File

@ -7,13 +7,13 @@ import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Test;
import xyz.zhouxy.plusone.commons.collection.CollectionTools;
import xyz.zhouxy.plusone.commons.function.PredicateTools;
import xyz.zhouxy.plusone.commons.util.AssertTools;
import xyz.zhouxy.plusone.commons.util.RegexTools;
import xyz.zhouxy.plusone.commons.util.StringTools;
import xyz.zhouxy.plusone.validator.Validator;
class ValidatorTests {
@ -29,8 +29,8 @@ class ValidatorTests {
.addRule(command -> {
String username = command.getUsername();
return Objects.nonNull(username)
&& StringUtils.isNotEmpty(username)
&& StringUtils.isNotBlank(username)
&& StringTools.isNotEmpty(username)
&& StringTools.isNotBlank(username)
&& RegexTools.matches(username, USERNAME);
}, command -> new IllegalArgumentException(String.format("用户名【%s】不符合规范", command.getUsername())))
// 传入 predicate error message
@ -48,7 +48,7 @@ class ValidatorTests {
// 传入 rule
.addRule(command -> {
String password = command.getPassword();
AssertTools.checkArgument(StringUtils.isNotEmpty(password), "密码不能为空");
AssertTools.checkArgument(StringTools.isNotEmpty(password), "密码不能为空");
AssertTools.checkArgument(RegexTools.matches(password, PASSWORD), "密码不符合规范");
})
// 传入 predicate Supplier<E extends RuntimeException>

32
pom.xml
View File

@ -5,20 +5,24 @@
<modelVersion>4.0.0</modelVersion>
<groupId>xyz.zhouxy.plusone</groupId>
<artifactId>plusone-validator</artifactId>
<artifactId>plusone-validator-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>plusone-validator</name>
<name>plusone-validator-parent</name>
<url>http://zhouxy.xyz</url>
<packaging>pom</packaging>
<modules>
<module>plusone-validator</module>
</modules>
<description>
参数校验器
Plusone Validator 是一个参数校验框架,可针对 DTO 创建对应的校验,并复用该校验器实例,对 DTO 进行校验。
</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<dependencyManagement>
@ -33,24 +37,6 @@
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>xyz.zhouxy.plusone</groupId>
<artifactId>plusone-commons</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<pluginManagement>