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 2011/05/22 18:24:45 UTC

svn commit: r1126041 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test: java/org/apache/cayenne/access/ java/org/apache/cayenne/testdo/relationship/ java/org/apache/cayenne/testdo/relationship/auto/ resources/

Author: aadamchik
Date: Sun May 22 16:24:44 2011
New Revision: 1126041

URL: http://svn.apache.org/viewvc?rev=1126041&view=rev
Log:
CAY-1565 CayenneCase unit tests conversion(5)

patches by Dzmitry Kazimirchyk - NestedDataContextParentPeerEventsTest + changing the test from
Artist/Painting to a clean one-to-many setup with no double mappjg of tables and no runtime relationships

Added:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/Child.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/Master.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/auto/_Child.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/auto/_Master.java
Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/cayenne-relationships.xml
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/relationships.map.xml

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsTest.java?rev=1126041&r1=1126040&r2=1126041&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsTest.java Sun May 22 16:24:44 2011
@@ -20,116 +20,112 @@
 package org.apache.cayenne.access;
 
 import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.CayenneCase;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.testdo.relationship.Child;
+import org.apache.cayenne.testdo.relationship.Master;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.apache.cayenne.unit.util.ThreadedTestHelper;
 
-public class NestedDataContextParentPeerEventsTest extends CayenneCase {
+@UseServerRuntime(ServerCase.RELATIONSHIPS_PROJECT)
+public class NestedDataContextParentPeerEventsTest extends ServerCase {
 
-    public void testPeerObjectUpdatedSimpleProperty() throws Exception {
-        DataContext context = createDataContext();
-
-        Artist a = context.newObject(Artist.class);
-        a.setArtistName("X");
-        context.commitChanges();
-
-        DataContext parentPeer = createDataContextWithSharedCache(false);
-        Artist a1 = (Artist) parentPeer.localObject(a.getObjectId(), a);
+    @Inject
+    private DataContext parentContext1;
 
-        final ObjectContext peer2 = context.createChildContext();
-        final Artist a2 = (Artist) peer2.localObject(a.getObjectId(), a);
+    @Inject
+    private DataContext parentContext2;
 
-        a1.setArtistName("Y");
-        assertEquals("X", a2.getArtistName());
-        parentPeer.commitChangesToParent();
+    public void testPeerObjectUpdatedSimpleProperty() throws Exception {
+        Master a = parentContext1.newObject(Master.class);
+        a.setName("X");
+        parentContext1.commitChanges();
+
+        Master a1 = (Master) parentContext2.localObject(a.getObjectId(), a);
+
+        final ObjectContext child = parentContext1.createChildContext();
+        final Master a2 = (Master) child.localObject(a.getObjectId(), a);
+
+        a1.setName("Y");
+        assertEquals("X", a2.getName());
+        parentContext2.commitChangesToParent();
 
         new ThreadedTestHelper() {
 
             @Override
             protected void assertResult() throws Exception {
-                assertEquals("Y", a2.getArtistName());
+                assertEquals("Y", a2.getName());
 
-                assertFalse("Peer data context became dirty on event processing", peer2
+                assertFalse("Peer data context became dirty on event processing", child
                         .hasChanges());
             }
         }.assertWithTimeout(2000);
     }
 
     public void testPeerObjectUpdatedToOneRelationship() throws Exception {
+        Master a = parentContext1.newObject(Master.class);
+        Master altA = parentContext1.newObject(Master.class);
 
-        DataContext context = createDataContext();
-
-        Artist a = context.newObject(Artist.class);
-        Artist altA = context.newObject(Artist.class);
-
-        Painting p = context.newObject(Painting.class);
-        p.setToArtist(a);
-        p.setPaintingTitle("PPP");
-        a.setArtistName("X");
-        altA.setArtistName("Y");
-        context.commitChanges();
-
-        DataContext parentPeer = createDataContextWithSharedCache(false);
-        Painting p1 = (Painting) parentPeer.localObject(p.getObjectId(), p);
-        Artist altA1 = (Artist) parentPeer.localObject(altA.getObjectId(), altA);
-
-        final ObjectContext peer2 = context.createChildContext();
-        final Painting p2 = (Painting) peer2.localObject(p.getObjectId(), p);
-        final Artist altA2 = (Artist) peer2.localObject(altA.getObjectId(), altA);
-        Artist a2 = (Artist) peer2.localObject(a.getObjectId(), a);
-
-        p1.setToArtist(altA1);
-        assertSame(a2, p2.getToArtist());
-        assertNotSame(altA2, p2.getToArtist());
-        parentPeer.commitChangesToParent();
+        Child p = parentContext1.newObject(Child.class);
+        p.setMaster(a);
+        a.setName("X");
+        altA.setName("Y");
+        parentContext1.commitChanges();
+
+        Child p1 = (Child) parentContext2.localObject(p.getObjectId(), null);
+        Master altA1 = (Master) parentContext2.localObject(altA.getObjectId(), null);
+
+        final ObjectContext childContext1 = parentContext1.createChildContext();
+        final Child p2 = (Child) childContext1.localObject(p.getObjectId(), p);
+        final Master altA2 = (Master) childContext1.localObject(altA.getObjectId(), altA);
+        Master a2 = (Master) childContext1.localObject(a.getObjectId(), a);
+
+        p1.setMaster(altA1);
+        assertSame(a2, p2.getMaster());
+        assertNotSame(altA2, p2.getMaster());
+        parentContext2.commitChanges();
 
         new ThreadedTestHelper() {
 
             @Override
             protected void assertResult() throws Exception {
-                assertSame(altA2, p2.getToArtist());
-                assertFalse("Peer data context became dirty on event processing", peer2
-                        .hasChanges());
+                assertSame(altA2, p2.getMaster());
+                assertFalse(
+                        "Peer data context became dirty on event processing",
+                        childContext1.hasChanges());
             }
         }.assertWithTimeout(2000);
     }
 
     public void testPeerObjectUpdatedToManyRelationship() throws Exception {
+        Master a = parentContext1.newObject(Master.class);
+        a.setName("X");
 
-        DataContext context = createDataContext();
-
-        Artist a = context.newObject(Artist.class);
-        a.setArtistName("X");
-
-        Painting px = context.newObject(Painting.class);
-        px.setToArtist(a);
-        px.setPaintingTitle("PX");
+        Child px = parentContext1.newObject(Child.class);
+        px.setMaster(a);
 
-        Painting py = context.newObject(Painting.class);
-        py.setPaintingTitle("PY");
+        Child py = parentContext1.newObject(Child.class);
 
-        context.commitChanges();
+        parentContext1.commitChanges();
 
-        DataContext parentPeer = createDataContextWithSharedCache(false);
-        Painting py1 = (Painting) parentPeer.localObject(py.getObjectId(), py);
-        Artist a1 = (Artist) parentPeer.localObject(a.getObjectId(), a);
+        Child py1 = (Child) parentContext2.localObject(py.getObjectId(), py);
+        Master a1 = (Master) parentContext2.localObject(a.getObjectId(), a);
 
-        final ObjectContext peer2 = context.createChildContext();
-        final Painting py2 = (Painting) peer2.localObject(py.getObjectId(), py);
-        final Artist a2 = (Artist) peer2.localObject(a.getObjectId(), a);
+        final ObjectContext peer2 = parentContext1.createChildContext();
+        final Child py2 = (Child) peer2.localObject(py.getObjectId(), py);
+        final Master a2 = (Master) peer2.localObject(a.getObjectId(), a);
 
-        a1.addToPaintingArray(py1);
-        assertEquals(1, a2.getPaintingArray().size());
-        assertFalse(a2.getPaintingArray().contains(py2));
-        parentPeer.commitChangesToParent();
+        a1.addToChildren(py1);
+        assertEquals(1, a2.getChildren().size());
+        assertFalse(a2.getChildren().contains(py2));
+        parentContext2.commitChangesToParent();
 
         new ThreadedTestHelper() {
 
             @Override
             protected void assertResult() throws Exception {
-                assertEquals(2, a2.getPaintingArray().size());
-                assertTrue(a2.getPaintingArray().contains(py2));
+                assertEquals(2, a2.getChildren().size());
+                assertTrue(a2.getChildren().contains(py2));
 
                 assertFalse("Peer data context became dirty on event processing", peer2
                         .hasChanges());

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/Child.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/Child.java?rev=1126041&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/Child.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/Child.java Sun May 22 16:24:44 2011
@@ -0,0 +1,7 @@
+package org.apache.cayenne.testdo.relationship;
+
+import org.apache.cayenne.testdo.relationship.auto._Child;
+
+public class Child extends _Child {
+
+}

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/Master.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/Master.java?rev=1126041&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/Master.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/Master.java Sun May 22 16:24:44 2011
@@ -0,0 +1,7 @@
+package org.apache.cayenne.testdo.relationship;
+
+import org.apache.cayenne.testdo.relationship.auto._Master;
+
+public class Master extends _Master {
+
+}

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/auto/_Child.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/auto/_Child.java?rev=1126041&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/auto/_Child.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/auto/_Child.java Sun May 22 16:24:44 2011
@@ -0,0 +1,27 @@
+package org.apache.cayenne.testdo.relationship.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.testdo.relationship.Master;
+
+/**
+ * Class _Child was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _Child extends CayenneDataObject {
+
+    public static final String MASTER_PROPERTY = "master";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public void setMaster(Master master) {
+        setToOneTarget("master", master, true);
+    }
+
+    public Master getMaster() {
+        return (Master)readProperty("master");
+    }
+
+
+}

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/auto/_Master.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/auto/_Master.java?rev=1126041&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/auto/_Master.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/relationship/auto/_Master.java Sun May 22 16:24:44 2011
@@ -0,0 +1,40 @@
+package org.apache.cayenne.testdo.relationship.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.testdo.relationship.Child;
+
+/**
+ * Class _Master was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _Master extends CayenneDataObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String CHILDREN_PROPERTY = "children";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void addToChildren(Child obj) {
+        addToManyTarget("children", obj, true);
+    }
+    public void removeFromChildren(Child obj) {
+        removeToManyTarget("children", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<Child> getChildren() {
+        return (List<Child>)readProperty("children");
+    }
+
+
+}

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/cayenne-relationships.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/cayenne-relationships.xml?rev=1126041&r1=1126040&r2=1126041&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/cayenne-relationships.xml (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/cayenne-relationships.xml Sun May 22 16:24:44 2011
@@ -2,4 +2,3 @@
 <domain project-version="6">
 	<map name="relationships"/>
 </domain>
-

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/relationships.map.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/relationships.map.xml?rev=1126041&r1=1126040&r2=1126041&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/relationships.map.xml (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/relationships.map.xml Sun May 22 16:24:44 2011
@@ -4,6 +4,10 @@
 	 xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap http://cayenne.apache.org/schema/3.0/modelMap.xsd"
 	 project-version="6">
 	<property name="defaultPackage" value="org.apache.cayenne.testdo.relationship"/>
+	<db-entity name="CHILD">
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="MASTER_ID" type="INTEGER"/>
+	</db-entity>
 	<db-entity name="CLOB_DETAIL">
 		<db-attribute name="CLOB_DETAIL_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
 		<db-attribute name="CLOB_MASTER_ID" type="INTEGER"/>
@@ -93,6 +97,10 @@
 		<db-attribute name="MAP_TO_MANY_ID" type="INTEGER"/>
 		<db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
 	</db-entity>
+	<db-entity name="MASTER">
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" length="100"/>
+	</db-entity>
 	<db-entity name="MEANINGFUL_FK">
 		<db-attribute name="MEANIGNFUL_FK_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
 		<db-attribute name="RELATIONSHIP_HELPER_ID" type="INTEGER" isMandatory="true"/>
@@ -135,6 +143,8 @@
 	<db-entity name="TO_ONEFK2">
 		<db-attribute name="TO_ONEFK2_PK" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
 	</db-entity>
+	<obj-entity name="Child" className="org.apache.cayenne.testdo.relationship.Child" dbEntityName="CHILD">
+	</obj-entity>
 	<obj-entity name="ClobDetail" className="org.apache.cayenne.testdo.relationship.ClobDetail" dbEntityName="CLOB_DETAIL">
 		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
 	</obj-entity>
@@ -181,6 +191,9 @@
 	<obj-entity name="MapToManyTarget" className="org.apache.cayenne.testdo.relationship.MapToManyTarget" dbEntityName="MAP_TO_MANY_TARGET">
 		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
 	</obj-entity>
+	<obj-entity name="Master" className="org.apache.cayenne.testdo.relationship.Master" dbEntityName="MASTER">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
 	<obj-entity name="MeaningfulFK" className="org.apache.cayenne.testdo.relationship.MeaningfulFK" dbEntityName="MEANINGFUL_FK">
 		<obj-attribute name="relationshipHelperID" type="java.lang.Integer" db-attribute-path="RELATIONSHIP_HELPER_ID"/>
 	</obj-entity>
@@ -209,6 +222,9 @@
 	</obj-entity>
 	<obj-entity name="ToOneFK2" className="org.apache.cayenne.testdo.relationship.ToOneFK2" dbEntityName="TO_ONEFK2">
 	</obj-entity>
+	<db-relationship name="master" source="CHILD" target="MASTER" toMany="false">
+		<db-attribute-pair source="MASTER_ID" target="ID"/>
+	</db-relationship>
 	<db-relationship name="master" source="CLOB_DETAIL" target="CLOB_MASTER" toMany="false">
 		<db-attribute-pair source="CLOB_MASTER_ID" target="CLOB_MASTER_ID"/>
 	</db-relationship>
@@ -305,6 +321,9 @@
 	<db-relationship name="mapToMany" source="MAP_TO_MANY_TARGET" target="MAP_TO_MANY" toMany="false">
 		<db-attribute-pair source="MAP_TO_MANY_ID" target="ID"/>
 	</db-relationship>
+	<db-relationship name="children" source="MASTER" target="CHILD" toMany="true">
+		<db-attribute-pair source="ID" target="MASTER_ID"/>
+	</db-relationship>
 	<db-relationship name="toRelationshipHelper" source="MEANINGFUL_FK" target="RELATIONSHIP_HELPER" toMany="false">
 		<db-attribute-pair source="RELATIONSHIP_HELPER_ID" target="RELATIONSHIP_HELPER_ID"/>
 	</db-relationship>
@@ -350,6 +369,7 @@
 	<db-relationship name="toOneToFK" source="TO_ONEFK2" target="TO_ONEFK1" toMany="false">
 		<db-attribute-pair source="TO_ONEFK2_PK" target="TO_ONEFK1_FK"/>
 	</db-relationship>
+	<obj-relationship name="master" source="Child" target="Master" deleteRule="Nullify" db-relationship-path="master"/>
 	<obj-relationship name="master" source="ClobDetail" target="ClobMaster" db-relationship-path="master"/>
 	<obj-relationship name="details" source="ClobMaster" target="ClobDetail" db-relationship-path="details"/>
 	<obj-relationship name="targets" source="CollectionToMany" target="CollectionToManyTarget" collection-type="java.util.Collection" db-relationship-path="targets"/>
@@ -377,6 +397,7 @@
 	<obj-relationship name="mapToMany" source="IdMapToManyTarget" target="IdMapToMany" db-relationship-path="mapToMany"/>
 	<obj-relationship name="targets" source="MapToMany" target="MapToManyTarget" collection-type="java.util.Map" map-key="name" db-relationship-path="targets"/>
 	<obj-relationship name="mapToMany" source="MapToManyTarget" target="MapToMany" db-relationship-path="mapToMany"/>
+	<obj-relationship name="children" source="Master" target="Child" deleteRule="Deny" db-relationship-path="children"/>
 	<obj-relationship name="toRelationshipHelper" source="MeaningfulFK" target="RelationshipHelper" db-relationship-path="toRelationshipHelper"/>
 	<obj-relationship name="children" source="ReflexiveAndToOne" target="ReflexiveAndToOne" db-relationship-path="children"/>
 	<obj-relationship name="toHelper" source="ReflexiveAndToOne" target="RelationshipHelper" db-relationship-path="toHelper"/>