Skip to content

Commit 3843e1b

Browse files
authored
fix(bean): 修复FastBeanCopier对CharSequence属性的复制支持 (#353)
* fix(bean): 修复FastBeanCopier对CharSequence属性的复制支持 * test(bean): 补充CharSequence复制回归测试
1 parent 5e8f735 commit 3843e1b

2 files changed

Lines changed: 31 additions & 2 deletions

File tree

hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ public <T> T convert(Object source, Class<T> targetClass, Class[] genericType) {
587587
return convert(val, targetClass, genericType);
588588
}
589589
}
590-
if (targetClass == String.class) {
590+
if (targetClass == String.class || targetClass == CharSequence.class) {
591591
if (source instanceof Date) {
592592
// TODO: 18-4-16 自定义格式
593593
return (T) DateFormatter.toString(((Date) source), "yyyy-MM-dd HH:mm:ss");

hsweb-core/src/test/java/org/hswebframework/web/bean/FastBeanCopierTest.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,19 @@ public void testMapList() {
161161

162162
}
163163

164+
@Test
165+
public void testCharSequence() {
166+
StringBuilder builder = new StringBuilder("test");
167+
CharSequenceTarget beanTarget = FastBeanCopier.copy(new CharSequenceSource(builder), new CharSequenceTarget());
168+
Assert.assertSame(builder, beanTarget.getValue());
169+
170+
Map<String, Object> source = new HashMap<>();
171+
source.put("value", 123);
172+
173+
CharSequenceTarget mapTarget = FastBeanCopier.copy(source, new CharSequenceTarget());
174+
Assert.assertEquals("123", String.valueOf(mapTarget.getValue()));
175+
}
176+
164177
@Getter
165178
@Setter
166179
public static class Config {
@@ -178,6 +191,22 @@ public String toString() {
178191
}
179192
}
180193

194+
@Getter
195+
@Setter
196+
public static class CharSequenceSource {
197+
private CharSequence value;
198+
199+
public CharSequenceSource(CharSequence value) {
200+
this.value = value;
201+
}
202+
}
203+
204+
@Getter
205+
@Setter
206+
public static class CharSequenceTarget {
207+
private CharSequence value;
208+
}
209+
181210
@Test
182211
public void testCopyMap() {
183212

@@ -337,4 +366,4 @@ public static class ExtendableSuper extends DefaultExtendable {
337366
public static class ExtendableExtends extends ExtendableSuper {
338367
private String name;
339368
}
340-
}
369+
}

0 commit comments

Comments
 (0)