diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/PreconditionsExt.java b/src/main/java/xyz/zhouxy/plusone/commons/util/PreconditionsExt.java index 909dfbb..f18b0e4 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/PreconditionsExt.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/PreconditionsExt.java @@ -18,9 +18,11 @@ package xyz.zhouxy.plusone.commons.util; import java.util.function.Supplier; +import com.google.common.base.Preconditions; + /** * Guava Preconditions 的扩展。 - * + * * @author ZhouXY * * @see com.google.common.base.Preconditions @@ -33,6 +35,21 @@ public class PreconditionsExt { } } + public static void checkAllNotNull(Iterable values) throws E { + Preconditions.checkNotNull(values); + for (T item : values) { + Preconditions.checkNotNull(item); + } + } + + @SafeVarargs + public static void checkAllNotNull(T... values) throws E { + Preconditions.checkNotNull(values); + for (T item : values) { + Preconditions.checkNotNull(item); + } + } + private PreconditionsExt() { throw new IllegalStateException("Utility class"); } diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/PreconditionsExtTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/PreconditionsExtTests.java new file mode 100644 index 0000000..923499f --- /dev/null +++ b/src/test/java/xyz/zhouxy/plusone/commons/util/PreconditionsExtTests.java @@ -0,0 +1,54 @@ +package xyz.zhouxy.plusone.commons.util; + +import org.junit.jupiter.api.Test; +import xyz.zhouxy.plusone.commons.exception.BaseException; + +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.*; + +class PreconditionsExtTests { + + @Test + void testCheck() { + assertThrows(TestException.class, () -> { + PreconditionsExt.check(false, () -> new TestException("Test error message.")); + }); + } + + @Test + void testCheckAllNotNull() { + assertThrows(NullPointerException.class, () -> { + Object[] array = null; + PreconditionsExt.checkAllNotNull(array); + }); + assertThrows(NullPointerException.class, + () -> PreconditionsExt.checkAllNotNull(new Object[]{new Object(), null})); + assertThrows(NullPointerException.class, + () -> PreconditionsExt.checkAllNotNull(new Object(), null)); + assertThrows(NullPointerException.class, + () -> PreconditionsExt.checkAllNotNull(Arrays.asList(new Object(), null))); + + PreconditionsExt.checkAllNotNull(new Object[]{new Object(), "Test"}); + PreconditionsExt.checkAllNotNull(new Object(), "Test"); + PreconditionsExt.checkAllNotNull(Arrays.asList(new Object(), "Test")); + } +} + +class TestException extends BaseException { + private static final long serialVersionUID = -8808661764734834820L; + + private static final String ERR_CODE = "TEST"; + + protected TestException(String msg) { + super(ERR_CODE, msg); + } + + protected TestException(Throwable cause) { + super(ERR_CODE, cause); + } + + protected TestException(String msg, Throwable cause) { + super(ERR_CODE, msg, cause); + } +}