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);
+ }
}
}
}