在项目中统一断言,简化if判断,为此封装一个类似junit的断言工具类。
import com.lenton.inner.common.exception.ErrorCode;
import org.apache.commons.lang3.StringUtils;
import java.util.Collection;
import java.util.Map;
import java.util.Objects;
import java.util.function.Predicate;
/**
* 断言,断言不通过抛出异常
* <p> 校验检查工具类 </p>
*
* @author mori
* @date 2021/07/27
*/
public final class Assert {
/**
* 断言这个 boolean 为 true
* <p>为 false 则抛出异常</p>
*
* @param expression boolean 值
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertTrue(boolean expression, ErrorCode errorCode, Object... params) {
if (!expression) {
throw ExceptionUtils.errorCodeException(errorCode,params);
}
}
/**
* 断言这个 boolean 为 false
* <p>为 true 则抛出异常</p>
*
* @param expression boolean 值
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertFalse(boolean expression,ErrorCode errorCode, Object... params) {
assertTrue(!expression, errorCode, params);
}
/**
* 断言这个 expression 为 true
* <p>为 false 则抛出异常</p>
*
* @param expression 断言函数
* @param entity 断言对象
* @param errorCode 错误代码
* @param params 消息参数
*/
public static <T> void assertTrue(Predicate<T> expression, T entity, ErrorCode errorCode, Object... params) {
assertTrue(expression.test(entity), errorCode, params);
}
/**
* 断言这个字符串不是空白
* <p>为空白字符串 则抛出异常</p>
*
* @param str str
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertNotBlank(String str, ErrorCode errorCode, Object... params) {
assertTrue(StringUtils::isNotBlank, str, errorCode, params);
}
/**
* 断言这个Object为null
* <p>不为null 则抛出异常</p>
*
* @param object 对象
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertNull(Object object, ErrorCode errorCode, Object... params) {
assertTrue(Objects::isNull, object, errorCode, params);
}
/**
* 断言这个Object不为null
* <p>为null 则抛出异常</p>
*
*
* @param object 对象
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertNotNull(Object object, ErrorCode errorCode, Object... params) {
assertTrue(Objects::nonNull, object, errorCode, params);
}
/**
* 断言这个集合不是empty
* <p>为empty 则抛出异常</p>
*
* @param collection 集合
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertNotEmpty(Collection<?> collection, ErrorCode errorCode, Object... params) {
assertTrue(CollectionUtils.isNotEmpty(collection), errorCode, params);
}
/**
* 断言这个集合是empty
* <p>不为empty 则抛出异常</p>
*
* @param collection 集合
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertEmpty(Collection<?> collection, ErrorCode errorCode, Object... params) {
assertTrue(CollectionUtils.isEmpty(collection), errorCode, params);
}
/**
* 断言这个 map 不为 empty
* <p>为 empty 则抛异常</p>
*
* @param map 集合
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertNotEmpty(Map<?, ?> map, ErrorCode errorCode, Object... params) {
assertTrue(CollectionUtils.isNotEmpty(map), errorCode, params);
}
/**
* 断言这个 map 为 empty
* <p>不为 empty 则抛异常</p>
*
* @param map 集合
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertEmpty(Map<?, ?> map, ErrorCode errorCode, Object... params) {
assertTrue(CollectionUtils.isEmpty(map), errorCode, params);
}
/**
* 断言这个 数组 不为 empty
* <p>为 empty 则抛异常</p>
*
* @param array 数组
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertNotEmpty(Object[] array,ErrorCode errorCode, Object... params) {
assertTrue(ArrayUtils.isNotEmpty(array), errorCode, params);
}
/**
* 断言两个对象相等
* <p>不相等 则抛出异常</p>
*
* @param object 对象1
* @param other 对象2
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertEquals(Object object, Object other, ErrorCode errorCode, Object... params) {
assertTrue(Objects.equals(object, other), errorCode, params);
}
/**
* 断言两个对象不相等
* <p>相等 则抛出异常</p>
*
* @param object 对象1
* @param other 对象2
* @param errorCode 错误代码
* @param params 消息参数
*/
public static void assertNotEquals(Object object, Object other, ErrorCode errorCode, Object... params) {
assertTrue(!Objects.equals(object, other), errorCode, params);
}
}