Converter转换规则变更,空对象、空值转为Bean时,创建默认对象,而非nul

This commit is contained in:
Looly
2024-07-11 12:43:27 +08:00
parent dc561b12e3
commit e9e4a49132
6 changed files with 61 additions and 16 deletions

View File

@@ -12,40 +12,52 @@
package org.dromara.hutool.core.convert;
import org.junit.jupiter.api.Assertions;
import lombok.Data;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Type;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
/**
* ConverterRegistry 单元测试
* @author Looly
*
* @author Looly
*/
public class CompositeConverterTest {
@Test
void convertEmptyTest() {
final Object convert = CompositeConverter.getInstance().convert(EmptyBean.class, "");
assertNotNull(convert);
assertEquals(new EmptyBean(), convert);
}
@Data
public static class EmptyBean {}
@Test
public void getConverterTest() {
final Converter converter = CompositeConverter.getInstance().getConverter(CharSequence.class, false);
Assertions.assertNotNull(converter);
assertNotNull(converter);
}
@Test
public void customTest(){
public void customTest() {
final int a = 454553;
final CompositeConverter compositeConverter = CompositeConverter.getInstance();
CharSequence result = (CharSequence) compositeConverter.convert(CharSequence.class, a);
Assertions.assertEquals("454553", result);
assertEquals("454553", result);
//此处做为示例自定义CharSequence转换因为Hutool中已经提供CharSequence转换请尽量不要替换
//替换可能引发关联转换异常例如覆盖CharSequence转换会影响全局
compositeConverter.putCustom(CharSequence.class, new CustomConverter());
result = (CharSequence) compositeConverter.convert(CharSequence.class, a);
Assertions.assertEquals("Custom: 454553", result);
assertEquals("Custom: 454553", result);
}
public static class CustomConverter implements Converter{
public static class CustomConverter implements Converter {
@Override
public Object convert(final Type targetType, final Object value) throws ConvertException {
return "Custom: " + value.toString();

View File

@@ -34,7 +34,7 @@ public class Issue3136Test {
final SmsRes smsRes = XmlUtil.xmlToBean(XmlUtil.parseXml(xmlStr).getDocumentElement(), SmsRes.class);
Assertions.assertEquals("02", smsRes.getCode());
Assertions.assertNull(smsRes.getMessage());
Assertions.assertEquals(new Message(), smsRes.getMessage());
}
@Data