Author: aadamchik Date: Mon Jun 26 06:22:41 2006 New Revision: 417184 URL: http://svn.apache.org/viewvc?rev=417184&view=rev Log: CAY-551
Modified: incubator/cayenne/main/branches/PROTO-3.0/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java incubator/cayenne/main/branches/PROTO-3.0/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java Modified: incubator/cayenne/main/branches/PROTO-3.0/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java?rev=417184&r1=417183&r2=417184&view=diff ============================================================================== --- incubator/cayenne/main/branches/PROTO-3.0/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java (original) +++ incubator/cayenne/main/branches/PROTO-3.0/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/ObjectContextChangeLog.java Mon Jun 26 06:22:41 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/branches/PROTO-3.0/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java?rev=417184&r1=417183&r2=417184&view=diff ============================================================================== --- incubator/cayenne/main/branches/PROTO-3.0/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java (original) +++ incubator/cayenne/main/branches/PROTO-3.0/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/CayenneContextDeleteRulesTst.java Mon Jun 26 06:22:41 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(); + } }