使用 AssertTools 代替 PreconditionsExt。

dev
ZhouXY108 2024-10-11 17:11:06 +08:00
parent 304dccc658
commit b72fd59b46
4 changed files with 72 additions and 115 deletions

View File

@ -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");
}
}

View File

@ -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];
}

View File

@ -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");
}
}

View File

@ -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);
}
}