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/06/26 15:26:23 UTC

svn commit: r417187 - in /incubator/cayenne/main/trunk/cayenne/cayenne-java/src: cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java

Author: aadamchik
Date: Mon Jun 26 06:26:23 2006
New Revision: 417187

URL: http://svn.apache.org/viewvc?rev=417187&view=rev
Log:
CAY-551

Modified:
    incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java
    incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java

Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java?rev=417187&r1=417186&r2=417187&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java Mon Jun 26 06:26:23 2006
@@ -65,6 +65,8 @@
 import java.util.List;
 import java.util.Map;
 
+import org.objectstyle.cayenne.graph.ArcCreateOperation;
+import org.objectstyle.cayenne.graph.ArcDeleteOperation;
 import org.objectstyle.cayenne.graph.CompoundDiff;
 import org.objectstyle.cayenne.graph.GraphDiff;
 import org.objectstyle.cayenne.graph.NodeDiff;
@@ -94,6 +96,16 @@
 
                 if (nodeId.equals(((NodeDiff) next).getNodeId())) {
                     it.remove();
+                }
+                else if (next instanceof ArcCreateOperation) {
+                    if (nodeId.equals(((ArcCreateOperation) next).getTargetNodeId())) {
+                        it.remove();
+                    }
+                }
+                else if (next instanceof ArcDeleteOperation) {
+                    if (nodeId.equals(((ArcDeleteOperation) next).getTargetNodeId())) {
+                        it.remove();
+                    }
                 }
             }
         }

Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java?rev=417187&r1=417186&r2=417187&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java Mon Jun 26 06:26:23 2006
@@ -148,4 +148,25 @@
         // And be sure that the commit works afterwards, just for sanity
         context.commitChanges();
     }
+
+    public void testCascadeToOneNewObject() {
+        CayenneContext context = createClientContext();
+
+        ClientMtDeleteRule related = (ClientMtDeleteRule) context
+                .newObject(ClientMtDeleteRule.class);
+        context.commitChanges();
+
+        ClientMtDeleteCascade object = (ClientMtDeleteCascade) context
+                .newObject(ClientMtDeleteCascade.class);
+        object.setName("object");
+        object.setCascade(related);
+
+        context.deleteObject(object);
+        assertEquals(PersistenceState.TRANSIENT, object.getPersistenceState());
+        assertEquals(PersistenceState.DELETED, related.getPersistenceState());
+        assertFalse(context.deletedObjects().contains(object));
+        assertTrue(context.deletedObjects().contains(related));
+
+        context.commitChanges();
+    }
 }