From a113b5d85b8dc8414309282075d6b791151b3caa Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Mon, 6 Jul 2009 21:55:31 +0000 Subject: [PATCH] We only want non-static, public fields. --- .../samskivert/depot/util/RuntimeUtil.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/java/com/samskivert/depot/util/RuntimeUtil.java b/src/java/com/samskivert/depot/util/RuntimeUtil.java index 9870731..8744207 100644 --- a/src/java/com/samskivert/depot/util/RuntimeUtil.java +++ b/src/java/com/samskivert/depot/util/RuntimeUtil.java @@ -21,8 +21,11 @@ package com.samskivert.depot.util; import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.List; import com.google.common.base.Function; +import com.google.common.collect.Lists; import com.samskivert.depot.PersistentRecord; @@ -39,7 +42,7 @@ public class RuntimeUtil public static

Function makeToRuntime ( Class

pclass, final Class rclass) { - final Field[] rfields = rclass.getFields(); + final Field[] rfields = getRuntimeFields(rclass); final Field[] pfields = getPersistentFields(pclass, rfields); return new Function() { public R apply (P record) { @@ -64,7 +67,7 @@ public class RuntimeUtil public static Function makeToRecord ( Class rclass, final Class

pclass) { - final Field[] rfields = rclass.getFields(); + final Field[] rfields = getRuntimeFields(rclass); final Field[] pfields = getPersistentFields(pclass, rfields); return new Function() { public P apply (R object) { @@ -81,6 +84,18 @@ public class RuntimeUtil }; } + protected static Field[] getRuntimeFields (Class rclass) + { + List fields = Lists.newArrayList(); + for (Field field : rclass.getFields()) { + int mods = field.getModifiers(); + if (!Modifier.isStatic(mods) && Modifier.isPublic(mods)) { + fields.add(field); + } + } + return fields.toArray(new Field[fields.size()]); + } + protected static Field[] getPersistentFields ( Class pclass, Field[] rfields) {