diff options
author | lana <none@none> | 2010-06-07 17:08:26 -0700 |
---|---|---|
committer | lana <none@none> | 2010-06-07 17:08:26 -0700 |
commit | ccff0e0e43d4382df77e9e850249eb204496f411 (patch) | |
tree | 32acf0e07457aca44756ebb757d80c823f522a62 /src/share/classes/java/beans/DefaultPersistenceDelegate.java | |
parent | d807b2caa7c62548b272e8a9a7cbc229f1c0b3d5 (diff) | |
parent | 9250509d4d1cf6646f820249b7884713609ac148 (diff) |
Merge
Diffstat (limited to 'src/share/classes/java/beans/DefaultPersistenceDelegate.java')
-rw-r--r-- | src/share/classes/java/beans/DefaultPersistenceDelegate.java | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/share/classes/java/beans/DefaultPersistenceDelegate.java b/src/share/classes/java/beans/DefaultPersistenceDelegate.java index a02588f29..d5c24edcb 100644 --- a/src/share/classes/java/beans/DefaultPersistenceDelegate.java +++ b/src/share/classes/java/beans/DefaultPersistenceDelegate.java @@ -222,6 +222,25 @@ public class DefaultPersistenceDelegate extends PersistenceDelegate { // Write out the properties of this instance. private void initBean(Class type, Object oldInstance, Object newInstance, Encoder out) { + for (Field field : type.getFields()) { + int mod = field.getModifiers(); + if (Modifier.isFinal(mod) || Modifier.isStatic(mod) || Modifier.isTransient(mod)) { + continue; + } + try { + Expression oldGetExp = new Expression(field, "get", new Object[] { oldInstance }); + Expression newGetExp = new Expression(field, "get", new Object[] { newInstance }); + Object oldValue = oldGetExp.getValue(); + Object newValue = newGetExp.getValue(); + out.writeExpression(oldGetExp); + if (!equals(newValue, out.get(oldValue))) { + out.writeStatement(new Statement(field, "set", new Object[] { oldInstance, oldValue })); + } + } + catch (Exception exception) { + out.getExceptionListener().exceptionThrown(exception); + } + } BeanInfo info; try { info = Introspector.getBeanInfo(type); |