forked from plusone/plusone-commons
Compare commits
16 Commits
dev
...
maintenanc
Author | SHA1 | Date | |
---|---|---|---|
b0fce37a3e | |||
b6017454c7 | |||
6d5da7ab32 | |||
473e1ce223 | |||
3b9f0a30c2 | |||
34076294a7 | |||
c6df5cd925 | |||
91c0c18960 | |||
bc7b3eefa8 | |||
746603f939 | |||
73a99b630c | |||
f5b04a7ae8 | |||
dde3d1d172 | |||
e3d60ffe97 | |||
aadd1857de | |||
e98fe66b65 |
12
pom.xml
12
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>xyz.zhouxy.plusone</groupId>
|
<groupId>xyz.zhouxy.plusone</groupId>
|
||||||
<artifactId>plusone-commons</artifactId>
|
<artifactId>plusone-commons</artifactId>
|
||||||
<version>1.0.0</version>
|
<version>1.0.4</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<!-- Basic properties -->
|
<!-- Basic properties -->
|
||||||
@ -16,18 +16,18 @@
|
|||||||
<maven.compiler.target>1.8</maven.compiler.target>
|
<maven.compiler.target>1.8</maven.compiler.target>
|
||||||
|
|
||||||
<!-- Versions of compile dependencies -->
|
<!-- Versions of compile dependencies -->
|
||||||
<guava.version>33.4.0-jre</guava.version>
|
<guava.version>33.4.2-jre</guava.version>
|
||||||
<joda-time.version>2.13.0</joda-time.version>
|
<joda-time.version>2.14.0</joda-time.version>
|
||||||
|
|
||||||
<!-- Versions of test dependencies -->
|
<!-- Versions of test dependencies -->
|
||||||
<commons-lang3.version>3.17.0</commons-lang3.version>
|
<commons-lang3.version>3.17.0</commons-lang3.version>
|
||||||
<logback.version>1.2.13</logback.version>
|
<logback.version>1.2.13</logback.version>
|
||||||
<junit.version>5.11.4</junit.version>
|
<junit.version>5.12.1</junit.version>
|
||||||
<lombok.version>1.18.36</lombok.version>
|
<lombok.version>1.18.36</lombok.version>
|
||||||
<hutool.version>5.8.35</hutool.version>
|
<hutool.version>5.8.37</hutool.version>
|
||||||
<mybatis.version>3.5.19</mybatis.version>
|
<mybatis.version>3.5.19</mybatis.version>
|
||||||
<h2.version>2.2.224</h2.version>
|
<h2.version>2.2.224</h2.version>
|
||||||
<jackson.version>2.18.2</jackson.version>
|
<jackson.version>2.18.3</jackson.version>
|
||||||
<gson.version>2.12.1</gson.version>
|
<gson.version>2.12.1</gson.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ import java.lang.annotation.Target;
|
|||||||
* 标识方法是读方法,如 getter。
|
* 标识方法是读方法,如 getter。
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 1.0
|
* @since 1.0.0
|
||||||
* @see WriterMethod
|
* @see WriterMethod
|
||||||
*/
|
*/
|
||||||
@Target(ElementType.METHOD)
|
@Target(ElementType.METHOD)
|
||||||
|
@ -27,7 +27,7 @@ import java.lang.annotation.Target;
|
|||||||
* <p>标识方法为静态工厂方法
|
* <p>标识方法为静态工厂方法
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
@Target(ElementType.METHOD)
|
@Target(ElementType.METHOD)
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@ -29,7 +29,7 @@ import java.lang.annotation.Documented;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @since 1.0
|
* @since 1.0.0
|
||||||
* @see UnsupportedOperationException
|
* @see UnsupportedOperationException
|
||||||
*/
|
*/
|
||||||
@Documented
|
@Documented
|
||||||
|
@ -26,7 +26,7 @@ import java.lang.annotation.Target;
|
|||||||
* ValueObject - 值对象
|
* ValueObject - 值对象
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
@Inherited
|
@Inherited
|
||||||
@Target(ElementType.TYPE)
|
@Target(ElementType.TYPE)
|
||||||
|
@ -26,7 +26,7 @@ import java.lang.annotation.Target;
|
|||||||
* <p>该注解用于提醒、强调父类虽然有默认实现,但子类可以根据自己的需要覆写。</p>
|
* <p>该注解用于提醒、强调父类虽然有默认实现,但子类可以根据自己的需要覆写。</p>
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
@Target(ElementType.METHOD)
|
@Target(ElementType.METHOD)
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
|
@ -28,7 +28,7 @@ import java.lang.annotation.Target;
|
|||||||
* 标识方法是写方法,如 setter。
|
* 标识方法是写方法,如 setter。
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 1.0
|
* @since 1.0.0
|
||||||
* @see ReaderMethod
|
* @see ReaderMethod
|
||||||
*/
|
*/
|
||||||
@Target(ElementType.METHOD)
|
@Target(ElementType.METHOD)
|
||||||
|
@ -34,7 +34,7 @@ import com.google.common.collect.Table;
|
|||||||
* 集合工具类
|
* 集合工具类
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public class CollectionTools {
|
public class CollectionTools {
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ package xyz.zhouxy.plusone.commons.exception;
|
|||||||
* 数据不存在异常
|
* 数据不存在异常
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public final class DataNotExistsException extends Exception {
|
public final class DataNotExistsException extends Exception {
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ import xyz.zhouxy.plusone.commons.base.IWithCode;
|
|||||||
* 异常实现 {@link MultiTypesException} 的 {@link #getType} 方法,返回对应的场景类型。
|
* 异常实现 {@link MultiTypesException} 的 {@link #getType} 方法,返回对应的场景类型。
|
||||||
* </p>
|
* </p>
|
||||||
* <p>
|
* <p>
|
||||||
* 表示场景类型的枚举实现 {@link ExceptionType},其中的工厂方法用于创建类型对象。
|
* 表示场景类型的枚举实现 {@link ExceptionType},其中的工厂方法用于创建对应类型的异常。
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
|
@ -36,7 +36,7 @@ import xyz.zhouxy.plusone.commons.exception.MultiTypesException.ExceptionType;
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public final class ParsingFailureException
|
public final class ParsingFailureException
|
||||||
extends RuntimeException
|
extends RuntimeException
|
||||||
|
@ -27,7 +27,7 @@ package xyz.zhouxy.plusone.commons.exception.business;
|
|||||||
* <b>NOTE: 通常表示业务中的意外情况。如:用户错误输入、缺失必填字段、用户余额不足等。</b>
|
* <b>NOTE: 通常表示业务中的意外情况。如:用户错误输入、缺失必填字段、用户余额不足等。</b>
|
||||||
* </p>
|
* </p>
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public class BizException extends RuntimeException {
|
public class BizException extends RuntimeException {
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ import xyz.zhouxy.plusone.commons.exception.MultiTypesException;
|
|||||||
* <b>NOTE: 属业务异常</b>
|
* <b>NOTE: 属业务异常</b>
|
||||||
* </p>
|
* </p>
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public final class InvalidInputException
|
public final class InvalidInputException
|
||||||
extends RequestParamsException
|
extends RequestParamsException
|
||||||
|
@ -24,7 +24,7 @@ package xyz.zhouxy.plusone.commons.exception.business;
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public class RequestParamsException extends BizException {
|
public class RequestParamsException extends BizException {
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ package xyz.zhouxy.plusone.commons.exception.system;
|
|||||||
* 后续需要排查原因。
|
* 后续需要排查原因。
|
||||||
* </p>
|
* </p>
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public final class DataOperationResultException extends SysException {
|
public final class DataOperationResultException extends SysException {
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ package xyz.zhouxy.plusone.commons.exception.system;
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public class NoAvailableMacFoundException extends SysException {
|
public class NoAvailableMacFoundException extends SysException {
|
||||||
private static final long serialVersionUID = 152827098461071551L;
|
private static final long serialVersionUID = 152827098461071551L;
|
||||||
|
@ -24,7 +24,7 @@ package xyz.zhouxy.plusone.commons.exception.system;
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public class SysException extends RuntimeException {
|
public class SysException extends RuntimeException {
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ import java.util.function.Supplier;
|
|||||||
* 返回 {@code Optional<T>} 对象。
|
* 返回 {@code Optional<T>} 对象。
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
* @see Optional
|
* @see Optional
|
||||||
* @see Supplier
|
* @see Supplier
|
||||||
*/
|
*/
|
||||||
|
@ -19,14 +19,14 @@ package xyz.zhouxy.plusone.commons.function;
|
|||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Predicates
|
* PredicateTools
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* {@link Predicate} 相关操作。
|
* {@link Predicate} 相关操作。
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
* @see Predicate
|
* @see Predicate
|
||||||
*/
|
*/
|
||||||
public class PredicateTools {
|
public class PredicateTools {
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package xyz.zhouxy.plusone.commons.function;
|
package xyz.zhouxy.plusone.commons.function;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
public interface ThrowingPredicate<T, E extends Throwable> {
|
public interface ThrowingPredicate<T, E extends Throwable> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -26,7 +26,7 @@ import java.util.function.BiFunction;
|
|||||||
* 接受类型为 T 和 U 的两个参数,返回 {@code Optional<R>} 对象。
|
* 接受类型为 T 和 U 的两个参数,返回 {@code Optional<R>} 对象。
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
* @see Optional
|
* @see Optional
|
||||||
* @see BiFunction
|
* @see BiFunction
|
||||||
*/
|
*/
|
||||||
|
@ -26,7 +26,7 @@ import java.util.function.Function;
|
|||||||
* 接受类型为 T 的参数,返回 {@code Optional<R>} 对象。
|
* 接受类型为 T 的参数,返回 {@code Optional<R>} 对象。
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
* @see Optional
|
* @see Optional
|
||||||
* @see Function
|
* @see Function
|
||||||
*/
|
*/
|
||||||
|
@ -39,7 +39,7 @@ import xyz.zhouxy.plusone.commons.util.StringTools;
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 1.0
|
* @since 1.0.0
|
||||||
* @see xyz.zhouxy.plusone.commons.constant.PatternConsts#CHINESE_2ND_ID_CARD_NUMBER
|
* @see xyz.zhouxy.plusone.commons.constant.PatternConsts#CHINESE_2ND_ID_CARD_NUMBER
|
||||||
*/
|
*/
|
||||||
@ValueObject
|
@ValueObject
|
||||||
|
@ -30,7 +30,7 @@ import xyz.zhouxy.plusone.commons.util.AssertTools;
|
|||||||
* 带校验的字符串值对象
|
* 带校验的字符串值对象
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public abstract class ValidatableStringRecord<T extends ValidatableStringRecord<T>>
|
public abstract class ValidatableStringRecord<T extends ValidatableStringRecord<T>>
|
||||||
implements Comparable<T> {
|
implements Comparable<T> {
|
||||||
|
@ -37,7 +37,7 @@ import javax.annotation.Nullable;
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public class ArrayTools {
|
public class ArrayTools {
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ import xyz.zhouxy.plusone.commons.annotation.StaticFactoryMethod;
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public class BigDecimals {
|
public class BigDecimals {
|
||||||
|
|
||||||
|
@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -184,7 +184,7 @@ public class DateTimeTools {
|
|||||||
/**
|
/**
|
||||||
* 使用指定时区,将 {@link LocalDateTime} 对象转换为 {@link Instant} 对象
|
* 使用指定时区,将 {@link LocalDateTime} 对象转换为 {@link Instant} 对象
|
||||||
*
|
*
|
||||||
* @param LocalDateTime {@link LocalDateTime} 对象
|
* @param localDateTime {@link LocalDateTime} 对象
|
||||||
* @param zone 时区
|
* @param zone 时区
|
||||||
* @return {@link Instant} 对象
|
* @return {@link Instant} 对象
|
||||||
*/
|
*/
|
||||||
|
@ -42,7 +42,6 @@ import xyz.zhouxy.plusone.commons.exception.system.NoAvailableMacFoundException;
|
|||||||
* <li><a href="https://juejin.cn/post/7265516484029743138">关于若干读者,阅读“改良版雪花算法”后提出的几个共性问题的回复。</a></li>
|
* <li><a href="https://juejin.cn/post/7265516484029743138">关于若干读者,阅读“改良版雪花算法”后提出的几个共性问题的回复。</a></li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* </p>
|
* </p>
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
|
||||||
*/
|
*/
|
||||||
public class IdWorker {
|
public class IdWorker {
|
||||||
|
|
||||||
|
@ -26,13 +26,13 @@ import javax.annotation.Nullable;
|
|||||||
import com.google.common.annotations.Beta;
|
import com.google.common.annotations.Beta;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OptionalUtil
|
* OptionalTools
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* 提供一些 Optional 相关的方法
|
* 提供一些 Optional 相关的方法
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 0.1.0
|
* @since 1.0.0
|
||||||
* @see Optional
|
* @see Optional
|
||||||
* @see OptionalInt
|
* @see OptionalInt
|
||||||
* @see OptionalLong
|
* @see OptionalLong
|
||||||
|
@ -31,7 +31,7 @@ import javax.annotation.Nullable;
|
|||||||
* TreeBuilder
|
* TreeBuilder
|
||||||
*
|
*
|
||||||
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
|
||||||
* @since 1.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public class TreeBuilder<T, TSubTree extends T, TIdentity> {
|
public class TreeBuilder<T, TSubTree extends T, TIdentity> {
|
||||||
private final Function<T, TIdentity> identityGetter;
|
private final Function<T, TIdentity> identityGetter;
|
||||||
|
@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -184,24 +184,34 @@ public class PagingAndSortingQueryParamsTests {
|
|||||||
assertThrows(IllegalArgumentException.class, () -> queryParams.buildPagingParams()); // NOSONAR
|
assertThrows(IllegalArgumentException.class, () -> queryParams.buildPagingParams()); // NOSONAR
|
||||||
}
|
}
|
||||||
|
|
||||||
static final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testGson() throws Exception {
|
void testGson() {
|
||||||
Gson gson = new GsonBuilder()
|
Gson gson = new GsonBuilder()
|
||||||
.registerTypeAdapter(LocalDate.class, new TypeAdapter<LocalDate>() {
|
.registerTypeAdapter(LocalDate.class, new TypeAdapter<LocalDate>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(JsonWriter out, LocalDate value) throws IOException {
|
public void write(JsonWriter out, LocalDate value) throws IOException {
|
||||||
out.value(dateFormatter.format(value));
|
out.value(DateTimeFormatter.ISO_DATE.format(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LocalDate read(JsonReader in) throws IOException {
|
public LocalDate read(JsonReader in) throws IOException {
|
||||||
return LocalDate.parse(in.nextString(), dateFormatter);
|
return LocalDate.parse(in.nextString(), DateTimeFormatter.ISO_DATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
.registerTypeAdapter(LocalDateTime.class, new TypeAdapter<LocalDateTime>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(JsonWriter out, LocalDateTime value) throws IOException {
|
||||||
|
out.value(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LocalDateTime read(JsonReader in) throws IOException {
|
||||||
|
return LocalDateTime.parse(in.nextString(), DateTimeFormatter.ISO_LOCAL_DATE_TIME);
|
||||||
|
}
|
||||||
|
})
|
||||||
.create();
|
.create();
|
||||||
try (SqlSession session = sqlSessionFactory.openSession()) {
|
try (SqlSession session = sqlSessionFactory.openSession()) {
|
||||||
AccountQueryParams params = gson.fromJson(JSON_STR, AccountQueryParams.class);
|
AccountQueryParams params = gson.fromJson(JSON_STR, AccountQueryParams.class);
|
||||||
@ -212,6 +222,7 @@ public class PagingAndSortingQueryParamsTests {
|
|||||||
List<AccountVO> list = accountQueries.queryAccountList(params, pagingParams);
|
List<AccountVO> list = accountQueries.queryAccountList(params, pagingParams);
|
||||||
long count = accountQueries.countAccount(params);
|
long count = accountQueries.countAccount(params);
|
||||||
PageResult<AccountVO> accountPageResult = PageResult.of(list, count);
|
PageResult<AccountVO> accountPageResult = PageResult.of(list, count);
|
||||||
|
|
||||||
log.info(gson.toJson(accountPageResult));
|
log.info(gson.toJson(accountPageResult));
|
||||||
|
|
||||||
assertEquals(Lists.newArrayList(
|
assertEquals(Lists.newArrayList(
|
||||||
@ -226,7 +237,7 @@ public class PagingAndSortingQueryParamsTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
AccountQueryParams queryParams = gson.fromJson(WRONG_JSON_STR, AccountQueryParams.class);
|
AccountQueryParams queryParams = gson.fromJson(WRONG_JSON_STR, AccountQueryParams.class);
|
||||||
assertThrows(IllegalArgumentException.class, () -> queryParams.buildPagingParams()); // NOSONAR
|
assertThrows(IllegalArgumentException.class, queryParams::buildPagingParams);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -400,7 +400,7 @@ class DateTimeToolsTests {
|
|||||||
// ================================
|
// ================================
|
||||||
|
|
||||||
// ================================
|
// ================================
|
||||||
// #region - ZondId <--> DateTimeZone
|
// #region - ZoneId <--> DateTimeZone
|
||||||
// ================================
|
// ================================
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -412,7 +412,7 @@ class DateTimeToolsTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ================================
|
// ================================
|
||||||
// #endregion - ZondId <--> DateTimeZone
|
// #endregion - ZoneId <--> DateTimeZone
|
||||||
// ================================
|
// ================================
|
||||||
|
|
||||||
// ================================
|
// ================================
|
||||||
|
Loading…
x
Reference in New Issue
Block a user