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


Reply via email to