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/10/15 00:02:02 UTC
svn commit: r464042 - in
/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src:
main/java/org/apache/cayenne/access/ test/java/org/apache/cayenne/access/
Author: aadamchik
Date: Sat Oct 14 15:02:00 2006
New Revision: 464042
URL: http://svn.apache.org/viewvc?view=rev&rev=464042
Log:
CAY-682: Generic Cayenne POJO enhancer
(removing direct Fault API access from DataRowUtils)
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataRowUtils.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/test/java/org/apache/cayenne/access/DataRowUtilsTst.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextTst.java
Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataRowUtils.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataRowUtils.java?view=diff&rev=464042&r1=464041&r2=464042
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataRowUtils.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataRowUtils.java Sat Oct 14 15:02:00 2006
@@ -20,15 +20,14 @@
package org.apache.cayenne.access;
import org.apache.cayenne.DataRow;
-import org.apache.cayenne.Fault;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.PersistenceState;
import org.apache.cayenne.Persistent;
-import org.apache.cayenne.ValueHolder;
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
+import org.apache.cayenne.property.ArcProperty;
import org.apache.cayenne.property.AttributeProperty;
import org.apache.cayenne.property.ClassDescriptor;
import org.apache.cayenne.property.CollectionProperty;
@@ -104,17 +103,9 @@
public boolean visitCollectionArc(CollectionProperty property) {
// "to many" relationships have no information to collect from
- // snapshot initialize a new empty list if requested, but otherwise
- // ignore snapshot data
-
- Object toManyList = property.readPropertyDirectly(object);
-
- if (toManyList == null) {
- property.writePropertyDirectly(object, null, Fault.getToManyFault());
- }
- else if (invalidateToManyRelationships
- && toManyList instanceof ValueHolder) {
- ((ValueHolder) toManyList).invalidate();
+ // snapshot
+ if (invalidateToManyRelationships) {
+ property.invalidate(object);
}
return true;
@@ -226,7 +217,7 @@
* Checks if an object has its to-one relationship target modified in memory.
*/
static boolean isToOneTargetModified(
- Property property,
+ ArcProperty property,
Persistent object,
ObjectDiff diff) {
@@ -234,12 +225,11 @@
return false;
}
- Object targetObject = property.readPropertyDirectly(object);
- if (targetObject instanceof Fault) {
+ if (property.isFault(object)) {
return false;
}
- Persistent toOneTarget = (Persistent) targetObject;
+ Persistent toOneTarget = (Persistent) property.readPropertyDirectly(object);
ObjectId currentId = (toOneTarget != null) ? toOneTarget.getObjectId() : null;
// if ObjectId is temporary, target is definitely modified...
Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/test/java/org/apache/cayenne/access/DataRowUtilsTst.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/test/java/org/apache/cayenne/access/DataRowUtilsTst.java?view=diff&rev=464042&r1=464041&r2=464042
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/test/java/org/apache/cayenne/access/DataRowUtilsTst.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/test/java/org/apache/cayenne/access/DataRowUtilsTst.java Sat Oct 14 15:02:00 2006
@@ -26,8 +26,8 @@
import org.apache.art.Painting;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.property.ArcProperty;
import org.apache.cayenne.property.ClassDescriptor;
-import org.apache.cayenne.property.Property;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.unit.CayenneTestCase;
@@ -74,7 +74,7 @@
getAccessStack().createTestData(DataContextTestBase.class, "testArtists", null);
ClassDescriptor d = context.getEntityResolver().getClassDescriptor("Painting");
- Property toArtist = d.getProperty("toArtist");
+ ArcProperty toArtist = (ArcProperty) d.getProperty("toArtist");
SelectQuery artistQ = new SelectQuery(Artist.class, Expression
.fromString("artistName = 'artist2'"));
@@ -109,7 +109,7 @@
Painting p1 = (Painting) paintings.get(0);
ClassDescriptor d = context.getEntityResolver().getClassDescriptor("Painting");
- Property toGallery = d.getProperty("toGallery");
+ ArcProperty toGallery = (ArcProperty) d.getProperty("toGallery");
ObjectDiff diff = context.getObjectStore().registerDiff(p1.getObjectId(), null);
assertFalse(DataRowUtils.isToOneTargetModified(toGallery, p1, diff));
Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextTst.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextTst.java?view=diff&rev=464042&r1=464041&r2=464042
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextTst.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextTst.java Sat Oct 14 15:02:00 2006
@@ -24,8 +24,8 @@
import org.apache.cayenne.Fault;
import org.apache.cayenne.FlattenedRelationshipsTst;
import org.apache.cayenne.PersistenceState;
+import org.apache.cayenne.property.ArcProperty;
import org.apache.cayenne.property.ClassDescriptor;
-import org.apache.cayenne.property.Property;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.testdo.relationship.FlattenedTest3;
import org.apache.cayenne.unit.RelationshipTestCase;
@@ -52,7 +52,7 @@
ClassDescriptor d = context.getEntityResolver().getClassDescriptor(
"FlattenedTest3");
- Property flattenedRel = d.getProperty("toFT1");
+ ArcProperty flattenedRel = (ArcProperty) d.getProperty("toFT1");
ObjectDiff diff = context.getObjectStore().registerDiff(ft3.getObjectId(), null);
assertFalse(DataRowUtils.isToOneTargetModified(flattenedRel, ft3, diff));