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 2010/06/05 21:57:29 UTC
svn commit: r951757 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test:
java/org/apache/cayenne/access/
java/org/apache/cayenne/testdo/inheritance/vertical/
java/org/apache/cayenne/testdo/inheritance/vertical/auto/ resources/
Author: aadamchik
Date: Sat Jun 5 19:57:28 2010
New Revision: 951757
URL: http://svn.apache.org/viewvc?rev=951757&view=rev
Log:
CAY-1090 vertical inheritance
* unit tests for attribute overrides
Added:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/Iv1Root.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/Iv1Sub1.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/auto/_Iv1Root.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/auto/_Iv1Sub1.java
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/inheritance-vertical.map.xml
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java?rev=951757&r1=951756&r2=951757&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java Sat Jun 5 19:57:28 2010
@@ -26,6 +26,8 @@ import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.test.DBHelper;
import org.apache.cayenne.test.TableHelper;
+import org.apache.cayenne.testdo.inheritance.vertical.Iv1Root;
+import org.apache.cayenne.testdo.inheritance.vertical.Iv1Sub1;
import org.apache.cayenne.testdo.inheritance.vertical.IvRoot;
import org.apache.cayenne.testdo.inheritance.vertical.IvSub1;
import org.apache.cayenne.testdo.inheritance.vertical.IvSub1Sub1;
@@ -45,6 +47,9 @@ public class VerticalInheritanceTest ext
dbHelper.deleteAll("IV_SUB1");
dbHelper.deleteAll("IV_SUB2");
dbHelper.deleteAll("IV_ROOT");
+
+ dbHelper.deleteAll("IV1_SUB1");
+ dbHelper.deleteAll("IV1_ROOT");
}
@Override
@@ -385,4 +390,43 @@ public class VerticalInheritanceTest ext
assertEquals(2, results.size());
}
+ public void testSelectQuery_AttributeOverrides() throws Exception {
+ DBHelper dbHelper = getDbHelper();
+
+ TableHelper iv1RootTable = new TableHelper(dbHelper, "IV1_ROOT");
+ iv1RootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
+
+ TableHelper iv1Sub1Table = new TableHelper(dbHelper, "IV1_SUB1");
+ iv1Sub1Table.setColumns("ID", "SUB1_NAME");
+
+ // insert
+ iv1RootTable.insert(1, "xROOT", null);
+ iv1RootTable.insert(2, "xSUB1_ROOT", "Iv1Sub1");
+ iv1Sub1Table.insert(2, "xSUB1");
+
+ SelectQuery query = new SelectQuery(Iv1Root.class);
+ List<Iv1Root> results = createDataContext().performQuery(query);
+
+ assertEquals(2, results.size());
+
+ // since we don't have ordering, need to analyze results in an order agnostic
+ // fashion
+ Map<String, Iv1Root> resultTypes = new HashMap<String, Iv1Root>();
+
+ for (Iv1Root result : results) {
+ resultTypes.put(result.getClass().getName(), result);
+ }
+
+ assertEquals(2, resultTypes.size());
+
+ Iv1Root root = resultTypes.get(Iv1Root.class.getName());
+ assertNotNull(root);
+ assertEquals("xROOT", root.getName());
+ assertNull(root.getDiscriminator());
+
+ Iv1Sub1 sub1 = (Iv1Sub1) resultTypes.get(Iv1Sub1.class.getName());
+ assertNotNull(sub1);
+ assertEquals("xSUB1", sub1.getName());
+ }
+
}
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/Iv1Root.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/Iv1Root.java?rev=951757&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/Iv1Root.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/Iv1Root.java Sat Jun 5 19:57:28 2010
@@ -0,0 +1,7 @@
+package org.apache.cayenne.testdo.inheritance.vertical;
+
+import org.apache.cayenne.testdo.inheritance.vertical.auto._Iv1Root;
+
+public class Iv1Root extends _Iv1Root {
+
+}
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/Iv1Sub1.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/Iv1Sub1.java?rev=951757&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/Iv1Sub1.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/Iv1Sub1.java Sat Jun 5 19:57:28 2010
@@ -0,0 +1,7 @@
+package org.apache.cayenne.testdo.inheritance.vertical;
+
+import org.apache.cayenne.testdo.inheritance.vertical.auto._Iv1Sub1;
+
+public class Iv1Sub1 extends _Iv1Sub1 {
+
+}
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/auto/_Iv1Root.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/auto/_Iv1Root.java?rev=951757&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/auto/_Iv1Root.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/auto/_Iv1Root.java Sat Jun 5 19:57:28 2010
@@ -0,0 +1,32 @@
+package org.apache.cayenne.testdo.inheritance.vertical.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+
+/**
+ * Class _Iv1Root 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 _Iv1Root extends CayenneDataObject {
+
+ public static final String DISCRIMINATOR_PROPERTY = "discriminator";
+ public static final String NAME_PROPERTY = "name";
+
+ public static final String ID_PK_COLUMN = "ID";
+
+ public void setDiscriminator(String discriminator) {
+ writeProperty("discriminator", discriminator);
+ }
+ public String getDiscriminator() {
+ return (String)readProperty("discriminator");
+ }
+
+ public void setName(String name) {
+ writeProperty("name", name);
+ }
+ public String getName() {
+ return (String)readProperty("name");
+ }
+
+}
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/auto/_Iv1Sub1.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/auto/_Iv1Sub1.java?rev=951757&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/auto/_Iv1Sub1.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/inheritance/vertical/auto/_Iv1Sub1.java Sat Jun 5 19:57:28 2010
@@ -0,0 +1,24 @@
+package org.apache.cayenne.testdo.inheritance.vertical.auto;
+
+import org.apache.cayenne.testdo.inheritance.vertical.Iv1Root;
+
+/**
+ * Class _Iv1Sub1 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 _Iv1Sub1 extends Iv1Root {
+
+ public static final String NAME_PROPERTY = "name";
+
+ public static final String ID_PK_COLUMN = "ID";
+
+ public void setName(String name) {
+ writeProperty("name", name);
+ }
+ public String getName() {
+ return (String)readProperty("name");
+ }
+
+}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/inheritance-vertical.map.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/inheritance-vertical.map.xml?rev=951757&r1=951756&r2=951757&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/inheritance-vertical.map.xml (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/inheritance-vertical.map.xml Sat Jun 5 19:57:28 2010
@@ -4,6 +4,15 @@
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.inheritance.vertical"/>
+ <db-entity name="IV1_ROOT">
+ <db-attribute name="DISCRIMINATOR" type="VARCHAR" length="10"/>
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+ <db-attribute name="NAME" type="VARCHAR" length="100"/>
+ </db-entity>
+ <db-entity name="IV1_SUB1">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+ <db-attribute name="SUB1_NAME" type="VARCHAR" length="100"/>
+ </db-entity>
<db-entity name="IV_ROOT">
<db-attribute name="DISCRIMINATOR" type="VARCHAR" length="10"/>
<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
@@ -22,6 +31,15 @@
<db-attribute name="NAME" type="VARCHAR" length="100"/>
<db-attribute name="SUB2_NAME" type="VARCHAR" length="100"/>
</db-entity>
+ <obj-entity name="Iv1Root" className="org.apache.cayenne.testdo.inheritance.vertical.Iv1Root" dbEntityName="IV1_ROOT">
+ <obj-attribute name="discriminator" type="java.lang.String" db-attribute-path="DISCRIMINATOR"/>
+ <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+ </obj-entity>
+ <obj-entity name="Iv1Sub1" superEntityName="Iv1Root" className="org.apache.cayenne.testdo.inheritance.vertical.Iv1Sub1">
+ <qualifier><![CDATA[discriminator = "Iv1Sub1"]]></qualifier>
+ <obj-attribute name="name" type="java.lang.String" db-attribute-path="sub1.SUB1_NAME"/>
+ <attribute-override name="name" db-attribute-path="sub1.SUB1_NAME"/>
+ </obj-entity>
<obj-entity name="IvRoot" className="org.apache.cayenne.testdo.inheritance.vertical.IvRoot" dbEntityName="IV_ROOT">
<obj-attribute name="discriminator" type="java.lang.String" db-attribute-path="DISCRIMINATOR"/>
<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
@@ -41,6 +59,12 @@
<qualifier><![CDATA[discriminator = "IvSub2"]]></qualifier>
<obj-attribute name="sub2Name" type="java.lang.String" db-attribute-path="sub2.SUB2_NAME"/>
</obj-entity>
+ <db-relationship name="sub1" source="IV1_ROOT" target="IV1_SUB1" toDependentPK="true" toMany="false">
+ <db-attribute-pair source="ID" target="ID"/>
+ </db-relationship>
+ <db-relationship name="root" source="IV1_SUB1" target="IV1_ROOT" toMany="false">
+ <db-attribute-pair source="ID" target="ID"/>
+ </db-relationship>
<db-relationship name="sub1" source="IV_ROOT" target="IV_SUB1" toDependentPK="true" toMany="false">
<db-attribute-pair source="ID" target="ID"/>
</db-relationship>