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 2007/10/05 10:32:25 UTC

svn commit: r582121 - in /cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test: java/org/apache/cayenne/access/NestedDataContextWriteTest.java resources/dml/access.NestedDataContextWriteTest.xml

Author: aadamchik
Date: Fri Oct  5 01:32:25 2007
New Revision: 582121

URL: http://svn.apache.org/viewvc?rev=582121&view=rev
Log:
CAY-698 "Null ObjectId" exception from DataContext.localObject()
(test case only - 3.0 is not affected by the bug itself as it uses a different merge algorithm)

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextWriteTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/dml/access.NestedDataContextWriteTest.xml

Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextWriteTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextWriteTest.java?rev=582121&r1=582120&r2=582121&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextWriteTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextWriteTest.java Fri Oct  5 01:32:25 2007
@@ -44,6 +44,44 @@
         return context;
     }
 
+    /**
+     * A test case for CAY-698 bug.
+     */
+    public void testNullifyToOne() throws Exception {
+        deleteTestData();
+        createTestData("testNullifyToOne");
+
+        DataContext context = createDataContext();
+        DataContext childContext = context.createChildDataContext();
+        DataContext childContextPeer = context.createChildDataContext();
+
+        Painting childP1 = (Painting) DataObjectUtils.objectForPK(
+                childContext,
+                Painting.class,
+                33001);
+
+        // trigger object creation in the peer nested DC
+        DataObjectUtils.objectForPK(childContextPeer, Painting.class, 33001);
+        childP1.setToArtist(null);
+
+        blockQueries();
+
+        try {
+            childContext.commitChangesToParent();
+            assertEquals(PersistenceState.COMMITTED, childP1.getPersistenceState());
+
+            Painting parentP1 = (Painting) context.getGraphManager().getNode(
+                    childP1.getObjectId());
+
+            assertNotNull(parentP1);
+            assertEquals(PersistenceState.MODIFIED, parentP1.getPersistenceState());
+            assertNull(parentP1.getToArtist());
+        }
+        finally {
+            unblockQueries();
+        }
+    }
+
     public void testCommitChangesToParent() throws Exception {
         deleteTestData();
         createTestData("testFlushChanges");

Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/dml/access.NestedDataContextWriteTest.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/dml/access.NestedDataContextWriteTest.xml?rev=582121&r1=582120&r2=582121&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/dml/access.NestedDataContextWriteTest.xml (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/dml/access.NestedDataContextWriteTest.xml Fri Oct  5 01:32:25 2007
@@ -109,4 +109,13 @@
 		</constructor-arg>
 	</bean>
 	
+	<bean id="testNullifyToOne" class="java.util.ArrayList">
+		<constructor-arg>
+			<list>
+				<ref bean="A1"/>
+				<ref bean="P1"/>
+			</list>
+		</constructor-arg>
+	</bean>
+	
 </beans>