🐛 修复dataPermission获取空指针问题

This commit is contained in:
b2baccline
2021-01-28 21:40:36 +08:00
parent 76b0a20bb1
commit 6bf6588c6e

View File

@@ -13,6 +13,7 @@ import java.util.stream.Collectors;
* @author Hccake 2021/1/27
* @version 1.0
*/
@DataPermission
@RequiredArgsConstructor
public abstract class AbstractDataPermissionHandler implements DataPermissionHandler {
@@ -20,6 +21,12 @@ public abstract class AbstractDataPermissionHandler implements DataPermissionHan
private final static Map<String, DataPermission> DATA_PERMISSION_CACHE = new ConcurrentHashMap<>();
/**
* 提供一个默认的空值注解,用于缓存空值占位使用
*/
private final static DataPermission EMPTY_DATA_PERMISSION = AbstractDataPermissionHandler.class
.getAnnotation(DataPermission.class);
/**
* 系统配置的所有的数据范围
* @return 数据范围集合
@@ -69,14 +76,16 @@ public abstract class AbstractDataPermissionHandler implements DataPermissionHan
* @param mappedStatementId 类名.方法名
* @return 当前方法有效的数据权限注解
*/
public DataPermission getDataPermissionCache(String mappedStatementId) {
private DataPermission getDataPermissionCache(String mappedStatementId) {
DataPermission dataPermission;
if (DATA_PERMISSION_CACHE.containsKey(mappedStatementId)) {
return DATA_PERMISSION_CACHE.get(mappedStatementId);
dataPermission = DATA_PERMISSION_CACHE.get(mappedStatementId);
return EMPTY_DATA_PERMISSION.equals(dataPermission) ? null : dataPermission;
}
else {
DataPermission dataPermission = AnnotationUtil.findAnnotationByMappedStatementId(mappedStatementId,
DataPermission.class);
DATA_PERMISSION_CACHE.put(mappedStatementId, dataPermission);
dataPermission = AnnotationUtil.findAnnotationByMappedStatementId(mappedStatementId, DataPermission.class);
DATA_PERMISSION_CACHE.put(mappedStatementId,
dataPermission == null ? EMPTY_DATA_PERMISSION : dataPermission);
return dataPermission;
}
}