diff --git a/pom.xml b/pom.xml
index d16ac36..2ed5b0e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,19 +6,35 @@
xyz.zhouxy.plusone
plusone-commons
- 1.0.0-RC2
+ 1.0.0-RC3
+
UTF-8
1.8
1.8
1.8
- 3.17.0
- 33.3.1-jre
+
+
+ 33.4.0-jre
2.13.0
+
+
+ 3.17.0
+ 1.2.13
+ 5.11.4
+ 1.18.36
+ 5.8.35
+ 3.5.19
+ 2.2.224
+ 2.18.2
+ 2.12.1
+
+
+
com.google.guava
guava
@@ -32,7 +48,7 @@
true
-
+
org.apache.commons
@@ -44,55 +60,55 @@
ch.qos.logback
logback-classic
- 1.2.11
+ ${logback.version}
test
org.junit.jupiter
junit-jupiter-api
- 5.9.2
+ ${junit.version}
test
org.junit.jupiter
junit-jupiter-engine
- 5.9.2
+ ${junit.version}
test
org.junit.jupiter
junit-jupiter-params
- 5.9.2
+ ${junit.version}
test
org.projectlombok
lombok
- 1.18.26
+ ${lombok.version}
true
test
cn.hutool
- hutool-all
- 5.8.25
+ hutool-core
+ ${hutool.version}
test
org.mybatis
mybatis
- 3.5.17
+ ${mybatis.version}
test
com.h2database
h2
- 2.2.224
+ ${h2.version}
test
@@ -100,20 +116,20 @@
com.fasterxml.jackson.core
jackson-databind
- 2.13.5
+ ${jackson.version}
test
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
- 2.13.5
+ ${jackson.version}
test
com.google.code.gson
gson
- 2.11.0
+ ${gson.version}
test
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/annotation/ReaderMethod.java b/src/main/java/xyz/zhouxy/plusone/commons/annotation/ReaderMethod.java
index 2b84d99..8504f0c 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/annotation/ReaderMethod.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/annotation/ReaderMethod.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@ import java.lang.annotation.Target;
*
* @author ZhouXY
* @since 1.0
+ * @see WriterMethod
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/annotation/Virtual.java b/src/main/java/xyz/zhouxy/plusone/commons/annotation/Virtual.java
index 65fd6d2..3302ded 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/annotation/Virtual.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/annotation/Virtual.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,9 +22,9 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
- * 标识该方法是可虚方法。
+ * 标识该方法是虚方法。
* 该注解用于提醒、强调父类虽然有默认实现,但子类可以根据自己的需要覆写。
- *
+ *
* @author ZhouXY
* @since 0.1.0
*/
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/annotation/WriterMethod.java b/src/main/java/xyz/zhouxy/plusone/commons/annotation/WriterMethod.java
index 518217d..f2aa0fb 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/annotation/WriterMethod.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/annotation/WriterMethod.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@ import java.lang.annotation.Target;
*
* @author ZhouXY
* @since 1.0
+ * @see ReaderMethod
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/collection/CollectionTools.java b/src/main/java/xyz/zhouxy/plusone/commons/collection/CollectionTools.java
index f5e671b..2f0c776 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/collection/CollectionTools.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/collection/CollectionTools.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,6 +25,11 @@ import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multiset;
+import com.google.common.collect.RangeSet;
+import com.google.common.collect.Table;
+
/**
* 集合工具类
*
@@ -33,9 +38,9 @@ import javax.annotation.Nullable;
*/
public class CollectionTools {
- // TODO [添加] 新增其它集合类型,如 guava 的扩展集合等
-
- // isEmpty
+ // ================================
+ // #region - isEmpty
+ // ================================
public static boolean isEmpty(@Nullable Collection> collection) {
return collection == null || collection.isEmpty();
@@ -45,7 +50,29 @@ public class CollectionTools {
return map == null || map.isEmpty();
}
- // isNotEmpty
+ public static boolean isEmpty(@Nullable Table, ?, ?> table) {
+ return table == null || table.isEmpty();
+ }
+
+ public static boolean isEmpty(@Nullable Multimap, ?> map) {
+ return map == null || map.isEmpty();
+ }
+
+ public static boolean isEmpty(@Nullable Multiset> set) {
+ return set == null || set.isEmpty();
+ }
+
+ public static boolean isEmpty(@Nullable RangeSet> set) {
+ return set == null || set.isEmpty();
+ }
+
+ // ================================
+ // #endregion - isEmpty
+ // ================================
+
+ // ================================
+ // #region - isNotEmpty
+ // ================================
public static boolean isNotEmpty(@Nullable Collection> collection) {
return collection != null && !collection.isEmpty();
@@ -55,6 +82,30 @@ public class CollectionTools {
return map != null && !map.isEmpty();
}
+ public static boolean isNotEmpty(@Nullable Table, ?, ?> table) {
+ return table != null && !table.isEmpty();
+ }
+
+ public static boolean isNotEmpty(@Nullable Multimap, ?> map) {
+ return map != null && !map.isEmpty();
+ }
+
+ public static boolean isNotEmpty(@Nullable Multiset> set) {
+ return set != null && !set.isEmpty();
+ }
+
+ public static boolean isNotEmpty(@Nullable RangeSet> set) {
+ return set != null && !set.isEmpty();
+ }
+
+ // ================================
+ // #endregion - isNotEmpty
+ // ================================
+
+ // ================================
+ // #region - nullToEmpty
+ // ================================
+
@Nonnull
public static List nullToEmptyList(@Nullable List list) {
return list == null ? Collections.emptyList() : list;
@@ -70,6 +121,10 @@ public class CollectionTools {
return map == null ? Collections.emptyMap() : map;
}
+ // ================================
+ // #endregion - nullToEmpty
+ // ================================
+
private CollectionTools() {
throw new IllegalStateException("Utility class");
}
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/exception/ExceptionType.java b/src/main/java/xyz/zhouxy/plusone/commons/exception/MultiTypesException.java
similarity index 53%
rename from src/main/java/xyz/zhouxy/plusone/commons/exception/ExceptionType.java
rename to src/main/java/xyz/zhouxy/plusone/commons/exception/MultiTypesException.java
index f8ad83b..60156c7 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/exception/ExceptionType.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/exception/MultiTypesException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,30 +20,45 @@ import javax.annotation.Nonnull;
import xyz.zhouxy.plusone.commons.base.IWithCode;
/**
- * 异常类型
+ * MultiTypesException
*
*
- * 异常在不同场景下被抛出,可以用不同的枚举值,表示不同的异常类型。
- * 该枚举实现本接口,用于基于不同类型创建异常。
+ * 异常在不同场景下被抛出,可以用不同的枚举值,表示不同的场景类型。
+ *
+ *
+ * 异常实现 {@link MultiTypesException} 的 {@link #getType} 方法,返回对应的场景类型。
+ *
+ *
+ * 表示场景类型的枚举实现 {@link ExceptionType},其中的工厂方法用于创建类型对象。
+ *
*
*
- * public final class LoginException extends RuntimeException {
+ * public final class LoginException
+ * extends RuntimeException
+ * implements MultiTypesException<LoginException, LoginException.Type> {
* private final Type type;
- * private LoginException(Type type, String message) {
+ * private LoginException(@Nonnull Type type, @Nonnull String message) {
* super(message);
* this.type = type;
* }
*
- * private LoginException(Type type, Throwable cause) {
+ * private LoginException(@Nonnull Type type, @Nonnull Throwable cause) {
* super(cause);
* this.type = type;
* }
*
- * private LoginException(Type type, String message, Throwable cause) {
+ * private LoginException(@Nonnull Type type,
+ * @Nonnull String message,
+ * @Nonnull Throwable cause) {
* super(message, cause);
* this.type = type;
* }
*
+ * @Override
+ * public @Nonnull Type getType() {
+ * return this.type;
+ * }
+ *
* // ...
*
* public enum Type implements ExceptionType {
@@ -60,43 +75,38 @@ import xyz.zhouxy.plusone.commons.base.IWithCode;
* @Nonnull
* private final String defaultMessage;
*
- * Type(String code, String defaultMessage) {
+ * Type(@Nonnull String code, @Nonnull String defaultMessage) {
* this.code = code;
* this.defaultMessage = defaultMessage;
* }
*
* @Override
- * @Nonnull
- * public String getCode() {
+ * public @Nonnull String getCode() {
* return code;
* }
*
* @Override
- * public String getDefaultMessage() {
+ * public @Nonnull String getDefaultMessage() {
* return defaultMessage;
* }
*
* @Override
- * @Nonnull
- * public LoginException create() {
+ * public @Nonnull LoginException create() {
* return new LoginException(this, this.defaultMessage);
* }
*
* @Override
- * @Nonnull
- * public LoginException create(String message) {
+ * public @Nonnull LoginException create(String message) {
* return new LoginException(this, message);
* }
*
* @Override
- * @Nonnull
- * public LoginException create(Throwable cause) {
+ * public @Nonnull LoginException create(Throwable cause) {
* return new LoginException(this, cause);
* }
*
* @Override
- * @Nonnull
- * public LoginException create(String message, Throwable cause) {
+ * public @Nonnull LoginException create(String message, Throwable cause) {
* return new LoginException(this, message, cause);
* }
* }
@@ -109,22 +119,33 @@ import xyz.zhouxy.plusone.commons.base.IWithCode;
*
*
*
- * @author ZhouXY
+ * @author ZhouXY
+ * @since 1.0.0
*/
-public interface ExceptionType extends IWithCode {
-
- String getDefaultMessage();
+public interface MultiTypesException> {
@Nonnull
- E create();
+ T getType();
- @Nonnull
- E create(String message);
+ default @Nonnull String getTypeCode() {
+ return getType().getCode();
+ }
- @Nonnull
- E create(Throwable cause);
+ public static interface ExceptionType extends IWithCode {
- @Nonnull
- E create(String message, Throwable cause);
+ String getDefaultMessage();
+ @Nonnull
+ E create();
+
+ @Nonnull
+ E create(String message);
+
+ @Nonnull
+ E create(Throwable cause);
+
+ @Nonnull
+ E create(String message, Throwable cause);
+
+ }
}
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java b/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java
index 0a86545..69a1d65 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java
@@ -21,6 +21,7 @@ import java.time.format.DateTimeParseException;
import javax.annotation.Nonnull;
import xyz.zhouxy.plusone.commons.exception.business.RequestParamsException;
+import xyz.zhouxy.plusone.commons.exception.MultiTypesException.ExceptionType;
/**
* 解析失败异常
@@ -37,7 +38,9 @@ import xyz.zhouxy.plusone.commons.exception.business.RequestParamsException;
* @author ZhouXY
* @since 0.1.0
*/
-public final class ParsingFailureException extends RuntimeException {
+public final class ParsingFailureException
+ extends RuntimeException
+ implements MultiTypesException {
private final Type type;
@@ -94,14 +97,12 @@ public final class ParsingFailureException extends RuntimeException {
return Type.NUMBER_PARSING_FAILURE.create(message, cause);
}
+ @Override
+ @Nonnull
public Type getType() {
return type;
}
- public String getCode() {
- return this.type.code;
- }
-
public static final Type DEFAULT = Type.DEFAULT;
public static final Type NUMBER_PARSING_FAILURE = Type.NUMBER_PARSING_FAILURE;
public static final Type DATE_TIME_PARSING_FAILURE = Type.DATE_TIME_PARSING_FAILURE;
@@ -127,37 +128,32 @@ public final class ParsingFailureException extends RuntimeException {
}
@Override
- @Nonnull
- public String getCode() {
+ public @Nonnull String getCode() {
return code;
}
@Override
- public String getDefaultMessage() {
+ public @Nonnull String getDefaultMessage() {
return defaultMessage;
}
@Override
- @Nonnull
- public ParsingFailureException create() {
+ public @Nonnull ParsingFailureException create() {
return new ParsingFailureException(this, this.defaultMessage);
}
@Override
- @Nonnull
- public ParsingFailureException create(String message) {
+ public @Nonnull ParsingFailureException create(String message) {
return new ParsingFailureException(this, message);
}
@Override
- @Nonnull
- public ParsingFailureException create(Throwable cause) {
+ public @Nonnull ParsingFailureException create(Throwable cause) {
return new ParsingFailureException(this, cause);
}
@Override
- @Nonnull
- public ParsingFailureException create(String message, Throwable cause) {
+ public @Nonnull ParsingFailureException create(String message, Throwable cause) {
return new ParsingFailureException(this, message, cause);
}
}
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java b/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java
index aacf7a6..ec4cb55 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java
@@ -18,7 +18,8 @@ package xyz.zhouxy.plusone.commons.exception.business;
import javax.annotation.Nonnull;
-import xyz.zhouxy.plusone.commons.exception.ExceptionType;
+import xyz.zhouxy.plusone.commons.exception.MultiTypesException.ExceptionType;
+import xyz.zhouxy.plusone.commons.exception.MultiTypesException;
/**
* InvalidInputException
@@ -33,7 +34,9 @@ import xyz.zhouxy.plusone.commons.exception.ExceptionType;
* @author ZhouXY
* @since 0.1.0
*/
-public final class InvalidInputException extends RequestParamsException {
+public final class InvalidInputException
+ extends RequestParamsException
+ implements MultiTypesException {
private final Type type;
@@ -73,14 +76,12 @@ public final class InvalidInputException extends RequestParamsException {
this(Type.DEFAULT, message, cause);
}
+ @Override
+ @Nonnull
public Type getType() {
return this.type;
}
- public Object getCode() {
- return this.type.code;
- }
-
public enum Type implements ExceptionType {
DEFAULT("00", "用户输入内容非法"),
CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS("01", "包含非法恶意跳转链接"),
@@ -90,9 +91,9 @@ public final class InvalidInputException extends RequestParamsException {
;
@Nonnull
- final String code;
+ private final String code;
@Nonnull
- final String defaultMessage;
+ private final String defaultMessage;
Type(String code, String defaultMsg) {
this.code = code;
@@ -100,37 +101,32 @@ public final class InvalidInputException extends RequestParamsException {
}
@Override
- @Nonnull
- public String getCode() {
+ public @Nonnull String getCode() {
return code;
}
@Override
- public String getDefaultMessage() {
+ public @Nonnull String getDefaultMessage() {
return defaultMessage;
}
@Override
- @Nonnull
- public InvalidInputException create() {
+ public @Nonnull InvalidInputException create() {
return new InvalidInputException(this);
}
@Override
- @Nonnull
- public InvalidInputException create(String message) {
+ public @Nonnull InvalidInputException create(String message) {
return new InvalidInputException(this, message);
}
@Override
- @Nonnull
- public InvalidInputException create(Throwable cause) {
+ public @Nonnull InvalidInputException create(Throwable cause) {
return new InvalidInputException(this, cause);
}
@Override
- @Nonnull
- public InvalidInputException create(String message, Throwable cause) {
+ public @Nonnull InvalidInputException create(String message, Throwable cause) {
return new InvalidInputException(this, message, cause);
}
}
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponse.java b/src/main/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponse.java
index d33d0df..a4ac327 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponse.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponse.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,109 +17,107 @@
package xyz.zhouxy.plusone.commons.model.dto;
import java.util.Objects;
-import java.util.function.BooleanSupplier;
-import java.util.function.Supplier;
-
import javax.annotation.Nullable;
-import xyz.zhouxy.plusone.commons.util.AssertTools;
-
/**
* 统一结果,对返回给前端的数据进行封装。
*
+ *
+ * SUCCESS: 2000000
+ *
+ *
* @author ZhouXY
*/
-public abstract class UnifiedResponse {
+public class UnifiedResponse {
- private Object status;
+ private String code;
private String message;
- private @Nullable Object data;
+ private @Nullable T data;
- public static UnifiedResponse success() {
- return new SuccessResult();
+ // ================================
+ // #region - Constructors
+ // ================================
+
+ private UnifiedResponse(String code, @Nullable String message) {
+ this(code, message, null);
}
- public static UnifiedResponse success(@Nullable String message) {
- return new SuccessResult(message);
- }
-
- public static UnifiedResponse success(@Nullable String message, @Nullable Object data) {
- return new SuccessResult(message, data);
- }
-
- public static UnifiedResponse error(@Nullable String message) {
- return new ErrorResult(message);
- }
-
- public static UnifiedResponse error(@Nullable String message, @Nullable Object data) {
- return new ErrorResult(message, data);
- }
-
- public static UnifiedResponse error(Object status, @Nullable String message) {
- return new ErrorResult(status, message);
- }
-
- public static UnifiedResponse error(Object status, @Nullable String message, @Nullable Object data) {
- return new ErrorResult(status, message, data);
- }
-
- public static UnifiedResponse error(Object status, Throwable e) {
- return new ErrorResult(status, e);
- }
-
- public static UnifiedResponse of(Object status, @Nullable String message) {
- return new CustomResult(status, message);
- }
-
- public static UnifiedResponse of(Object status, @Nullable String message, @Nullable Object data) {
- return new CustomResult(status, message, data);
- }
-
- public static UnifiedResponse of(final boolean isSuccess,
- final Supplier successResult, final Supplier errorResult) {
- AssertTools.checkNotNull(successResult, "Success supplier must not be null.");
- AssertTools.checkNotNull(errorResult, "Error supplier must not be null.");
- return isSuccess ? successResult.get() : errorResult.get();
- }
-
- public static UnifiedResponse of(final BooleanSupplier isSuccess,
- final Supplier successResult, final Supplier errorResult) {
- AssertTools.checkNotNull(isSuccess, "Conditions for success must not be null.");
- AssertTools.checkNotNull(successResult, "Success supplier must not be null.");
- AssertTools.checkNotNull(errorResult, "Error supplier must not be null.");
- return isSuccess.getAsBoolean() ? successResult.get() : errorResult.get();
- }
-
- protected UnifiedResponse(Object status, @Nullable String message) {
- setStatus(status);
- setMessage(message);
- }
-
- protected UnifiedResponse(Object status, @Nullable String message, @Nullable Object data) {
- setStatus(status);
- setMessage(message);
- setData(data);
- }
-
- private void setStatus(Object status) {
- this.status = Objects.requireNonNull(status);
- }
-
- private void setMessage(@Nullable String message) {
+ private UnifiedResponse(String code, @Nullable String message, @Nullable T data) {
+ this.code = Objects.requireNonNull(code);
this.message = message == null ? "" : message;
- }
-
- private void setData(@Nullable Object data) {
this.data = data;
}
- // Constructors end
+ // ================================
+ // #endregion - Constructors
+ // ================================
- // Getters
+ public static final String SUCCESS_CODE = "2000000";
+ private static final String DEFAULT_SUCCESS_MSG = "SUCCESS";
- public Object getStatus() {
- return status;
+ // ================================
+ // #region - success
+ // ================================
+
+ public static UnifiedResponse success() {
+ return new UnifiedResponse<>(SUCCESS_CODE, DEFAULT_SUCCESS_MSG);
+ }
+
+ public static UnifiedResponse success(@Nullable String message) {
+ return new UnifiedResponse<>(SUCCESS_CODE, message);
+ }
+
+ public static UnifiedResponse success(@Nullable String message, @Nullable T data) {
+ return new UnifiedResponse<>(SUCCESS_CODE, message, data);
+ }
+
+ // ================================
+ // #endregion - success
+ // ================================
+
+ // ================================
+ // #region - error
+ // ================================
+
+ public static UnifiedResponse error(String code, @Nullable String message) {
+ return new UnifiedResponse<>(code, message);
+ }
+
+ public static UnifiedResponse error(String code, @Nullable String message, @Nullable T data) {
+ return new UnifiedResponse<>(code, message, data);
+ }
+
+ public static UnifiedResponse error(String code, Throwable e) {
+ return new UnifiedResponse<>(code, e.getMessage());
+ }
+
+ // ================================
+ // #endregion - error
+ // ================================
+
+ // ================================
+ // #region - of
+ // ================================
+
+ public static UnifiedResponse of(String code, @Nullable String message) {
+ return new UnifiedResponse<>(code, message);
+ }
+
+ public static UnifiedResponse of(String code, @Nullable String message, @Nullable T data) {
+ return new UnifiedResponse<>(code, message, data);
+ }
+
+ // ================================
+ // #endregion - of
+ // ================================
+
+ // ================================
+ // #region - Getters
+ // ================================
+
+ public String getCode() {
+ return code;
}
public String getMessage() {
@@ -127,16 +125,18 @@ public abstract class UnifiedResponse {
}
@Nullable
- public Object getData() {
+ public T getData() {
return data;
}
- // Getters end
+ // ================================
+ // #endregion - Getters
+ // ================================
@Override
public String toString() {
- return String.format("{status: %s, message: \"%s\", data: %s}",
- transValue(this.status), this.message, transValue(this.data));
+ return String.format("{code: \"%s\", message: \"%s\", data: %s}",
+ this.code, this.message, transValue(this.data));
}
private static String transValue(Object value) {
@@ -148,62 +148,4 @@ public abstract class UnifiedResponse {
}
return String.valueOf(value);
}
-
- protected static class SuccessResult extends UnifiedResponse {
- public static final String SUCCESS_STATUS = "2000000";
-
- private static final String DEFAULT_SUCCESS_MSG = "SUCCESS";
-
- SuccessResult() {
- super(SUCCESS_STATUS, DEFAULT_SUCCESS_MSG);
- }
-
- SuccessResult(@Nullable String message) {
- super(SUCCESS_STATUS, message);
- }
-
- SuccessResult(@Nullable String message, @Nullable Object data) {
- super(SUCCESS_STATUS, message, data);
- }
- }
-
- protected static class ErrorResult extends UnifiedResponse {
- public static final String DEFAULT_ERROR_STATUS = "9999999";
-
- ErrorResult(@Nullable String message) {
- super(DEFAULT_ERROR_STATUS, message);
- }
-
- ErrorResult(@Nullable String message, @Nullable Object data) {
- super(DEFAULT_ERROR_STATUS, message, data);
- }
-
- ErrorResult(Object status, @Nullable String message) {
- super(status, message);
- }
-
- ErrorResult(Object status, @Nullable String message, @Nullable Object data) {
- super(status, message, data);
- }
-
- ErrorResult(Object status, Throwable e) {
- super(status, Objects.requireNonNull(e).getMessage());
- }
- }
-
- /**
- * 自定义结果
- *
- * @author ZhouXY
- */
- protected static class CustomResult extends UnifiedResponse {
-
- CustomResult(Object status, @Nullable String message) {
- super(status, message);
- }
-
- CustomResult(Object status, @Nullable String message, @Nullable Object data) {
- super(status, message, data);
- }
- }
}
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/time/YearQuarter.java b/src/main/java/xyz/zhouxy/plusone/commons/time/YearQuarter.java
index 947b065..dfaf3c6 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/time/YearQuarter.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/time/YearQuarter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -281,14 +281,6 @@ public final class YearQuarter implements Comparable, Serializable
return this.compareTo(other) > 0;
}
- public static YearQuarter min(YearQuarter yearQuarter1, YearQuarter yearQuarter2) {
- return yearQuarter1.compareTo(yearQuarter2) <= 0 ? yearQuarter1 : yearQuarter2;
- }
-
- public static YearQuarter max(YearQuarter yearQuarter1, YearQuarter yearQuarter2) {
- return yearQuarter1.compareTo(yearQuarter2) >= 0 ? yearQuarter1 : yearQuarter2;
- }
-
// #endregion
// #region - toString
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/IdGenerator.java b/src/main/java/xyz/zhouxy/plusone/commons/util/IdGenerator.java
index 2bf8276..cd72ac9 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/IdGenerator.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/IdGenerator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,6 +21,8 @@ import java.util.Objects;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
+import javax.annotation.Nonnull;
+
/**
* ID 生成器
*
@@ -30,7 +32,7 @@ import java.util.concurrent.ConcurrentHashMap;
*
* @see UUID
* @see IdWorker
- * @author ZhouXY
+ * @author ZhouXY
*/
public class IdGenerator {
@@ -48,7 +50,7 @@ public class IdGenerator {
return toSimpleString(UUID.randomUUID());
}
- public static String toSimpleString(UUID uuid) {
+ public static String toSimpleString(@Nonnull UUID uuid) {
AssertTools.checkArgument(Objects.nonNull(uuid));
return (uuidDigits(uuid.getMostSignificantBits() >> 32, 8) +
uuidDigits(uuid.getMostSignificantBits() >> 16, 4) +
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/IdWorker.java b/src/main/java/xyz/zhouxy/plusone/commons/util/IdWorker.java
index 20b59bc..4d42af6 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/IdWorker.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/IdWorker.java
@@ -42,7 +42,7 @@ import xyz.zhouxy.plusone.commons.exception.system.NoAvailableMacFoundException;
* 关于若干读者,阅读“改良版雪花算法”后提出的几个共性问题的回复。
*
*
- * @author ZhouXY
+ * @author ZhouXY
*/
public class IdWorker {
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/RandomTools.java b/src/main/java/xyz/zhouxy/plusone/commons/util/RandomTools.java
index 07f54bf..d4b3cef 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/RandomTools.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/RandomTools.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,7 +29,7 @@ import javax.annotation.Nonnull;
*
* 建议调用方自行维护 Random 对象
*
- * @author ZhouXY
+ * @author ZhouXY
*/
public final class RandomTools {
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/TreeBuilder.java b/src/main/java/xyz/zhouxy/plusone/commons/util/TreeBuilder.java
index 10e8e7a..824d645 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/TreeBuilder.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/TreeBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/collection/CollectionToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/collection/CollectionToolsTests.java
index 97fdef5..8362c54 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/collection/CollectionToolsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/collection/CollectionToolsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,14 @@ package xyz.zhouxy.plusone.commons.collection;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.lang.reflect.Constructor;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -30,14 +34,24 @@ import java.util.Set;
import org.junit.jupiter.api.Test;
+import com.google.common.collect.HashBasedTable;
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.HashMultiset;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multiset;
+import com.google.common.collect.Range;
+import com.google.common.collect.RangeSet;
import com.google.common.collect.Sets;
+import com.google.common.collect.Table;
+import com.google.common.collect.TreeRangeSet;
public class CollectionToolsTests {
@Test
void testIsEmpty() {
+ // Collection
List list = new ArrayList<>();
assertTrue(CollectionTools.isEmpty(list));
assertFalse(CollectionTools.isNotEmpty(list));
@@ -46,6 +60,7 @@ public class CollectionToolsTests {
assertFalse(CollectionTools.isEmpty(list));
assertTrue(CollectionTools.isNotEmpty(list));
+ // Map
Map map = new HashMap<>();
assertTrue(CollectionTools.isEmpty(map));
assertFalse(CollectionTools.isNotEmpty(map));
@@ -53,6 +68,43 @@ public class CollectionToolsTests {
map.put("2", 2);
assertFalse(CollectionTools.isEmpty(map));
assertTrue(CollectionTools.isNotEmpty(map));
+
+ // Table
+ Table table = HashBasedTable.create();
+ assertTrue(CollectionTools.isEmpty(table));
+ assertFalse(CollectionTools.isNotEmpty(table));
+
+ table.put("ABC", "d", 4);
+ assertFalse(CollectionTools.isEmpty(table));
+ assertTrue(CollectionTools.isNotEmpty(table));
+
+ // Multimap
+ Multimap multimap = HashMultimap.create();
+ assertTrue(CollectionTools.isEmpty(multimap));
+ assertFalse(CollectionTools.isNotEmpty(multimap));
+
+ multimap.put("ABC", "d");
+ assertFalse(CollectionTools.isEmpty(multimap));
+ assertTrue(CollectionTools.isNotEmpty(multimap));
+
+ // Multiset
+ Multiset multiset = HashMultiset.create();
+ assertTrue(CollectionTools.isEmpty(multiset));
+ assertFalse(CollectionTools.isNotEmpty(multiset));
+
+ multiset.add("ABC");
+ assertFalse(CollectionTools.isEmpty(multiset));
+ assertTrue(CollectionTools.isNotEmpty(multiset));
+
+ // RangeSet
+ RangeSet rangeSet = TreeRangeSet.create();
+ assertTrue(CollectionTools.isEmpty(rangeSet));
+ assertFalse(CollectionTools.isNotEmpty(rangeSet));
+
+ rangeSet.add(Range.closed(0, 100));
+ rangeSet.add(Range.openClosed(100, 200));
+ assertFalse(CollectionTools.isEmpty(rangeSet));
+ assertTrue(CollectionTools.isNotEmpty(rangeSet));
}
@Test
@@ -69,4 +121,18 @@ public class CollectionToolsTests {
assertSame(map, CollectionTools.nullToEmptyMap(map));
assertEquals(Collections.emptyMap(), CollectionTools.nullToEmptyMap(null));
}
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = CollectionTools.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/constant/PatternConstsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/constant/PatternConstsTests.java
index 88304d6..5a216a4 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/constant/PatternConstsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/constant/PatternConstsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,8 @@ package xyz.zhouxy.plusone.commons.constant;
import static org.junit.jupiter.api.Assertions.*;
+import java.lang.reflect.Constructor;
+import java.util.Arrays;
import java.util.regex.Matcher;
import org.junit.jupiter.api.Test;
@@ -232,4 +234,38 @@ class PatternConstsTests {
// ================================
// #endregion - Chinese2ndIdCardNumber
// ================================
+
+ // ================================
+ // #region - invoke constructor
+ // ================================
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors;
+ constructors = RegexConsts.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+
+ constructors = PatternConsts.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
+
+ // ================================
+ // #endregion - invoke constructor
+ // ================================
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/exception/test/InvalidInputExceptionTests.java b/src/test/java/xyz/zhouxy/plusone/commons/exception/test/InvalidInputExceptionTests.java
index 79a2bfc..8133dc3 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/exception/test/InvalidInputExceptionTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/exception/test/InvalidInputExceptionTests.java
@@ -38,7 +38,7 @@ public class InvalidInputExceptionTests {
throw InvalidInputException.Type.CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS.create();
});
assertSame(InvalidInputException.Type.CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS, e.getType());
- assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS.getCode(), e.getTypeCode());
assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS.getDefaultMessage(), e.getMessage());
assertNull(e.getCause());
}
@@ -50,7 +50,7 @@ public class InvalidInputExceptionTests {
throw InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.create(message);
});
assertSame(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS, e.getType());
- assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertNull(e.getCause());
}
@@ -62,7 +62,7 @@ public class InvalidInputExceptionTests {
throw InvalidInputException.Type.PICTURE_CONTAINS_ILLEGAL_INFORMATION.create(message);
});
assertSame(InvalidInputException.Type.PICTURE_CONTAINS_ILLEGAL_INFORMATION, e.getType());
- assertEquals(InvalidInputException.Type.PICTURE_CONTAINS_ILLEGAL_INFORMATION.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.PICTURE_CONTAINS_ILLEGAL_INFORMATION.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
@@ -77,7 +77,7 @@ public class InvalidInputExceptionTests {
});
assertSame(InvalidInputException.Type.INFRINGE_COPYRIGHT, e.getType());
- assertEquals(InvalidInputException.Type.INFRINGE_COPYRIGHT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.INFRINGE_COPYRIGHT.getCode(), e.getTypeCode());
log.info("{}", e.getMessage());
assertEquals(nfe.toString(), e.getMessage());
assertSame(nfe, e.getCause());
@@ -92,7 +92,7 @@ public class InvalidInputExceptionTests {
});
assertSame(InvalidInputException.Type.DEFAULT, e.getType());
- assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
@@ -106,7 +106,7 @@ public class InvalidInputExceptionTests {
throw InvalidInputException.Type.CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS.create(message, nfe);
});
assertSame(InvalidInputException.Type.CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS, e.getType());
- assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertSame(nfe, e.getCause());
}
@@ -120,7 +120,7 @@ public class InvalidInputExceptionTests {
throw InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.create(message, nfe);
});
assertSame(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS, e.getType());
- assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertSame(nfe, e.getCause());
}
@@ -134,7 +134,7 @@ public class InvalidInputExceptionTests {
throw InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.create(message, npe);
});
assertSame(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS, e.getType());
- assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertNull(e.getCause());
}
@@ -148,7 +148,7 @@ public class InvalidInputExceptionTests {
throw InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.create(message, nfe);
});
assertSame(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS, e.getType());
- assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.CONTAINS_ILLEGAL_WORDS.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
@@ -167,7 +167,7 @@ public class InvalidInputExceptionTests {
throw new InvalidInputException();
});
assertSame(InvalidInputException.Type.DEFAULT, e.getType());
- assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getTypeCode());
assertEquals(InvalidInputException.Type.DEFAULT.getDefaultMessage(), e.getMessage());
assertNull(e.getCause());
}
@@ -179,7 +179,7 @@ public class InvalidInputExceptionTests {
throw new InvalidInputException(message);
});
assertSame(InvalidInputException.Type.DEFAULT, e.getType());
- assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertNull(e.getCause());
}
@@ -191,7 +191,7 @@ public class InvalidInputExceptionTests {
throw new InvalidInputException(message);
});
assertSame(InvalidInputException.Type.DEFAULT, e.getType());
- assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
@@ -206,7 +206,7 @@ public class InvalidInputExceptionTests {
});
assertSame(InvalidInputException.Type.DEFAULT, e.getType());
- assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getTypeCode());
log.info("{}", e.getMessage());
assertEquals(nfe.toString(), e.getMessage());
assertSame(nfe, e.getCause());
@@ -221,7 +221,7 @@ public class InvalidInputExceptionTests {
});
assertSame(InvalidInputException.Type.DEFAULT, e.getType());
- assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
@@ -235,7 +235,7 @@ public class InvalidInputExceptionTests {
throw new InvalidInputException(message, nfe);
});
assertSame(InvalidInputException.Type.DEFAULT, e.getType());
- assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertSame(nfe, e.getCause());
}
@@ -249,7 +249,7 @@ public class InvalidInputExceptionTests {
throw new InvalidInputException(message, nfe);
});
assertSame(InvalidInputException.Type.DEFAULT, e.getType());
- assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertSame(nfe, e.getCause());
}
@@ -263,7 +263,7 @@ public class InvalidInputExceptionTests {
throw new InvalidInputException(message, npe);
});
assertSame(InvalidInputException.Type.DEFAULT, e.getType());
- assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertNull(e.getCause());
}
@@ -277,7 +277,7 @@ public class InvalidInputExceptionTests {
throw new InvalidInputException(message, nfe);
});
assertSame(InvalidInputException.Type.DEFAULT, e.getType());
- assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getCode());
+ assertEquals(InvalidInputException.Type.DEFAULT.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/exception/test/ParsingFailureExceptionTests.java b/src/test/java/xyz/zhouxy/plusone/commons/exception/test/ParsingFailureExceptionTests.java
index 13ecd13..77d31a4 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/exception/test/ParsingFailureExceptionTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/exception/test/ParsingFailureExceptionTests.java
@@ -41,7 +41,7 @@ public class ParsingFailureExceptionTests {
throw ParsingFailureException.DATE_TIME_PARSING_FAILURE.create();
});
assertSame(ParsingFailureException.DATE_TIME_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getDefaultMessage(), e.getMessage());
assertNull(e.getCause());
}
@@ -53,7 +53,7 @@ public class ParsingFailureExceptionTests {
throw ParsingFailureException.JSON_PARSING_FAILURE.create(message);
});
assertSame(ParsingFailureException.Type.JSON_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.Type.JSON_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.Type.JSON_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertNull(e.getCause());
}
@@ -65,7 +65,7 @@ public class ParsingFailureExceptionTests {
throw ParsingFailureException.XML_PARSING_FAILURE.create(message);
});
assertSame(ParsingFailureException.XML_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.XML_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.XML_PARSING_FAILURE.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
@@ -80,7 +80,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.NUMBER_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getTypeCode());
log.info("{}", e.getMessage());
assertEquals(nfe.toString(), e.getMessage());
assertSame(nfe, e.getCause());
@@ -95,7 +95,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.NUMBER_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
@@ -109,7 +109,7 @@ public class ParsingFailureExceptionTests {
throw ParsingFailureException.NUMBER_PARSING_FAILURE.create(message, nfe);
});
assertSame(ParsingFailureException.NUMBER_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertSame(nfe, e.getCause());
}
@@ -123,7 +123,7 @@ public class ParsingFailureExceptionTests {
throw ParsingFailureException.DATE_TIME_PARSING_FAILURE.create(message, nfe);
});
assertSame(ParsingFailureException.DATE_TIME_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertSame(nfe, e.getCause());
}
@@ -137,7 +137,7 @@ public class ParsingFailureExceptionTests {
throw ParsingFailureException.DATE_TIME_PARSING_FAILURE.create(message, npe);
});
assertSame(ParsingFailureException.DATE_TIME_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertNull(e.getCause());
}
@@ -151,7 +151,7 @@ public class ParsingFailureExceptionTests {
throw ParsingFailureException.DATE_TIME_PARSING_FAILURE.create(message, nfe);
});
assertSame(ParsingFailureException.DATE_TIME_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
@@ -175,7 +175,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.DATE_TIME_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(dtpe.getMessage(), e.getMessage());
assertSame(dtpe, e.getCause());
}
@@ -189,7 +189,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.DATE_TIME_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getDefaultMessage(), e.getMessage());
assertNull(e.getCause());
}
@@ -206,7 +206,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.DATE_TIME_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertSame(dtpe, e.getCause());
}
@@ -223,7 +223,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.DATE_TIME_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertSame(dtpe, e.getCause());
}
@@ -238,7 +238,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.DATE_TIME_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertNull(e.getCause());
}
@@ -253,7 +253,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.DATE_TIME_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.DATE_TIME_PARSING_FAILURE.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
@@ -277,7 +277,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.NUMBER_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(dtpe.getMessage(), e.getMessage());
assertSame(dtpe, e.getCause());
}
@@ -291,7 +291,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.NUMBER_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getDefaultMessage(), e.getMessage());
assertNull(e.getCause());
}
@@ -308,7 +308,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.NUMBER_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertSame(dtpe, e.getCause());
}
@@ -325,7 +325,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.NUMBER_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertSame(dtpe, e.getCause());
}
@@ -340,7 +340,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.NUMBER_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getTypeCode());
assertEquals(message, e.getMessage());
assertNull(e.getCause());
}
@@ -355,7 +355,7 @@ public class ParsingFailureExceptionTests {
});
assertSame(ParsingFailureException.NUMBER_PARSING_FAILURE, e.getType());
- assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getCode());
+ assertEquals(ParsingFailureException.NUMBER_PARSING_FAILURE.getCode(), e.getTypeCode());
assertNull(e.getMessage());
assertNull(e.getCause());
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/function/FunctionTests.java b/src/test/java/xyz/zhouxy/plusone/commons/function/FunctionTests.java
index 17d6aca..501235a 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/function/FunctionTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/function/FunctionTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,8 +16,13 @@
package xyz.zhouxy.plusone.commons.function;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import java.lang.reflect.Constructor;
+import java.util.Arrays;
import java.util.Objects;
import java.util.function.Predicate;
@@ -33,4 +38,18 @@ class FunctionTests {
.and(StringUtils::isNotBlank);
assertFalse(predicate.test(str), "校验应是不通过");
}
+
+ @Test
+ void test_constructorOfPredicateTools_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = PredicateTools.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponseTests.java b/src/test/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponseTests.java
index 45a6ed2..8595ccc 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponseTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponseTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,7 +30,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import xyz.zhouxy.plusone.commons.exception.business.BizException;
-import xyz.zhouxy.plusone.commons.model.dto.UnifiedResponse.SuccessResult;
@Slf4j
public
@@ -52,439 +51,314 @@ class UnifiedResponseTests {
@Test
void testSuccess_WithoutArgument() throws Exception {
// 1. success without argument
- UnifiedResponse success = UnifiedResponse.success();
- assertEquals(SuccessResult.SUCCESS_STATUS, success.getStatus());
+ UnifiedResponse success = UnifiedResponse.success();
+ assertEquals("2000000", success.getCode());
assertEquals("SUCCESS", success.getMessage());
assertNull(success.getData());
String jacksonSuccess = jackson.writeValueAsString(success);
log.info("jacksonSuccess: {}", jacksonSuccess);
- assertEquals("{\"status\":\"2000000\",\"message\":\"SUCCESS\"}", jacksonSuccess);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"SUCCESS\"}", jacksonSuccess);
}
@Test
void testSuccess_WithMessage() throws Exception {
// 2. success with message
- UnifiedResponse successWithMessage = UnifiedResponse.success("成功");
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithMessage.getStatus());
+ UnifiedResponse successWithMessage = UnifiedResponse.success("成功");
+ assertEquals("2000000", successWithMessage.getCode());
assertEquals("成功", successWithMessage.getMessage());
assertNull(successWithMessage.getData());
String jacksonSuccessWithMessage = jackson.writeValueAsString(successWithMessage);
log.info("jacksonSuccessWithMessage: {}", jacksonSuccessWithMessage);
- assertEquals("{\"status\":\"2000000\",\"message\":\"成功\"}", jacksonSuccessWithMessage);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"成功\"}", jacksonSuccessWithMessage);
}
@Test
void testSuccess_WithMessageAndNullData() throws Exception {
// success with message and null data
- final UnifiedResponse successWithMessageAndNullData = UnifiedResponse.success("查询成功", null);
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithMessageAndNullData.getStatus());
+ final UnifiedResponse successWithMessageAndNullData = UnifiedResponse.success("查询成功", null);
+ assertEquals("2000000", successWithMessageAndNullData.getCode());
assertEquals("查询成功", successWithMessageAndNullData.getMessage());
assertNull(successWithMessageAndNullData.getData());
final String jacksonSuccessWithMessageAndNullData = jackson.writeValueAsString(successWithMessageAndNullData);
log.info("jacksonSuccessWithMessageAndNullData: {}", jacksonSuccessWithMessageAndNullData);
- assertEquals("{\"status\":\"2000000\",\"message\":\"查询成功\"}", jacksonSuccessWithMessageAndNullData);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"查询成功\"}", jacksonSuccessWithMessageAndNullData);
- assertEquals("{status: \"2000000\", message: \"查询成功\", data: null}", successWithMessageAndNullData.toString());
+ assertEquals("{code: \"2000000\", message: \"查询成功\", data: null}", successWithMessageAndNullData.toString());
}
@Test
void testSuccess_WithMessageAndStringData() throws Exception {
- UnifiedResponse successWithStringData = UnifiedResponse.success("查询成功", "zhouxy");
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithStringData.getStatus());
+ UnifiedResponse successWithStringData = UnifiedResponse.success("查询成功", "zhouxy");
+ assertEquals("2000000", successWithStringData.getCode());
assertEquals("查询成功", successWithStringData.getMessage());
assertEquals("zhouxy", successWithStringData.getData());
String jacksonSuccessWithStringData = jackson.writeValueAsString(successWithStringData);
log.info("jacksonSuccessWithStringData: {}", jacksonSuccessWithStringData);
- assertEquals("{\"status\":\"2000000\",\"message\":\"查询成功\",\"data\":\"zhouxy\"}", jacksonSuccessWithStringData);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"查询成功\",\"data\":\"zhouxy\"}", jacksonSuccessWithStringData);
- assertEquals("{status: \"2000000\", message: \"查询成功\", data: \"zhouxy\"}", successWithStringData.toString());
+ assertEquals("{code: \"2000000\", message: \"查询成功\", data: \"zhouxy\"}", successWithStringData.toString());
}
@Test
void testSuccess_WithMessageAndIntegerData() throws Exception {
- final UnifiedResponse successWithIntegerData = UnifiedResponse.success("查询成功", 1);
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithIntegerData.getStatus());
+ final UnifiedResponse successWithIntegerData = UnifiedResponse.success("查询成功", 1);
+ assertEquals("2000000", successWithIntegerData.getCode());
assertEquals("查询成功", successWithIntegerData.getMessage());
assertEquals(1, successWithIntegerData.getData());
final String jacksonSuccessWithIntegerData = jackson.writeValueAsString(successWithIntegerData);
log.info("jacksonSuccessWithIntegerData: {}", jacksonSuccessWithIntegerData);
- assertEquals("{\"status\":\"2000000\",\"message\":\"查询成功\",\"data\":1}", jacksonSuccessWithIntegerData);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"查询成功\",\"data\":1}", jacksonSuccessWithIntegerData);
- assertEquals("{status: \"2000000\", message: \"查询成功\", data: 1}", successWithIntegerData.toString());
+ assertEquals("{code: \"2000000\", message: \"查询成功\", data: 1}", successWithIntegerData.toString());
}
@Test
void testSuccess_WithMessageAndData() throws Exception {
- UnifiedResponse successWithData = UnifiedResponse.success("查询成功", pageResult);
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithData.getStatus());
+ UnifiedResponse> successWithData = UnifiedResponse.success("查询成功", pageResult);
+ assertEquals("2000000", successWithData.getCode());
assertEquals("查询成功", successWithData.getMessage());
assertNotNull(successWithData.getData());
assertEquals(pageResult, successWithData.getData());
String jacksonSuccessWithData = jackson.writeValueAsString(successWithData);
log.info("jacksonSuccessWithData: {}", jacksonSuccessWithData);
- assertEquals("{\"status\":\"2000000\",\"message\":\"查询成功\",\"data\":{\"total\":108,\"content\":[{\"username\":\"zhouxy1\",\"email\":\"zhouxy1@gmail.com\"},{\"username\":\"zhouxy2\",\"email\":\"zhouxy2@gmail.com\"}]}}", jacksonSuccessWithData);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"查询成功\",\"data\":{\"total\":108,\"content\":[{\"username\":\"zhouxy1\",\"email\":\"zhouxy1@gmail.com\"},{\"username\":\"zhouxy2\",\"email\":\"zhouxy2@gmail.com\"}]}}", jacksonSuccessWithData);
}
@Test
void testSuccess_WithNullMessage() throws Exception {
// 3. success with null message
- UnifiedResponse successWithNullMessage = UnifiedResponse.success(null);
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithNullMessage.getStatus());
+ UnifiedResponse successWithNullMessage = UnifiedResponse.success(null);
+ assertEquals("2000000", successWithNullMessage.getCode());
assertEquals("", successWithNullMessage.getMessage());
assertNull(successWithNullMessage.getData());
String jacksonSuccessWithNullMessage = jackson.writeValueAsString(successWithNullMessage);
log.info("jacksonSuccessWithNullMessage: {}", jacksonSuccessWithNullMessage);
- assertEquals("{\"status\":\"2000000\",\"message\":\"\"}", jacksonSuccessWithNullMessage);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"\"}", jacksonSuccessWithNullMessage);
}
// success with null message and null data
@Test
void testSuccess_WithNullMessageAndNullData() throws Exception {
- final UnifiedResponse successWithNullMessageAndNullData = UnifiedResponse.success(null, null);
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithNullMessageAndNullData.getStatus());
+ final UnifiedResponse successWithNullMessageAndNullData = UnifiedResponse.success(null, null);
+ assertEquals("2000000", successWithNullMessageAndNullData.getCode());
assertEquals("", successWithNullMessageAndNullData.getMessage());
assertNull(successWithNullMessageAndNullData.getData());
final String jacksonSuccessWithNullMessageAndNullData = jackson.writeValueAsString(successWithNullMessageAndNullData);
log.info("jacksonSuccessWithNullMessageAndNullData: {}", jacksonSuccessWithNullMessageAndNullData);
- assertEquals("{\"status\":\"2000000\",\"message\":\"\"}", jacksonSuccessWithNullMessageAndNullData);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"\"}", jacksonSuccessWithNullMessageAndNullData);
- assertEquals("{status: \"2000000\", message: \"\", data: null}", successWithNullMessageAndNullData.toString());
+ assertEquals("{code: \"2000000\", message: \"\", data: null}", successWithNullMessageAndNullData.toString());
}
@Test
void testSuccess_WithNullMessageAndData() throws Exception {
// success with null message and data
final User user = new User("zhouxy", "zhouxy@code108.cn");
- final UnifiedResponse successWithNullMessageAndData = UnifiedResponse.success(null, user);
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithNullMessageAndData.getStatus());
+ final UnifiedResponse successWithNullMessageAndData = UnifiedResponse.success(null, user);
+ assertEquals("2000000", successWithNullMessageAndData.getCode());
assertEquals("", successWithNullMessageAndData.getMessage());
assertEquals(user, successWithNullMessageAndData.getData());
final String jacksonSuccessWithNullMessageAndData = jackson.writeValueAsString(successWithNullMessageAndData);
log.info("jacksonSuccessWithNullMessageAndData: {}", jacksonSuccessWithNullMessageAndData);
- assertEquals("{\"status\":\"2000000\",\"message\":\"\",\"data\":{\"username\":\"zhouxy\",\"email\":\"zhouxy@code108.cn\"}}",
+ assertEquals("{\"code\":\"2000000\",\"message\":\"\",\"data\":{\"username\":\"zhouxy\",\"email\":\"zhouxy@code108.cn\"}}",
jacksonSuccessWithNullMessageAndData);
}
@Test
void testSuccess_WithEmptyMessage() throws Exception {
// 4. success with empty message
- UnifiedResponse successWithEmptyMessage = UnifiedResponse.success("");
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithEmptyMessage.getStatus());
+ UnifiedResponse successWithEmptyMessage = UnifiedResponse.success("");
+ assertEquals("2000000", successWithEmptyMessage.getCode());
assertEquals("", successWithEmptyMessage.getMessage());
assertNull(successWithEmptyMessage.getData());
String jacksonSuccessWithEmptyMessage = jackson.writeValueAsString(successWithEmptyMessage);
log.info("jacksonSuccessWithEmptyMessage: {}", jacksonSuccessWithEmptyMessage);
- assertEquals("{\"status\":\"2000000\",\"message\":\"\"}", jacksonSuccessWithEmptyMessage);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"\"}", jacksonSuccessWithEmptyMessage);
}
// success with empty message and null data
@Test
void testSuccess_WithEmptyMessageAndNullData() throws Exception {
- final UnifiedResponse successWithEmptyMessageAndNullData = UnifiedResponse.success("", null);
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithEmptyMessageAndNullData.getStatus());
+ final UnifiedResponse successWithEmptyMessageAndNullData = UnifiedResponse.success("", null);
+ assertEquals("2000000", successWithEmptyMessageAndNullData.getCode());
assertEquals("", successWithEmptyMessageAndNullData.getMessage());
assertNull(successWithEmptyMessageAndNullData.getData());
final String jacksonSuccessWithEmptyMessageAndNullData = jackson.writeValueAsString(successWithEmptyMessageAndNullData);
log.info("jacksonSuccessWithEmptyMessageAndNullData: {}", jacksonSuccessWithEmptyMessageAndNullData);
- assertEquals("{\"status\":\"2000000\",\"message\":\"\"}", jacksonSuccessWithEmptyMessageAndNullData);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"\"}", jacksonSuccessWithEmptyMessageAndNullData);
- assertEquals("{status: \"2000000\", message: \"\", data: null}", successWithEmptyMessageAndNullData.toString());
+ assertEquals("{code: \"2000000\", message: \"\", data: null}", successWithEmptyMessageAndNullData.toString());
}
// success with empty message and data
@Test
void testSuccess_WithEmptyMessageAndData() throws Exception {
final User user = new User("zhouxy", "zhouxy@gmail.com");
- final UnifiedResponse successWithEmptyMessageAndData = UnifiedResponse.success("", user);
- assertEquals(SuccessResult.SUCCESS_STATUS, successWithEmptyMessageAndData.getStatus());
+ final UnifiedResponse successWithEmptyMessageAndData = UnifiedResponse.success("", user);
+ assertEquals("2000000", successWithEmptyMessageAndData.getCode());
assertEquals("", successWithEmptyMessageAndData.getMessage());
assertEquals(user, successWithEmptyMessageAndData.getData());
final String jacksonSuccessWithEmptyMessageAndData = jackson.writeValueAsString(successWithEmptyMessageAndData);
log.info("jacksonSuccessWithEmptyMessageAndData: {}", jacksonSuccessWithEmptyMessageAndData);
- assertEquals("{\"status\":\"2000000\",\"message\":\"\",\"data\":{\"username\":\"zhouxy\",\"email\":\"zhouxy@gmail.com\"}}", jacksonSuccessWithEmptyMessageAndData);
- }
-
- @Test
- void testError_WithMessage() throws Exception {
- UnifiedResponse errorWithMessage = UnifiedResponse.error("查询失败");
- assertEquals("9999999", errorWithMessage.getStatus());
- assertEquals("查询失败", errorWithMessage.getMessage());
- assertNull(errorWithMessage.getData());
-
- final String jacksonErrorWithMessage = jackson.writeValueAsString(errorWithMessage);
- assertEquals("{\"status\":\"9999999\",\"message\":\"查询失败\"}", jacksonErrorWithMessage);
- final String gsonErrorWithMessage = gson.toJson(errorWithMessage);
- assertEquals("{\"status\":\"9999999\",\"message\":\"查询失败\"}", gsonErrorWithMessage);
- }
-
- @Test
- void testError_WithMessage_AndNullData() throws Exception {
- UnifiedResponse errorWithMessageAndNullData = UnifiedResponse.error("查询失败", (Object) null);
- assertEquals("9999999", errorWithMessageAndNullData.getStatus());
- assertEquals("查询失败", errorWithMessageAndNullData.getMessage());
- assertNull(errorWithMessageAndNullData.getData());
-
- final String jacksonErrorWithMessageAndNullData = jackson.writeValueAsString(errorWithMessageAndNullData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"查询失败\"}", jacksonErrorWithMessageAndNullData);
- final String gsonErrorWithMessageAndNullData = gson.toJson(errorWithMessageAndNullData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"查询失败\"}", gsonErrorWithMessageAndNullData);
- }
-
- @Test
- void testError_WithMessage_AndData() throws Exception {
- final User user = new User("zhouxy", "zhouxy@gmail.com");
- UnifiedResponse errorWithMessageAndData = UnifiedResponse.error("查询失败", user);
- assertEquals("9999999", errorWithMessageAndData.getStatus());
- assertEquals("查询失败", errorWithMessageAndData.getMessage());
- assertEquals(user, errorWithMessageAndData.getData());
-
- final String jacksonErrorWithMessageAndData = jackson.writeValueAsString(errorWithMessageAndData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"查询失败\",\"data\":{\"username\":\"zhouxy\",\"email\":\"zhouxy@gmail.com\"}}",
- jacksonErrorWithMessageAndData);
- final String gsonErrorWithMessageAndData = gson.toJson(errorWithMessageAndData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"查询失败\",\"data\":{\"username\":\"zhouxy\",\"email\":\"zhouxy@gmail.com\"}}",
- gsonErrorWithMessageAndData);
- }
-
- @Test
- void testError_WithNullMessage() throws Exception {
- UnifiedResponse errorWithNullMessage = UnifiedResponse.error((String) null);
- assertEquals("9999999", errorWithNullMessage.getStatus());
- assertEquals("", errorWithNullMessage.getMessage());
- assertNull(errorWithNullMessage.getData());
-
- final String jacksonErrorWithNullMessage = jackson.writeValueAsString(errorWithNullMessage);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\"}", jacksonErrorWithNullMessage);
- final String gsonErrorWithNullMessage = gson.toJson(errorWithNullMessage);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\"}", gsonErrorWithNullMessage);
- }
-
- @Test
- void testError_WithNullMessage_AndNullData() throws Exception {
- UnifiedResponse errorWithNullMessageAndNullData = UnifiedResponse.error((String) null, (User) null);
- assertEquals("9999999", errorWithNullMessageAndNullData.getStatus());
- assertEquals("", errorWithNullMessageAndNullData.getMessage());
- assertNull(errorWithNullMessageAndNullData.getData());
-
- final String jacksonErrorWithNullMessageAndNullData = jackson.writeValueAsString(errorWithNullMessageAndNullData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\"}", jacksonErrorWithNullMessageAndNullData);
- final String gsonErrorWithNullMessageAndNullData = gson.toJson(errorWithNullMessageAndNullData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\"}", gsonErrorWithNullMessageAndNullData);
- }
-
- @Test
- void testError_WithNullMessage_AndData() throws Exception {
- final User user = new User("zhouxy1", "zhouxy1@gmail.com");
- UnifiedResponse errorWithNullMessageAndData = UnifiedResponse.error((String) null, user);
- assertEquals("9999999", errorWithNullMessageAndData.getStatus());
- assertEquals("", errorWithNullMessageAndData.getMessage());
- assertEquals(user, errorWithNullMessageAndData.getData());
-
- final String jacksonErrorWithNullMessageAndData = jackson.writeValueAsString(errorWithNullMessageAndData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\",\"data\":{\"username\":\"zhouxy1\",\"email\":\"zhouxy1@gmail.com\"}}",
- jacksonErrorWithNullMessageAndData);
- final String gsonErrorWithNullMessageAndData = gson.toJson(errorWithNullMessageAndData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\",\"data\":{\"username\":\"zhouxy1\",\"email\":\"zhouxy1@gmail.com\"}}",
- gsonErrorWithNullMessageAndData);
- }
-
- @Test
- void testError_WithEmptyMessage() throws Exception {
- UnifiedResponse errorWithEmptyMessage = UnifiedResponse.error("");
- assertEquals("9999999", errorWithEmptyMessage.getStatus());
- assertEquals("", errorWithEmptyMessage.getMessage());
- assertNull(errorWithEmptyMessage.getData());
- final String jacksonErrorWithEmptyMessage = jackson.writeValueAsString(errorWithEmptyMessage);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\"}", jacksonErrorWithEmptyMessage);
- final String gsonErrorWithEmptyMessage = gson.toJson(errorWithEmptyMessage);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\"}", gsonErrorWithEmptyMessage);
- }
-
- @Test
- void testError_WithEmptyMessage_AndNullData() throws Exception {
- UnifiedResponse errorWithEmptyMessageAndNullData = UnifiedResponse.error("", (User) null);
- assertEquals("9999999", errorWithEmptyMessageAndNullData.getStatus());
- assertEquals("", errorWithEmptyMessageAndNullData.getMessage());
- assertNull(errorWithEmptyMessageAndNullData.getData());
-
- final String jacksonErrorEmptyNullMessageAndNullData = jackson.writeValueAsString(errorWithEmptyMessageAndNullData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\"}", jacksonErrorEmptyNullMessageAndNullData);
- final String gsonErrorWithEmptyMessageAndNullData = gson.toJson(errorWithEmptyMessageAndNullData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\"}", gsonErrorWithEmptyMessageAndNullData);
- }
-
- @Test
- void testError_WithEmptyMessage_AndData() throws Exception {
- final User user = new User("zhouxy1", "zhouxy1@gmail.com");
- UnifiedResponse errorWithEmptyMessageAndData = UnifiedResponse.error("", user);
- assertEquals("9999999", errorWithEmptyMessageAndData.getStatus());
- assertEquals("", errorWithEmptyMessageAndData.getMessage());
- assertEquals(user, errorWithEmptyMessageAndData.getData());
-
- final String jacksonErrorWithEmptyMessageAndData = jackson.writeValueAsString(errorWithEmptyMessageAndData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\",\"data\":{\"username\":\"zhouxy1\",\"email\":\"zhouxy1@gmail.com\"}}",
- jacksonErrorWithEmptyMessageAndData);
- final String gsonErrorWithEmptyMessageAndData = gson.toJson(errorWithEmptyMessageAndData);
- assertEquals("{\"status\":\"9999999\",\"message\":\"\",\"data\":{\"username\":\"zhouxy1\",\"email\":\"zhouxy1@gmail.com\"}}",
- gsonErrorWithEmptyMessageAndData);
+ assertEquals("{\"code\":\"2000000\",\"message\":\"\",\"data\":{\"username\":\"zhouxy\",\"email\":\"zhouxy@gmail.com\"}}", jacksonSuccessWithEmptyMessageAndData);
}
@Test
void testError_WithStatusAndMessage() throws Exception {
- final UnifiedResponse errorWithStatusAndMessage = UnifiedResponse.error(108, "查询失败");
- assertEquals(108, errorWithStatusAndMessage.getStatus());
+ final UnifiedResponse errorWithStatusAndMessage = UnifiedResponse.error("108", "查询失败");
+ assertEquals("108", errorWithStatusAndMessage.getCode());
assertEquals("查询失败", errorWithStatusAndMessage.getMessage());
assertNull(errorWithStatusAndMessage.getData());
- assertEquals("{status: 108, message: \"查询失败\", data: null}", errorWithStatusAndMessage.toString());
+ assertEquals("{code: \"108\", message: \"查询失败\", data: null}", errorWithStatusAndMessage.toString());
final String jacksonErrorWithStatusAndMessage = jackson.writeValueAsString(errorWithStatusAndMessage);
log.info("jacksonErrorWithStatusAndMessage: {}", jacksonErrorWithStatusAndMessage);
- assertEquals("{\"status\":108,\"message\":\"查询失败\"}", jacksonErrorWithStatusAndMessage);
+ assertEquals("{\"code\":\"108\",\"message\":\"查询失败\"}", jacksonErrorWithStatusAndMessage);
final String gsonErrorWithStatusAndMessage = gson.toJson(errorWithStatusAndMessage);
- assertEquals("{\"status\":108,\"message\":\"查询失败\"}", gsonErrorWithStatusAndMessage);
+ assertEquals("{\"code\":\"108\",\"message\":\"查询失败\"}", gsonErrorWithStatusAndMessage);
}
@Test
void testError_WithStatusAndMessage_AndNullData() throws Exception {
- final UnifiedResponse errorWithStatusAndMessageAndNullData = UnifiedResponse.error(108, "查询失败", null);
- assertEquals(108, errorWithStatusAndMessageAndNullData.getStatus());
+ final UnifiedResponse errorWithStatusAndMessageAndNullData = UnifiedResponse.error("108", "查询失败", null);
+ assertEquals("108", errorWithStatusAndMessageAndNullData.getCode());
assertEquals("查询失败", errorWithStatusAndMessageAndNullData.getMessage());
assertNull(errorWithStatusAndMessageAndNullData.getData());
- assertEquals("{status: 108, message: \"查询失败\", data: null}", errorWithStatusAndMessageAndNullData.toString());
+ assertEquals("{code: \"108\", message: \"查询失败\", data: null}", errorWithStatusAndMessageAndNullData.toString());
final String jacksonErrorWithStatusAndMessageAndNullData = jackson.writeValueAsString(errorWithStatusAndMessageAndNullData);
log.info("jacksonErrorWithStatusAndMessage: {}", jacksonErrorWithStatusAndMessageAndNullData);
- assertEquals("{\"status\":108,\"message\":\"查询失败\"}", jacksonErrorWithStatusAndMessageAndNullData);
+ assertEquals("{\"code\":\"108\",\"message\":\"查询失败\"}", jacksonErrorWithStatusAndMessageAndNullData);
final String gsonErrorWithStatusAndMessageAndNullData = gson.toJson(errorWithStatusAndMessageAndNullData);
- assertEquals("{\"status\":108,\"message\":\"查询失败\"}", gsonErrorWithStatusAndMessageAndNullData);
+ assertEquals("{\"code\":\"108\",\"message\":\"查询失败\"}", gsonErrorWithStatusAndMessageAndNullData);
}
@Test
void testError_WithStatusAndMessage_AndData() throws Exception {
final PageResult emptyPageResult = PageResult.empty();
- final UnifiedResponse errorWithStatusAndMessageAndData = UnifiedResponse.error(108, "查询失败", emptyPageResult);
- assertEquals(108, errorWithStatusAndMessageAndData.getStatus());
+ final UnifiedResponse> errorWithStatusAndMessageAndData = UnifiedResponse.error("108", "查询失败", emptyPageResult);
+ assertEquals("108", errorWithStatusAndMessageAndData.getCode());
assertEquals("查询失败", errorWithStatusAndMessageAndData.getMessage());
assertEquals(emptyPageResult, errorWithStatusAndMessageAndData.getData());
- assertEquals("{status: 108, message: \"查询失败\", data: PageResult [total=0, content=[]]}", errorWithStatusAndMessageAndData.toString());
+ assertEquals("{code: \"108\", message: \"查询失败\", data: PageResult [total=0, content=[]]}", errorWithStatusAndMessageAndData.toString());
final String jacksonErrorWithStatusAndMessageAndData = jackson.writeValueAsString(errorWithStatusAndMessageAndData);
- assertEquals("{\"status\":108,\"message\":\"查询失败\",\"data\":{\"total\":0,\"content\":[]}}",
+ assertEquals("{\"code\":\"108\",\"message\":\"查询失败\",\"data\":{\"total\":0,\"content\":[]}}",
jacksonErrorWithStatusAndMessageAndData);
final String gsonErrorWithStatusAndMessageAndData = gson.toJson(errorWithStatusAndMessageAndData);
- assertEquals("{\"status\":108,\"message\":\"查询失败\",\"data\":{\"total\":0,\"content\":[]}}",
+ assertEquals("{\"code\":\"108\",\"message\":\"查询失败\",\"data\":{\"total\":0,\"content\":[]}}",
gsonErrorWithStatusAndMessageAndData);
}
@Test
void testError_WithStatusAndNullMessage() throws Exception {
- UnifiedResponse errorWithStatusAndNullMessage = UnifiedResponse.error(500, (String) null);
- assertEquals(500, errorWithStatusAndNullMessage.getStatus());
+ UnifiedResponse errorWithStatusAndNullMessage = UnifiedResponse.error("500", (String) null);
+ assertEquals("500", errorWithStatusAndNullMessage.getCode());
assertEquals("", errorWithStatusAndNullMessage.getMessage());
assertNull(errorWithStatusAndNullMessage.getData());
final String jacksonErrorWithStatusAndNullMessage = jackson.writeValueAsString(errorWithStatusAndNullMessage);
- assertEquals("{\"status\":500,\"message\":\"\"}", jacksonErrorWithStatusAndNullMessage);
+ assertEquals("{\"code\":\"500\",\"message\":\"\"}", jacksonErrorWithStatusAndNullMessage);
final String gsonErrorWithStatusAndNullMessage = gson.toJson(errorWithStatusAndNullMessage);
- assertEquals("{\"status\":500,\"message\":\"\"}", gsonErrorWithStatusAndNullMessage);
+ assertEquals("{\"code\":\"500\",\"message\":\"\"}", gsonErrorWithStatusAndNullMessage);
}
@Test
void testError_WithStatusAndNullMessage_AndNullData() throws Exception {
- UnifiedResponse errorWithStatusAndNullMessageAndNullData = UnifiedResponse.error(500, (String) null, null);
+ UnifiedResponse errorWithStatusAndNullMessageAndNullData = UnifiedResponse.error("500", (String) null, null);
- assertEquals(500, errorWithStatusAndNullMessageAndNullData.getStatus());
+ assertEquals("500", errorWithStatusAndNullMessageAndNullData.getCode());
assertEquals("", errorWithStatusAndNullMessageAndNullData.getMessage());
assertNull(errorWithStatusAndNullMessageAndNullData.getData());
final String jacksonErrorWithStatusAndNullMessageAndNullData = jackson.writeValueAsString(errorWithStatusAndNullMessageAndNullData);
- assertEquals("{\"status\":500,\"message\":\"\"}", jacksonErrorWithStatusAndNullMessageAndNullData);
+ assertEquals("{\"code\":\"500\",\"message\":\"\"}", jacksonErrorWithStatusAndNullMessageAndNullData);
final String gsonErrorWithStatusAndNullMessageAndNullData = gson.toJson(errorWithStatusAndNullMessageAndNullData);
- assertEquals("{\"status\":500,\"message\":\"\"}", gsonErrorWithStatusAndNullMessageAndNullData);
+ assertEquals("{\"code\":\"500\",\"message\":\"\"}", gsonErrorWithStatusAndNullMessageAndNullData);
}
@Test
void testError_WithStatusAndNullMessage_AndData() throws Exception {
PageResult emptyPageResult = PageResult.empty();
- UnifiedResponse errorWithStatusAndNullMessageAndData = UnifiedResponse.error(500, (String) null, emptyPageResult);
- assertEquals(500, errorWithStatusAndNullMessageAndData.getStatus());
+ UnifiedResponse> errorWithStatusAndNullMessageAndData = UnifiedResponse.error("500", (String) null, emptyPageResult);
+ assertEquals("500", errorWithStatusAndNullMessageAndData.getCode());
assertEquals("", errorWithStatusAndNullMessageAndData.getMessage());
assertEquals(emptyPageResult, errorWithStatusAndNullMessageAndData.getData());
final String jacksonErrorWithStatusAndNullMessageAndData = jackson.writeValueAsString(errorWithStatusAndNullMessageAndData);
- assertEquals("{\"status\":500,\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", jacksonErrorWithStatusAndNullMessageAndData);
+ assertEquals("{\"code\":\"500\",\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", jacksonErrorWithStatusAndNullMessageAndData);
final String gsonErrorWithStatusAndNullMessageAndData = gson.toJson(errorWithStatusAndNullMessageAndData);
- assertEquals("{\"status\":500,\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", gsonErrorWithStatusAndNullMessageAndData);
+ assertEquals("{\"code\":\"500\",\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", gsonErrorWithStatusAndNullMessageAndData);
}
@Test
void testError_WithStatusAndEmptyMessage() throws Exception {
- UnifiedResponse errorWithStatusAndEmptyMessage = UnifiedResponse.error(500, "");
- assertEquals(500, errorWithStatusAndEmptyMessage.getStatus());
+ UnifiedResponse errorWithStatusAndEmptyMessage = UnifiedResponse.error("500", "");
+ assertEquals("500", errorWithStatusAndEmptyMessage.getCode());
assertEquals("", errorWithStatusAndEmptyMessage.getMessage());
assertNull(errorWithStatusAndEmptyMessage.getData());
final String jacksonErrorWithStatusAndEmptyMessage = jackson.writeValueAsString(errorWithStatusAndEmptyMessage);
- assertEquals("{\"status\":500,\"message\":\"\"}", jacksonErrorWithStatusAndEmptyMessage);
+ assertEquals("{\"code\":\"500\",\"message\":\"\"}", jacksonErrorWithStatusAndEmptyMessage);
final String gsonErrorWithStatusAndEmptyMessage = gson.toJson(errorWithStatusAndEmptyMessage);
- assertEquals("{\"status\":500,\"message\":\"\"}", gsonErrorWithStatusAndEmptyMessage);
+ assertEquals("{\"code\":\"500\",\"message\":\"\"}", gsonErrorWithStatusAndEmptyMessage);
}
@Test
void testError_WithStatusAndEmptyMessage_AndNullData() throws Exception {
- UnifiedResponse errorWithStatusAndEmptyMessageAndNullData = UnifiedResponse.error(500, "", null);
+ UnifiedResponse errorWithStatusAndEmptyMessageAndNullData = UnifiedResponse.error("500", "", null);
- assertEquals(500, errorWithStatusAndEmptyMessageAndNullData.getStatus());
+ assertEquals("500", errorWithStatusAndEmptyMessageAndNullData.getCode());
assertEquals("", errorWithStatusAndEmptyMessageAndNullData.getMessage());
assertNull(errorWithStatusAndEmptyMessageAndNullData.getData());
final String jacksonErrorWithStatusAndEmptyMessageAndNullData = jackson.writeValueAsString(errorWithStatusAndEmptyMessageAndNullData);
- assertEquals("{\"status\":500,\"message\":\"\"}", jacksonErrorWithStatusAndEmptyMessageAndNullData);
+ assertEquals("{\"code\":\"500\",\"message\":\"\"}", jacksonErrorWithStatusAndEmptyMessageAndNullData);
final String gsonErrorWithStatusAndEmptyMessageAndNullData = gson.toJson(errorWithStatusAndEmptyMessageAndNullData);
- assertEquals("{\"status\":500,\"message\":\"\"}", gsonErrorWithStatusAndEmptyMessageAndNullData);
+ assertEquals("{\"code\":\"500\",\"message\":\"\"}", gsonErrorWithStatusAndEmptyMessageAndNullData);
}
@Test
void testError_WithStatusAndEmptyMessage_AndData() throws Exception {
PageResult emptyPageResult = PageResult.empty();
- UnifiedResponse errorWithStatusAndEmptyMessageAndData = UnifiedResponse.error(500, "", emptyPageResult);
- assertEquals(500, errorWithStatusAndEmptyMessageAndData.getStatus());
+ UnifiedResponse> errorWithStatusAndEmptyMessageAndData = UnifiedResponse.error("500", "", emptyPageResult);
+ assertEquals("500", errorWithStatusAndEmptyMessageAndData.getCode());
assertEquals("", errorWithStatusAndEmptyMessageAndData.getMessage());
assertEquals(emptyPageResult, errorWithStatusAndEmptyMessageAndData.getData());
final String jacksonErrorWithStatusAndEmptyMessageAndData = jackson.writeValueAsString(errorWithStatusAndEmptyMessageAndData);
- assertEquals("{\"status\":500,\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", jacksonErrorWithStatusAndEmptyMessageAndData);
+ assertEquals("{\"code\":\"500\",\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", jacksonErrorWithStatusAndEmptyMessageAndData);
final String gsonErrorWithStatusAndEmptyMessageAndData = gson.toJson(errorWithStatusAndEmptyMessageAndData);
- assertEquals("{\"status\":500,\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", gsonErrorWithStatusAndEmptyMessageAndData);
+ assertEquals("{\"code\":\"500\",\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", gsonErrorWithStatusAndEmptyMessageAndData);
}
@Test
void testError_WithStatusAndThrowable() throws Exception {
final IllegalArgumentException e = new IllegalArgumentException("ID cannot be null");
- final UnifiedResponse errorWithStatusThrowable = UnifiedResponse.error(500, e);
- assertEquals(500, errorWithStatusThrowable.getStatus());
+ final UnifiedResponse errorWithStatusThrowable = UnifiedResponse.error("500", e);
+ assertEquals("500", errorWithStatusThrowable.getCode());
assertEquals("ID cannot be null", errorWithStatusThrowable.getMessage());
assertNull(errorWithStatusThrowable.getData());
- assertEquals("{\"status\":500,\"message\":\"ID cannot be null\"}", jackson.writeValueAsString(errorWithStatusThrowable));
- assertEquals("{\"status\":500,\"message\":\"ID cannot be null\"}", gson.toJson(errorWithStatusThrowable));
+ assertEquals("{\"code\":\"500\",\"message\":\"ID cannot be null\"}", jackson.writeValueAsString(errorWithStatusThrowable));
+ assertEquals("{\"code\":\"500\",\"message\":\"ID cannot be null\"}", gson.toJson(errorWithStatusThrowable));
}
@Test
void testError_WithStatusAndNullThrowable() {
- assertThrows(NullPointerException.class, () -> UnifiedResponse.error(500, (Throwable) null));
+ assertThrows(NullPointerException.class, () -> UnifiedResponse.error("500", (Throwable) null));
}
@Test
void testError_WithNullStatus() {
- final Object nullStatus = null;
+ final String nullStatus = null;
final String nullMessage = null;
final User user = new User("zhouxy", "zhouxy@gmail.com");
@@ -512,143 +386,143 @@ class UnifiedResponseTests {
@Test
void testOf_WithStatusAndMessage() throws Exception {
- final UnifiedResponse ofWithStatusAndMessage = UnifiedResponse.of(108, "This is a message.");
- assertEquals(108, ofWithStatusAndMessage.getStatus());
+ final UnifiedResponse ofWithStatusAndMessage = UnifiedResponse.of("108", "This is a message.");
+ assertEquals("108", ofWithStatusAndMessage.getCode());
assertEquals("This is a message.", ofWithStatusAndMessage.getMessage());
assertNull(ofWithStatusAndMessage.getData());
final String jacksonOfWithStatusAndMessage = jackson.writeValueAsString(ofWithStatusAndMessage);
log.info("jacksonOfWithStatusAndMessage: {}", jacksonOfWithStatusAndMessage);
- assertEquals("{\"status\":108,\"message\":\"This is a message.\"}", jacksonOfWithStatusAndMessage);
+ assertEquals("{\"code\":\"108\",\"message\":\"This is a message.\"}", jacksonOfWithStatusAndMessage);
- assertEquals("{status: 108, message: \"This is a message.\", data: null}", ofWithStatusAndMessage.toString());
+ assertEquals("{code: \"108\", message: \"This is a message.\", data: null}", ofWithStatusAndMessage.toString());
final String gsonOfWithStatusAndMessage = gson.toJson(ofWithStatusAndMessage);
- assertEquals("{\"status\":108,\"message\":\"This is a message.\"}", gsonOfWithStatusAndMessage);
+ assertEquals("{\"code\":\"108\",\"message\":\"This is a message.\"}", gsonOfWithStatusAndMessage);
}
@Test
void testOf_WithStatusAndMessage_AndNullData() throws Exception {
- final UnifiedResponse ofWithStatusAndMessageAndNullData = UnifiedResponse.of(108, "This is a message.", null);
- assertEquals(108, ofWithStatusAndMessageAndNullData.getStatus());
+ final UnifiedResponse ofWithStatusAndMessageAndNullData = UnifiedResponse.of("108", "This is a message.", null);
+ assertEquals("108", ofWithStatusAndMessageAndNullData.getCode());
assertEquals("This is a message.", ofWithStatusAndMessageAndNullData.getMessage());
assertNull(ofWithStatusAndMessageAndNullData.getData());
final String jacksonOfWithStatusAndMessageAndNullData = jackson.writeValueAsString(ofWithStatusAndMessageAndNullData);
log.info("jacksonOfWithStatusAndMessage: {}", jacksonOfWithStatusAndMessageAndNullData);
- assertEquals("{\"status\":108,\"message\":\"This is a message.\"}", jacksonOfWithStatusAndMessageAndNullData);
+ assertEquals("{\"code\":\"108\",\"message\":\"This is a message.\"}", jacksonOfWithStatusAndMessageAndNullData);
- assertEquals("{status: 108, message: \"This is a message.\", data: null}", ofWithStatusAndMessageAndNullData.toString());
+ assertEquals("{code: \"108\", message: \"This is a message.\", data: null}", ofWithStatusAndMessageAndNullData.toString());
final String gsonOfWithStatusAndMessageAndNullData = gson.toJson(ofWithStatusAndMessageAndNullData);
- assertEquals("{\"status\":108,\"message\":\"This is a message.\"}", gsonOfWithStatusAndMessageAndNullData);
+ assertEquals("{\"code\":\"108\",\"message\":\"This is a message.\"}", gsonOfWithStatusAndMessageAndNullData);
}
@Test
void testOf_WithStatusAndMessage_AndData() throws Exception {
final PageResult emptyPageResult = PageResult.empty();
- final UnifiedResponse ofWithStatusAndMessageAndData
- = UnifiedResponse.of(108, "This is a message.", emptyPageResult);
- assertEquals("{status: 108, message: \"This is a message.\", data: PageResult [total=0, content=[]]}",
+ final UnifiedResponse> ofWithStatusAndMessageAndData
+ = UnifiedResponse.of("108", "This is a message.", emptyPageResult);
+ assertEquals("{code: \"108\", message: \"This is a message.\", data: PageResult [total=0, content=[]]}",
ofWithStatusAndMessageAndData.toString());
- assertEquals(108, ofWithStatusAndMessageAndData.getStatus());
+ assertEquals("108", ofWithStatusAndMessageAndData.getCode());
assertEquals("This is a message.", ofWithStatusAndMessageAndData.getMessage());
assertEquals(emptyPageResult, ofWithStatusAndMessageAndData.getData());
final String jacksonOfWithStatusAndMessageAndData = jackson.writeValueAsString(ofWithStatusAndMessageAndData);
- assertEquals("{\"status\":108,\"message\":\"This is a message.\",\"data\":{\"total\":0,\"content\":[]}}",
+ assertEquals("{\"code\":\"108\",\"message\":\"This is a message.\",\"data\":{\"total\":0,\"content\":[]}}",
jacksonOfWithStatusAndMessageAndData);
final String gsonOfWithStatusAndMessageAndData = gson.toJson(ofWithStatusAndMessageAndData);
- assertEquals("{\"status\":108,\"message\":\"This is a message.\",\"data\":{\"total\":0,\"content\":[]}}",
+ assertEquals("{\"code\":\"108\",\"message\":\"This is a message.\",\"data\":{\"total\":0,\"content\":[]}}",
gsonOfWithStatusAndMessageAndData);
}
@Test
void testOf_WithStatusAndNullMessage() throws Exception {
- UnifiedResponse ofWithStatusAndNullMessage = UnifiedResponse.of(108, (String) null);
- assertEquals(108, ofWithStatusAndNullMessage.getStatus());
+ UnifiedResponse ofWithStatusAndNullMessage = UnifiedResponse.of("108", (String) null);
+ assertEquals("108", ofWithStatusAndNullMessage.getCode());
assertEquals("", ofWithStatusAndNullMessage.getMessage());
assertNull(ofWithStatusAndNullMessage.getData());
final String jacksonOfWithStatusAndNullMessage = jackson.writeValueAsString(ofWithStatusAndNullMessage);
- assertEquals("{\"status\":108,\"message\":\"\"}", jacksonOfWithStatusAndNullMessage);
+ assertEquals("{\"code\":\"108\",\"message\":\"\"}", jacksonOfWithStatusAndNullMessage);
final String gsonOfWithStatusAndNullMessage = gson.toJson(ofWithStatusAndNullMessage);
- assertEquals("{\"status\":108,\"message\":\"\"}", gsonOfWithStatusAndNullMessage);
+ assertEquals("{\"code\":\"108\",\"message\":\"\"}", gsonOfWithStatusAndNullMessage);
}
@Test
void testOf_WithStatusAndNullMessage_AndNullData() throws Exception {
- UnifiedResponse ofWithStatusAndNullMessageAndNullData = UnifiedResponse.of(108, (String) null, null);
+ UnifiedResponse ofWithStatusAndNullMessageAndNullData = UnifiedResponse.of("108", (String) null, null);
- assertEquals(108, ofWithStatusAndNullMessageAndNullData.getStatus());
+ assertEquals("108", ofWithStatusAndNullMessageAndNullData.getCode());
assertEquals("", ofWithStatusAndNullMessageAndNullData.getMessage());
assertNull(ofWithStatusAndNullMessageAndNullData.getData());
final String jacksonOfWithStatusAndNullMessageAndNullData = jackson.writeValueAsString(ofWithStatusAndNullMessageAndNullData);
- assertEquals("{\"status\":108,\"message\":\"\"}", jacksonOfWithStatusAndNullMessageAndNullData);
+ assertEquals("{\"code\":\"108\",\"message\":\"\"}", jacksonOfWithStatusAndNullMessageAndNullData);
final String gsonOfWithStatusAndNullMessageAndNullData = gson.toJson(ofWithStatusAndNullMessageAndNullData);
- assertEquals("{\"status\":108,\"message\":\"\"}", gsonOfWithStatusAndNullMessageAndNullData);
+ assertEquals("{\"code\":\"108\",\"message\":\"\"}", gsonOfWithStatusAndNullMessageAndNullData);
}
@Test
void testOf_WithStatusAndNullMessage_AndData() throws Exception {
PageResult emptyPageResult = PageResult.empty();
- UnifiedResponse ofWithStatusAndNullMessageAndData = UnifiedResponse.of(108, (String) null, emptyPageResult);
- assertEquals(108, ofWithStatusAndNullMessageAndData.getStatus());
+ UnifiedResponse> ofWithStatusAndNullMessageAndData = UnifiedResponse.of("108", (String) null, emptyPageResult);
+ assertEquals("108", ofWithStatusAndNullMessageAndData.getCode());
assertEquals("", ofWithStatusAndNullMessageAndData.getMessage());
assertEquals(emptyPageResult, ofWithStatusAndNullMessageAndData.getData());
final String jacksonOfWithStatusAndNullMessageAndData = jackson.writeValueAsString(ofWithStatusAndNullMessageAndData);
- assertEquals("{\"status\":108,\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", jacksonOfWithStatusAndNullMessageAndData);
+ assertEquals("{\"code\":\"108\",\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", jacksonOfWithStatusAndNullMessageAndData);
final String gsonOfWithStatusAndNullMessageAndData = gson.toJson(ofWithStatusAndNullMessageAndData);
- assertEquals("{\"status\":108,\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", gsonOfWithStatusAndNullMessageAndData);
+ assertEquals("{\"code\":\"108\",\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", gsonOfWithStatusAndNullMessageAndData);
}
@Test
void testOf_WithStatusAndEmptyMessage() throws Exception {
- UnifiedResponse ofWithStatusAndEmptyMessage = UnifiedResponse.of(108, "");
- assertEquals(108, ofWithStatusAndEmptyMessage.getStatus());
+ UnifiedResponse ofWithStatusAndEmptyMessage = UnifiedResponse.of("108", "");
+ assertEquals("108", ofWithStatusAndEmptyMessage.getCode());
assertEquals("", ofWithStatusAndEmptyMessage.getMessage());
assertNull(ofWithStatusAndEmptyMessage.getData());
final String jacksonOfWithStatusAndEmptyMessage = jackson.writeValueAsString(ofWithStatusAndEmptyMessage);
- assertEquals("{\"status\":108,\"message\":\"\"}", jacksonOfWithStatusAndEmptyMessage);
+ assertEquals("{\"code\":\"108\",\"message\":\"\"}", jacksonOfWithStatusAndEmptyMessage);
final String gsonOfWithStatusAndEmptyMessage = gson.toJson(ofWithStatusAndEmptyMessage);
- assertEquals("{\"status\":108,\"message\":\"\"}", gsonOfWithStatusAndEmptyMessage);
+ assertEquals("{\"code\":\"108\",\"message\":\"\"}", gsonOfWithStatusAndEmptyMessage);
}
@Test
void testOf_WithStatusAndEmptyMessage_AndNullData() throws Exception {
- UnifiedResponse ofWithStatusAndEmptyMessageAndNullData = UnifiedResponse.of(108, "", null);
+ UnifiedResponse ofWithStatusAndEmptyMessageAndNullData = UnifiedResponse.of("108", "", null);
- assertEquals(108, ofWithStatusAndEmptyMessageAndNullData.getStatus());
+ assertEquals("108", ofWithStatusAndEmptyMessageAndNullData.getCode());
assertEquals("", ofWithStatusAndEmptyMessageAndNullData.getMessage());
assertNull(ofWithStatusAndEmptyMessageAndNullData.getData());
final String jacksonOfWithStatusAndEmptyMessageAndNullData = jackson.writeValueAsString(ofWithStatusAndEmptyMessageAndNullData);
- assertEquals("{\"status\":108,\"message\":\"\"}", jacksonOfWithStatusAndEmptyMessageAndNullData);
+ assertEquals("{\"code\":\"108\",\"message\":\"\"}", jacksonOfWithStatusAndEmptyMessageAndNullData);
final String gsonOfWithStatusAndEmptyMessageAndNullData = gson.toJson(ofWithStatusAndEmptyMessageAndNullData);
- assertEquals("{\"status\":108,\"message\":\"\"}", gsonOfWithStatusAndEmptyMessageAndNullData);
+ assertEquals("{\"code\":\"108\",\"message\":\"\"}", gsonOfWithStatusAndEmptyMessageAndNullData);
}
@Test
void testOf_WithStatusAndEmptyMessage_AndData() throws Exception {
PageResult emptyPageResult = PageResult.empty();
- UnifiedResponse ofWithStatusAndEmptyMessageAndData = UnifiedResponse.of(108, "", emptyPageResult);
- assertEquals(108, ofWithStatusAndEmptyMessageAndData.getStatus());
+ UnifiedResponse> ofWithStatusAndEmptyMessageAndData = UnifiedResponse.of("108", "", emptyPageResult);
+ assertEquals("108", ofWithStatusAndEmptyMessageAndData.getCode());
assertEquals("", ofWithStatusAndEmptyMessageAndData.getMessage());
assertEquals(emptyPageResult, ofWithStatusAndEmptyMessageAndData.getData());
final String jacksonOfWithStatusAndEmptyMessageAndData = jackson.writeValueAsString(ofWithStatusAndEmptyMessageAndData);
- assertEquals("{\"status\":108,\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", jacksonOfWithStatusAndEmptyMessageAndData);
+ assertEquals("{\"code\":\"108\",\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", jacksonOfWithStatusAndEmptyMessageAndData);
final String gsonOfWithStatusAndEmptyMessageAndData = gson.toJson(ofWithStatusAndEmptyMessageAndData);
- assertEquals("{\"status\":108,\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", gsonOfWithStatusAndEmptyMessageAndData);
+ assertEquals("{\"code\":\"108\",\"message\":\"\",\"data\":{\"total\":0,\"content\":[]}}", gsonOfWithStatusAndEmptyMessageAndData);
}
@Test
void testOf_WithNullStatus() {
- final Object nullStatus = null;
+ final String nullStatus = null;
final String nullMessage = null;
final User user = new User("zhouxy", "zhouxy@gmail.com");
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/time/YearQuarterTests.java b/src/test/java/xyz/zhouxy/plusone/commons/time/YearQuarterTests.java
index fcb14a6..70e4c7e 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/time/YearQuarterTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/time/YearQuarterTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1173,19 +1173,4 @@ public class YearQuarterTests {
}
}
}
-
- @ParameterizedTest
- @ValueSource(ints = { -1, 0, 1, 1900, 2000, 2023, 2024, Year.MAX_VALUE, Year.MIN_VALUE })
- void test_min_And_max_sameYear(int year) {
- YearQuarter yq1 = YearQuarter.of(year, 1);
- YearQuarter anotherYq1 = YearQuarter.of(year, 1);
-
- assertEquals(yq1, YearQuarter.max(yq1, anotherYq1));
- assertEquals(yq1, YearQuarter.min(yq1, anotherYq1));
-
- YearQuarter yq2 = YearQuarter.of(year, 2);
- assertEquals(yq2, YearQuarter.max(yq1, yq2));
- assertEquals(yq1, YearQuarter.min(yq1, yq2));
-
- }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/ArrayToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/ArrayToolsTests.java
index 32423a1..3521906 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/ArrayToolsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/ArrayToolsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,9 +20,11 @@ import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -1087,4 +1089,26 @@ public class ArrayToolsTests {
// #endregion
// ================================
+ // ================================
+ // #region - invoke constructor
+ // ================================
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = ArrayTools.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
+
+ // ================================
+ // #endregion - invoke constructor
+ // ================================
+
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/AssertToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/AssertToolsTests.java
index b6ea20e..5127592 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/AssertToolsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/AssertToolsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,9 @@ package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.*;
+import java.lang.reflect.Constructor;
import java.time.LocalDate;
+import java.util.Arrays;
import java.util.Optional;
import java.util.function.Supplier;
@@ -939,4 +941,25 @@ public class AssertToolsTests {
// #endregion - Condition
+ // ================================
+ // #region - invoke constructor
+ // ================================
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = AssertTools.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
+
+ // ================================
+ // #endregion - invoke constructor
+ // ================================
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/BigDecimalsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/BigDecimalsTests.java
index 2fc6a0c..61e2b98 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/BigDecimalsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/BigDecimalsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,9 @@ package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.*;
+import java.lang.reflect.Constructor;
import java.math.BigDecimal;
+import java.util.Arrays;
import org.junit.jupiter.api.Test;
@@ -202,4 +204,17 @@ public class BigDecimalsTests {
assertEquals(bd, BigDecimals.of("10"));
}
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = BigDecimals.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/DateTimeToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/DateTimeToolsTests.java
index a1796bf..03005ae 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/DateTimeToolsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/DateTimeToolsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,12 @@ package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.lang.reflect.Constructor;
import java.time.DateTimeException;
import java.time.Instant;
import java.time.LocalDate;
@@ -32,6 +34,7 @@ import java.time.Year;
import java.time.YearMonth;
import java.time.ZoneId;
import java.time.ZonedDateTime;
+import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
@@ -493,4 +496,27 @@ class DateTimeToolsTests {
// ================================
// #endregion - toString
// ================================
+
+ // ================================
+ // #region - invoke constructor
+ // ================================
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = DateTimeTools.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
+
+ // ================================
+ // #endregion - invoke constructor
+ // ================================
+
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/EnumToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/EnumToolsTests.java
index d4442cd..9a695af 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/EnumToolsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/EnumToolsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,10 +17,15 @@
package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import java.lang.reflect.Constructor;
+import java.util.Arrays;
+
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
@@ -222,4 +227,18 @@ class EnumToolsTests {
assertSame(MyEnum.VALUE_0, EnumTools.valueOf(MyEnum.class, null, MyEnum.VALUE_0));
assertNull(EnumTools.valueOf(MyEnum.class, null, null));
}
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = EnumTools.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/IdGeneratorTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/IdGeneratorTests.java
index ccc3f59..f970df1 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/IdGeneratorTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/IdGeneratorTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,7 +17,12 @@
package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import java.lang.reflect.Constructor;
+import java.util.Arrays;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.LinkedBlockingQueue;
@@ -83,4 +88,17 @@ public class IdGeneratorTests {
IdGenerator.toSimpleString(id));
}
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = IdGenerator.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/NumbersTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/NumbersTests.java
index 1e2435f..0f8b9b1 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/NumbersTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/NumbersTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,9 +17,16 @@
package xyz.zhouxy.plusone.commons.util;
import org.junit.jupiter.api.Test;
+
+import java.lang.reflect.Constructor;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.util.Arrays;
+
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertThrows;
public
class NumbersTests {
@@ -184,4 +191,18 @@ class NumbersTests {
BigDecimal result = Numbers.nullToZero(value);
assertEquals(BigDecimal.ZERO, result);
}
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = Numbers.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/OptionalToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/OptionalToolsTests.java
index 79199e4..6569fca 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/OptionalToolsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/OptionalToolsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,13 @@ package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.lang.reflect.Constructor;
+import java.util.Arrays;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.OptionalInt;
@@ -184,4 +187,18 @@ class OptionalToolsTests {
Double result = OptionalTools.toDouble(OptionalDouble.of(10.0));
assertEquals(10.0, result, 0.0001);
}
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = OptionalTools.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/RandomToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/RandomToolsTests.java
index 2f63bc6..7a05601 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/RandomToolsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/RandomToolsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,9 +18,13 @@ package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import java.lang.reflect.Constructor;
import java.security.SecureRandom;
+import java.util.Arrays;
import java.util.Random;
import org.junit.jupiter.api.BeforeAll;
@@ -102,4 +106,18 @@ public class RandomToolsTests {
String result = RandomTools.secureRandomStr(sourceCharactersString, 5);
assertEquals(5, result.length());
}
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = RandomTools.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/RegexToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/RegexToolsTests.java
index 0d3fb8d..7ad974f 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/RegexToolsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/RegexToolsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,8 @@ package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.*;
+import java.lang.reflect.Constructor;
+import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -162,4 +164,18 @@ class RegexToolsTests {
RegexTools.getMatcher("abc", pattern);
});
}
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = RegexTools.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/StringToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/StringToolsTests.java
index b383ee6..94d88a5 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/StringToolsTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/StringToolsTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,14 @@ package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.lang.reflect.Constructor;
+import java.util.Arrays;
+
import org.junit.jupiter.api.Test;
public
@@ -84,4 +88,18 @@ class StringToolsTests {
void repeat_ZeroTimes_ReturnsEmptyString() {
assertEquals("", StringTools.repeat("Hello", 0));
}
+
+ @Test
+ void test_constructor_isNotAccessible_ThrowsIllegalStateException() {
+ Constructor>[] constructors = StringTools.class.getDeclaredConstructors();
+ Arrays.stream(constructors)
+ .forEach(constructor -> {
+ assertFalse(constructor.isAccessible());
+ constructor.setAccessible(true);
+ Throwable cause = assertThrows(Exception.class, constructor::newInstance)
+ .getCause();
+ assertInstanceOf(IllegalStateException.class, cause);
+ assertEquals("Utility class", cause.getMessage());
+ });
+ }
}
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/TreeBuilderTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/TreeBuilderTests.java
index 4249c40..cc7c022 100644
--- a/src/test/java/xyz/zhouxy/plusone/commons/util/TreeBuilderTests.java
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/TreeBuilderTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 the original author or authors.
+ * Copyright 2023-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -62,7 +62,7 @@ class TreeBuilderTests {
Menu::getMenuCode,
menu -> Optional.ofNullable(menu.parentMenuCode),
MenuList::addChild,
- Menu.orderNumComparator);
+ Comparator.comparing(Menu::getOrderNum));
@Test
void testBuildTreeAndSortedByOrderNum() {
@@ -70,31 +70,35 @@ class TreeBuilderTests {
List