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 2007/06/27 21:58:14 UTC
svn commit: r551302 -
/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java
Author: aadamchik
Date: Wed Jun 27 12:58:13 2007
New Revision: 551302
URL: http://svn.apache.org/viewvc?view=rev&rev=551302
Log:
fixing a 3.0-only bug that disabled correct commit sorting of objects with reflexive relationships
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java?view=diff&rev=551302&r1=551301&r2=551302
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java Wed Jun 27 12:58:13 2007
@@ -29,11 +29,11 @@
import java.util.Map;
import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.DataObjectUtils;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.Persistent;
+import org.apache.cayenne.QueryResponse;
import org.apache.cayenne.query.ObjectIdQuery;
import org.apache.cayenne.reflect.ClassDescriptor;
import org.apache.commons.collections.comparators.ReverseComparator;
@@ -300,12 +300,19 @@
DbRelationship finalRel = (DbRelationship) toOneRel.getDbRelationships().get(0);
ObjectContext context = object.getObjectContext();
- // find snapshot
+ // find committed snapshot - so we can't fetch from the context as it will return
+ // dirty snapshot; must go down the stack instead
ObjectIdQuery query = new ObjectIdQuery(
object.getObjectId(),
true,
ObjectIdQuery.CACHE);
- DataRow snapshot = (DataRow) DataObjectUtils.objectForQuery(context, query);
+ QueryResponse response = context.getChannel().onQuery(null, query);
+ List result = response.firstList();
+ if(result == null || result.size() == 0) {
+ return null;
+ }
+
+ DataRow snapshot = (DataRow) result.get(0);
ObjectId id = snapshot.createTargetObjectId(targetEntityName, finalRel);
return (id != null) ? context.localObject(id, null) : null;