You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ol...@apache.org on 2011/12/20 12:12:13 UTC
svn commit: r1221202 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/graph/ChildDiffLoader.java
test/java/org/apache/cayenne/NestedCayenneContextTest.java
Author: oltka
Date: Tue Dec 20 11:12:13 2011
New Revision: 1221202
URL: http://svn.apache.org/viewvc?rev=1221202&view=rev
Log:
CAY-1636 added tests for this problem
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/graph/ChildDiffLoader.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/NestedCayenneContextTest.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/graph/ChildDiffLoader.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/graph/ChildDiffLoader.java?rev=1221202&r1=1221201&r2=1221202&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/graph/ChildDiffLoader.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/graph/ChildDiffLoader.java Tue Dec 20 11:12:13 2011
@@ -122,11 +122,15 @@ public class ChildDiffLoader implements
public void nodeRemoved(Object nodeId) {
setExternalChange(Boolean.TRUE);
-
- try {
- context.deleteObjects(findObject(nodeId));
- }
- finally {
+ Persistent object = findObject(nodeId);
+ if (object != null) {
+ try {
+ context.deleteObjects(object);
+ }
+ finally {
+ setExternalChange(Boolean.FALSE);
+ }
+ } else {
setExternalChange(Boolean.FALSE);
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/NestedCayenneContextTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/NestedCayenneContextTest.java?rev=1221202&r1=1221201&r2=1221202&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/NestedCayenneContextTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/NestedCayenneContextTest.java Tue Dec 20 11:12:13 2011
@@ -574,6 +574,96 @@ public class NestedCayenneContextTest ex
assertEquals(PersistenceState.DELETED, parentDeleted.getPersistenceState());
assertEquals("DDD", parentDeleted.getGlobalAttribute1());
}
+
+
+ /*
+ * was added for CAY-1636
+ */
+ public void testCAY1636() throws Exception {
+
+ ClientMtTooneMaster A = clientContext.newObject(ClientMtTooneMaster.class);
+ clientContext.commitChanges();
+
+ ClientMtTooneDep B = clientContext.newObject(ClientMtTooneDep.class);
+ A.setToDependent(B);
+ clientContext.commitChanges();
+
+ ObjectContext child = clientContext.createChildContext();
+
+ SelectQuery query = new SelectQuery(ClientMtTooneMaster.class);
+ List<?> objects = child.performQuery(query);
+
+ assertEquals(1, objects.size());
+
+ ClientMtTooneMaster childDeleted = (ClientMtTooneMaster) objects.get(0);
+
+
+ child.deleteObjects(childDeleted);
+
+ child.commitChangesToParent();
+
+ ClientMtTooneMaster parentDeleted = (ClientMtTooneMaster) clientContext
+ .getGraphManager()
+ .getNode(childDeleted.getObjectId());
+
+ assertNotNull(parentDeleted);
+ assertEquals(PersistenceState.DELETED, parentDeleted.getPersistenceState());
+
+ clientContext.commitChanges();
+
+ SelectQuery query2 = new SelectQuery(ClientMtTooneMaster.class);
+ List<?> objects2 = child.performQuery(query2);
+
+ assertEquals(0, objects2.size());
+
+ }
+
+ public void testCAY1636_2() throws Exception {
+
+ ClientMtTooneMaster A = clientContext.newObject(ClientMtTooneMaster.class);
+ clientContext.commitChanges();
+
+ ClientMtTooneDep B = clientContext.newObject(ClientMtTooneDep.class);
+ A.setToDependent(B);
+ clientContext.commitChanges();
+
+ ObjectContext child = clientContext.createChildContext();
+
+ SelectQuery queryB = new SelectQuery(ClientMtTooneDep.class);
+ List<?> objectsB = child.performQuery(queryB);
+
+ assertEquals(1, objectsB.size());
+
+ ClientMtTooneDep childBDeleted = (ClientMtTooneDep) objectsB.get(0);
+ child.deleteObjects(childBDeleted);
+
+ SelectQuery query = new SelectQuery(ClientMtTooneMaster.class);
+ List<?> objects = child.performQuery(query);
+
+ assertEquals(1, objects.size());
+
+ ClientMtTooneMaster childDeleted = (ClientMtTooneMaster) objects.get(0);
+
+
+ child.deleteObjects(childDeleted);
+
+ child.commitChangesToParent();
+
+ ClientMtTooneMaster parentDeleted = (ClientMtTooneMaster) clientContext
+ .getGraphManager()
+ .getNode(childDeleted.getObjectId());
+
+ assertNotNull(parentDeleted);
+ assertEquals(PersistenceState.DELETED, parentDeleted.getPersistenceState());
+
+ clientContext.commitChanges();
+
+ SelectQuery query2 = new SelectQuery(ClientMtTooneMaster.class);
+ List<?> objects2 = child.performQuery(query2);
+
+ assertEquals(0, objects2.size());
+
+ }
public void testCommitChanges() throws Exception {
clientContext.newObject(ClientMtTable1.class);