使用 AssertTools 代替 PreconditionsExt。
parent
304dccc658
commit
b72fd59b46
|
@ -0,0 +1,71 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2022-2023 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.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package xyz.zhouxy.plusone.commons.util;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 断言工具
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* 不封装过多判断逻辑,鼓励充分使用项目中的工具类进行逻辑判断。
|
||||||
|
* 本工具类基本仅对表达式进行判断,并在表达式为 {@code false} 时抛出对应异常。
|
||||||
|
*/
|
||||||
|
public class AssertTools {
|
||||||
|
|
||||||
|
public static <T> void checkParameterNotNull(String paramName, T value) {
|
||||||
|
checkCondition(value != null,
|
||||||
|
() -> new IllegalArgumentException(String.format("The parameter \"%s\" cannot be null.", paramName)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> void checkParameterNotNull(T obj, String errMsg) {
|
||||||
|
checkCondition(obj != null, () -> new IllegalArgumentException(errMsg));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> void checkParameterNotNull(T obj, String format, Object... args) {
|
||||||
|
checkCondition(obj != null, () -> new IllegalArgumentException(String.format(format, args)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkParameter(boolean condition, String errMsg) {
|
||||||
|
checkCondition(condition, () -> new IllegalArgumentException(errMsg));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkParameter(boolean condition, String format, Object... args) {
|
||||||
|
checkCondition(condition, () -> new IllegalArgumentException(String.format(format, args)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkState(boolean condition, String errMsg) {
|
||||||
|
checkCondition(condition, () -> new IllegalStateException(errMsg));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkState(boolean condition, String format, Object... args) {
|
||||||
|
checkCondition(condition, () -> new IllegalStateException(String.format(format, args)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T extends Exception> void checkCondition(boolean condition, @Nonnull Supplier<T> e)
|
||||||
|
throws T {
|
||||||
|
if (!condition) {
|
||||||
|
throw e.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private AssertTools() {
|
||||||
|
throw new IllegalStateException("Utility class");
|
||||||
|
}
|
||||||
|
}
|
|
@ -46,7 +46,7 @@ public final class EnumTools {
|
||||||
public static <E extends Enum<?>> E valueOf(Class<E> clazz, int ordinal) { // NOSONAR 该方法弃用,但不删掉
|
public static <E extends Enum<?>> E valueOf(Class<E> clazz, int ordinal) { // NOSONAR 该方法弃用,但不删掉
|
||||||
Preconditions.checkNotNull(clazz, "Clazz must not be null.");
|
Preconditions.checkNotNull(clazz, "Clazz must not be null.");
|
||||||
E[] values = clazz.getEnumConstants();
|
E[] values = clazz.getEnumConstants();
|
||||||
PreconditionsExt.checkCondition((ordinal >= 0 && ordinal < values.length),
|
AssertTools.checkCondition((ordinal >= 0 && ordinal < values.length),
|
||||||
() -> new EnumConstantNotPresentException(clazz, Integer.toString(ordinal)));
|
() -> new EnumConstantNotPresentException(clazz, Integer.toString(ordinal)));
|
||||||
return values[ordinal];
|
return values[ordinal];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2022-2023 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.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package xyz.zhouxy.plusone.commons.util;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
|
|
||||||
import com.google.common.base.Preconditions;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Guava Preconditions 的扩展。
|
|
||||||
*
|
|
||||||
* @author ZhouXY
|
|
||||||
*
|
|
||||||
* @see com.google.common.base.Preconditions
|
|
||||||
*/
|
|
||||||
public class PreconditionsExt {
|
|
||||||
|
|
||||||
public static <E extends Throwable> void checkCondition(boolean condition, @Nonnull Supplier<E> e) throws E {
|
|
||||||
if (!condition) {
|
|
||||||
throw e.get();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <T, E extends Throwable> void checkAllNotNull(Iterable<T> values) throws E {
|
|
||||||
Preconditions.checkNotNull(values);
|
|
||||||
values.forEach(Preconditions::checkNotNull);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SafeVarargs
|
|
||||||
public static <T, E extends Throwable> void checkAllNotNull(T... values) throws E {
|
|
||||||
Preconditions.checkNotNull(values);
|
|
||||||
Arrays.stream(values).forEach(Preconditions::checkNotNull);
|
|
||||||
}
|
|
||||||
|
|
||||||
private PreconditionsExt() {
|
|
||||||
throw new IllegalStateException("Utility class");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,59 +0,0 @@
|
||||||
package xyz.zhouxy.plusone.commons.util;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
class PreconditionsExtTests {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testCheck() {
|
|
||||||
assertThrows(TestException.class, () -> {
|
|
||||||
PreconditionsExt.checkCondition(false, () -> new TestException("Test error message."));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testCheckAllNotNull() {
|
|
||||||
assertThrows(NullPointerException.class, () -> {
|
|
||||||
Object[] array = null;
|
|
||||||
PreconditionsExt.checkAllNotNull(array);
|
|
||||||
});
|
|
||||||
Object obj = new Object();
|
|
||||||
assertNotNull(obj);
|
|
||||||
assertThrows(NullPointerException.class,
|
|
||||||
() -> PreconditionsExt.checkAllNotNull(new Object[] { obj, null }));
|
|
||||||
assertThrows(NullPointerException.class,
|
|
||||||
() -> PreconditionsExt.checkAllNotNull(obj, null));
|
|
||||||
List<Object> list = Arrays.asList(obj, null);
|
|
||||||
assertNotNull(list);
|
|
||||||
assertThrows(NullPointerException.class,
|
|
||||||
() -> PreconditionsExt.checkAllNotNull(list));
|
|
||||||
|
|
||||||
PreconditionsExt.checkAllNotNull(new Object[] { obj, "Test" });
|
|
||||||
PreconditionsExt.checkAllNotNull(obj, "Test");
|
|
||||||
PreconditionsExt.checkAllNotNull(Arrays.asList(obj, "Test"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class TestException extends Exception {
|
|
||||||
private static final long serialVersionUID = -8808661764734834820L;
|
|
||||||
|
|
||||||
protected TestException(String msg) {
|
|
||||||
super(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected TestException(Throwable cause) {
|
|
||||||
super(cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected TestException(String msg, Throwable cause) {
|
|
||||||
super(msg, cause);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue