Browse Source

优化数组支持

zhouhao 7 years ago
parent
commit
8c42dcd691

+ 7 - 2
hsweb-boost/hsweb-boost-compiler/src/main/java/org/hswebframework/web/boost/bean/FastBeanCopier.java

@@ -58,7 +58,8 @@ public class FastBeanCopier {
     }
 
     public static void copy(Object source, Object target, Converter converter, String... ignore) {
-        getCopier(source, target, true).copy(source, target, (ignore == null || ignore.length == 0) ? new HashSet<>() : new HashSet<>(Arrays.asList(ignore)), converter);
+        getCopier(source, target, true)
+                .copy(source, target, (ignore == null || ignore.length == 0) ? new HashSet<>() : new HashSet<>(Arrays.asList(ignore)), converter);
     }
 
     private static String createCacheKey(Class source, Class target) {
@@ -162,8 +163,12 @@ public class FastBeanCopier {
                         .append(source.getReadMethod().getName())
                         .append("()!=null");
             }
+            String targetTypeName = target.getPropertyType().getName();
+            if (target.getPropertyType().isArray()) {
+                targetTypeName = target.getPropertyType().getComponentType().getName() + "[]";
+            }
             convertCode.append("){\n");
-            convertCode.append(target.getPropertyType().getName())
+            convertCode.append(targetTypeName)
                     .append(" ")
                     .append(target.getName()).append("=");
             String convert = "converter.convert((Object)(" + getReadSourceObjectValueCode() + "),"

+ 1 - 0
hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/FastBeanCopierTest.java

@@ -23,6 +23,7 @@ public class FastBeanCopierTest {
         Source source = new Source();
         source.setAge(100);
         source.setName("测试");
+        source.setIds(new String[]{"1","2","3"});
         NestObject nestObject = new NestObject();
         nestObject.setAge(10);
         nestObject.setName("测试2");

+ 1 - 0
hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/NestObject.java

@@ -11,4 +11,5 @@ public class NestObject {
     private String name;
 
     private int age;
+
 }

+ 1 - 0
hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/Source.java

@@ -6,6 +6,7 @@ import lombok.Data;
 public class Source {
     private String name;
     private int    age;
+    private String[] ids;
 
     private NestObject nestObject;
 

+ 1 - 0
hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/Target.java

@@ -6,6 +6,7 @@ import lombok.Data;
 public class Target {
     private String name;
     private int   age;
+    private String[] ids;
     private NestObject nestObject;
 
 }