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"/>