mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
add test
This commit is contained in:
parent
8683caaad0
commit
64fdf75fc6
@ -2,9 +2,10 @@
|
||||
# 🚀Changelog
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
# 5.8.0.M2 (2022-03-28)
|
||||
# 5.8.0.M2 (2022-03-29)
|
||||
|
||||
### ❌不兼容特性
|
||||
* 【extra 】 【可能兼容问题】BeanCopierCache的key结构变更
|
||||
|
||||
### 🐣新特性
|
||||
|
||||
|
@ -29,24 +29,37 @@ public enum BeanCopierCache {
|
||||
* @return Map中对应的BeanCopier
|
||||
*/
|
||||
public BeanCopier get(Class<?> srcClass, Class<?> targetClass, Converter converter) {
|
||||
final String key = genKey(srcClass, targetClass, converter);
|
||||
return cache.get(key, () -> BeanCopier.create(srcClass, targetClass, converter != null));
|
||||
return get(srcClass, targetClass, null != converter);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得类与转换器生成的key
|
||||
* 获得类与转换器生成的key在{@link BeanCopier}的Map中对应的元素
|
||||
*
|
||||
* @param srcClass 源Bean的类
|
||||
* @param targetClass 目标Bean的类
|
||||
* @param converter 转换器
|
||||
* @param srcClass 源Bean的类
|
||||
* @param targetClass 目标Bean的类
|
||||
* @param useConverter 是否使用转换器
|
||||
* @return Map中对应的BeanCopier
|
||||
* @since 5.8.0
|
||||
*/
|
||||
public BeanCopier get(Class<?> srcClass, Class<?> targetClass, boolean useConverter) {
|
||||
final String key = genKey(srcClass, targetClass, useConverter);
|
||||
return cache.get(key, () -> BeanCopier.create(srcClass, targetClass, useConverter));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得类与转换器生成的key<br>
|
||||
* 结构类似于:srcClassName#targetClassName#1 或者 srcClassName#targetClassName#0
|
||||
*
|
||||
* @param srcClass 源Bean的类
|
||||
* @param targetClass 目标Bean的类
|
||||
* @param useConverter 是否使用转换器
|
||||
* @return 属性名和Map映射的key
|
||||
*/
|
||||
private String genKey(Class<?> srcClass, Class<?> targetClass, Converter converter) {
|
||||
private String genKey(Class<?> srcClass, Class<?> targetClass, boolean useConverter) {
|
||||
final StringBuilder key = StrUtil.builder()
|
||||
.append(srcClass.getName()).append('#').append(targetClass.getName());
|
||||
if(null != converter){
|
||||
key.append('#').append(converter.getClass().getName());
|
||||
}
|
||||
.append(srcClass.getName())
|
||||
.append('#').append(targetClass.getName())
|
||||
.append('#').append(useConverter ? 1 : 0);
|
||||
return key.toString();
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cn.hutool.extra.cglib;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import lombok.Data;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
@ -9,23 +10,36 @@ public class CglibUtilTest {
|
||||
@Test
|
||||
public void copyTest() {
|
||||
SampleBean bean = new SampleBean();
|
||||
bean.setValue("Hello world");
|
||||
|
||||
OtherSampleBean otherBean = new OtherSampleBean();
|
||||
bean.setValue("Hello world");
|
||||
bean.setValue2("123");
|
||||
|
||||
CglibUtil.copy(bean, otherBean);
|
||||
Assert.assertEquals("Hello world", otherBean.getValue());
|
||||
// 无定义转换器,转换失败
|
||||
Assert.assertEquals(0, otherBean.getValue2());
|
||||
|
||||
OtherSampleBean otherBean2 = CglibUtil.copy(bean, OtherSampleBean.class);
|
||||
Assert.assertEquals("Hello world", otherBean2.getValue());
|
||||
// 无定义转换器,转换失败
|
||||
Assert.assertEquals(0, otherBean.getValue2());
|
||||
|
||||
otherBean = new OtherSampleBean();
|
||||
//自定义转换器
|
||||
CglibUtil.copy(bean, otherBean, (value, target, context) -> Convert.convertQuietly(target, value));
|
||||
Assert.assertEquals("Hello world", otherBean.getValue());
|
||||
Assert.assertEquals(123, otherBean.getValue2());
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class SampleBean {
|
||||
private String value;
|
||||
private String value2;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class OtherSampleBean {
|
||||
private String value;
|
||||
private int value2;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user