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