forked from plusone/plusone-commons
使用 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 该方法弃用,但不删掉
|
||||
Preconditions.checkNotNull(clazz, "Clazz must not be null.");
|
||||
E[] values = clazz.getEnumConstants();
|
||||
PreconditionsExt.checkCondition((ordinal >= 0 && ordinal < values.length),
|
||||
AssertTools.checkCondition((ordinal >= 0 && ordinal < values.length),
|
||||
() -> new EnumConstantNotPresentException(clazz, Integer.toString(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