From 17bd0b2366c65dbc2a211887b596122685f03032 Mon Sep 17 00:00:00 2001 From: kamhung <22250530@qq.com> Date: Mon, 7 Dec 2015 09:48:57 +0800 Subject: [PATCH] --- src/com/wentch/redkale/util/Reproduce.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/com/wentch/redkale/util/Reproduce.java b/src/com/wentch/redkale/util/Reproduce.java index 32f227cea..8282e4580 100644 --- a/src/com/wentch/redkale/util/Reproduce.java +++ b/src/com/wentch/redkale/util/Reproduce.java @@ -51,6 +51,25 @@ public interface Reproduce { { mv = (cw.visitMethod(ACC_PUBLIC, "copy", "(" + destDesc + srcDesc + ")" + destDesc, null, null)); //mv.setDebug(true); + + for (java.lang.reflect.Field field : srcClass.getFields()) { + if (Modifier.isStatic(field.getModifiers())) continue; + if (Modifier.isFinal(field.getModifiers())) continue; + if (!Modifier.isPublic(field.getModifiers())) continue; + final String fname = field.getName(); + try { + if (!field.getType().equals(destClass.getField(fname).getType())) continue; + if (!columnPredicate.test(fname)) continue; + } catch (Exception e) { + continue; + } + mv.visitVarInsn(ALOAD, 1); + mv.visitVarInsn(ALOAD, 2); + String td = Type.getDescriptor(field.getType()); + mv.visitFieldInsn(GETFIELD, srcName, fname, td); + mv.visitFieldInsn(PUTFIELD, destName, fname, td); + } + for (java.lang.reflect.Method getter : srcClass.getMethods()) { if (Modifier.isStatic(getter.getModifiers())) continue; if (getter.getParameterCount() > 0) continue;