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 00:25:04 UTC

svn commit: r409489 - /incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/DataRowStore.java

Author: aadamchik
Date: Thu May 25 15:25:03 2006
New Revision: 409489

URL: http://svn.apache.org/viewvc?rev=409489&view=rev
Log:
Fixing even sender. Related to:

"CAY-525 - speeding up snapshot lookups when converting rows to objects on select"

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

Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/DataRowStore.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/DataRowStore.java?rev=409489&r1=409488&r2=409489&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/DataRowStore.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/DataRowStore.java Thu May 25 15:25:03 2006
@@ -74,6 +74,7 @@
 import org.objectstyle.cayenne.DataRow;
 import org.objectstyle.cayenne.ObjectId;
 import org.objectstyle.cayenne.PersistenceState;
+import org.objectstyle.cayenne.Persistent;
 import org.objectstyle.cayenne.access.event.SnapshotEvent;
 import org.objectstyle.cayenne.event.EventBridge;
 import org.objectstyle.cayenne.event.EventBridgeFactory;
@@ -245,11 +246,11 @@
             startListeners();
         }
     }
-    
+
     /**
      * Updates cached snapshots for the list of objects.
      * 
-     * @since 1.2 
+     * @since 1.2
      */
     void snapshotsUpdatedForObjects(List objects, List snapshots, boolean refresh) {
 
@@ -264,12 +265,13 @@
         }
 
         Map modified = null;
+        Object eventPostedBy = null;
 
         synchronized (this) {
             int size = objects.size();
 
             for (int i = 0; i < size; i++) {
-                DataObject object = (DataObject) objects.get(i);
+                Persistent object = (Persistent) objects.get(i);
 
                 // skip HOLLOW objects as they likely were created from partial snapshots
                 if (object.getPersistenceState() == PersistenceState.HOLLOW) {
@@ -288,8 +290,10 @@
 
                     if (cachedSnapshot != null) {
                         // use old snapshot if no changes occurred
-                        if (cachedSnapshot.equals(newSnapshot)) {
-                            object.setSnapshotVersion(cachedSnapshot.getVersion());
+                        if (object instanceof DataObject
+                                && cachedSnapshot.equals(newSnapshot)) {
+                            ((DataObject) object).setSnapshotVersion(cachedSnapshot
+                                    .getVersion());
                             continue;
                         }
                         else {
@@ -299,6 +303,7 @@
 
                     if (modified == null) {
                         modified = new HashMap();
+                        eventPostedBy = object.getObjectContext().getGraphManager();
                     }
 
                     modified.put(oid, newSnapshot);
@@ -307,7 +312,7 @@
 
             if (modified != null) {
                 processSnapshotChanges(
-                        this,
+                        eventPostedBy,
                         modified,
                         Collections.EMPTY_LIST,
                         Collections.EMPTY_LIST,