aboutsummaryrefslogtreecommitdiff
path: root/src/share/classes/java/beans/DefaultPersistenceDelegate.java
diff options
context:
space:
mode:
authorlana <none@none>2010-06-07 17:08:26 -0700
committerlana <none@none>2010-06-07 17:08:26 -0700
commitccff0e0e43d4382df77e9e850249eb204496f411 (patch)
tree32acf0e07457aca44756ebb757d80c823f522a62 /src/share/classes/java/beans/DefaultPersistenceDelegate.java
parentd807b2caa7c62548b272e8a9a7cbc229f1c0b3d5 (diff)
parent9250509d4d1cf6646f820249b7884713609ac148 (diff)
Merge
Diffstat (limited to 'src/share/classes/java/beans/DefaultPersistenceDelegate.java')
-rw-r--r--src/share/classes/java/beans/DefaultPersistenceDelegate.java19
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);