修复DictUtils未检查类型转换并补充单元测试
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.ruoyi.common.constant.CacheConstants;
|
||||
import com.ruoyi.common.core.domain.entity.SysDictData;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
@@ -42,15 +43,25 @@ public class DictUtils
|
||||
public static List<SysDictData> getDictCache(String key)
|
||||
{
|
||||
Object cacheObject = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));
|
||||
if (cacheObject instanceof List)
|
||||
{
|
||||
return (List<SysDictData>) cacheObject;
|
||||
}
|
||||
if (cacheObject instanceof JSONArray)
|
||||
{
|
||||
JSONArray arrayCache = (JSONArray) cacheObject;
|
||||
return arrayCache.toList(SysDictData.class);
|
||||
}
|
||||
if (cacheObject instanceof List<?>)
|
||||
{
|
||||
List<?> listCache = (List<?>) cacheObject;
|
||||
List<SysDictData> dictDatas = new ArrayList<SysDictData>(listCache.size());
|
||||
for (Object item : listCache)
|
||||
{
|
||||
if (!(item instanceof SysDictData))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
dictDatas.add((SysDictData) item);
|
||||
}
|
||||
return dictDatas;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.ruoyi.common.core.cache.InMemoryCacheStore;
|
||||
import com.ruoyi.common.core.domain.entity.SysDictData;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
@@ -43,4 +44,23 @@ class DictUtilsTest
|
||||
assertEquals("正常", dictCache.get(0).getDictLabel());
|
||||
assertEquals("0", dictCache.get(0).getDictValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldReturnDictListWhenCacheStoresJsonArray()
|
||||
{
|
||||
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
||||
RedisCache redisCache = new RedisCache(new InMemoryCacheStore());
|
||||
beanFactory.registerSingleton("redisCache", redisCache);
|
||||
ReflectionTestUtils.setField(SpringUtils.class, "beanFactory", beanFactory);
|
||||
|
||||
JSONArray jsonArray = JSONArray.parseArray("[{\"dictType\":\"sys_normal_disable\",\"dictLabel\":\"正常\",\"dictValue\":\"0\"}]");
|
||||
redisCache.setCacheObject(DictUtils.getCacheKey("sys_normal_disable"), jsonArray);
|
||||
|
||||
List<SysDictData> dictCache = DictUtils.getDictCache("sys_normal_disable");
|
||||
|
||||
assertNotNull(dictCache);
|
||||
assertEquals(1, dictCache.size());
|
||||
assertEquals("正常", dictCache.get(0).getDictLabel());
|
||||
assertEquals("0", dictCache.get(0).getDictValue());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user