You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/05/26 06:28:11 UTC

svn commit: r409554 - /incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/ObjectStore.java

Author: aadamchik
Date: Thu May 25 21:28:11 2006
New Revision: 409554

URL: http://svn.apache.org/viewvc?rev=409554&view=rev
Log:
some cleanup - no real changes

Modified:
    incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/ObjectStore.java

Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/ObjectStore.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/ObjectStore.java?rev=409554&r1=409553&r2=409554&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/ObjectStore.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/ObjectStore.java Thu May 25 21:28:11 2006
@@ -1131,39 +1131,50 @@
         DataObject object = (DataObject) objectMap.get(nodeId);
 
         // no object, or HOLLOW object require no processing
-        if (object != null && object.getPersistenceState() != PersistenceState.HOLLOW) {
+        if (object != null) {
 
-            // perform same steps as resolveHollow()
-            if (object.getPersistenceState() == PersistenceState.COMMITTED) {
-                // consult delegate if it exists
-                DataContextDelegate delegate = object.getDataContext().nonNullDelegate();
-                if (delegate.shouldMergeChanges(object, diff)) {
-                    ObjEntity entity = object
-                            .getDataContext()
-                            .getEntityResolver()
-                            .lookupObjEntity(object);
-                    DataRow snapshot = getSnapshot(object.getObjectId());
-                    DataRowUtils
-                            .refreshObjectWithSnapshot(entity, object, snapshot, true);
-                    delegate.finishedMergeChanges(object);
-                }
+            int state = object.getPersistenceState();
+            if (state != PersistenceState.HOLLOW) {
+
+                // perform same steps as resolveHollow()
+                if (state == PersistenceState.COMMITTED) {
+                    // consult delegate if it exists
+                    DataContextDelegate delegate = context.nonNullDelegate();
+                    if (delegate.shouldMergeChanges(object, diff)) {
+                        ObjEntity entity = context.getEntityResolver().lookupObjEntity(
+                                object);
 
-                return;
-            }
+                        // TODO: andrus, 5/26/2006 - call to 'getSnapshot' is expensive,
+                        // however my attempts to merge the 'diff' instead of snapshot
+                        // via 'refreshObjectWithSnapshot' resulted in even worse
+                        // performance.
+                        // This sounds counterintuitive (Not sure if this is some HotSpot
+                        // related glitch)... still keeping the old algorithm here until
+                        // we
+                        // switch from snapshot events to GraphEvents and all this code
+                        // becomes obsolete.
+                        DataRow snapshot = getSnapshot(object.getObjectId());
 
-            // merge modified and deleted
-            if (object.getPersistenceState() == PersistenceState.DELETED
-                    || object.getPersistenceState() == PersistenceState.MODIFIED) {
+                        DataRowUtils.refreshObjectWithSnapshot(
+                                entity,
+                                object,
+                                snapshot,
+                                true);
+                        delegate.finishedMergeChanges(object);
+                    }
+                }
+                // merge modified and deleted
+                else if (state == PersistenceState.DELETED
+                        || state == PersistenceState.MODIFIED) {
 
-                // consult delegate if it exists
-                DataContextDelegate delegate = object.getDataContext().nonNullDelegate();
-                if (delegate.shouldMergeChanges(object, diff)) {
-                    ObjEntity entity = object
-                            .getDataContext()
-                            .getEntityResolver()
-                            .lookupObjEntity(object);
-                    DataRowUtils.forceMergeWithSnapshot(entity, object, diff);
-                    delegate.finishedMergeChanges(object);
+                    // consult delegate if it exists
+                    DataContextDelegate delegate = context.nonNullDelegate();
+                    if (delegate.shouldMergeChanges(object, diff)) {
+                        ObjEntity entity = context.getEntityResolver().lookupObjEntity(
+                                object);
+                        DataRowUtils.forceMergeWithSnapshot(entity, object, diff);
+                        delegate.finishedMergeChanges(object);
+                    }
                 }
             }
         }