Author: arminw
Date: Sun Nov 12 10:18:49 2006
New Revision: 474007
URL: http://svn.apache.org/viewvc?view=rev&rev=474007
Log:
modify test, add test
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit_inheritance.xml
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml
URL:
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml?view=diff&rev=474007&r1=474006&r2=474007
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml Sun Nov 12
10:18:49 2006
@@ -1833,44 +1833,64 @@
<column name="DESCRIPTION" type="VARCHAR" size="250"/>
</table>
- <table name="FIRST_">
+ <table name="TPS_FIRST">
<column
name="ID_"
type="INTEGER"
primaryKey="true"/>
<column
- name="NAME"
- type="VARCHAR"/>
+ name="NAME_"
+ type="VARCHAR"
+ size="250"/>
</table>
- <table name="SECOND_">
+ <table name="TPS_SECOND">
<column
name="ID_"
type="INTEGER"
primaryKey="true"/>
<column
- name="SECOND"
- type="VARCHAR"/>
- <column
+ name="SECOND_"
+ type="VARCHAR"
+ size="250"/>
+ <column
name="FIRST_FK"
type="INTEGER"/>
- <foreign-key foreignTable="FIRST_">
+ <foreign-key foreignTable="TPS_FIRST">
<reference local="FIRST_FK" foreign="ID_"/>
</foreign-key>
</table>
- <table name="THIRD_">
+ <table name="TPS_THIRD">
<column
name="ID_"
type="INTEGER"
primaryKey="true"/>
<column
- name="THIRD"
- type="VARCHAR"/>
+ name="THIRD_"
+ type="VARCHAR"
+ size="250"/>
+ <column
+ name="SECOND_FK"
+ type="INTEGER"/>
+ <foreign-key foreignTable="TPS_SECOND">
+ <reference local="SECOND_FK" foreign="ID_"/>
+ </foreign-key>
+ </table>
+
+ <table name="TPS_FOURTH">
+ <column
+ name="ID_"
+ type="INTEGER"
+ primaryKey="true"/>
<column
+ name="FOURTH_"
+ type="VARCHAR"
+ size="250"/>
+ <column
name="THIRD_FK"
type="INTEGER"/>
- <foreign-key foreignTable="THIRD_">
+ <foreign-key foreignTable="TPS_THIRD">
<reference local="THIRD_FK" foreign="ID_"/>
</foreign-key>
</table>
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java
URL:
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java?view=diff&rev=474007&r1=474006&r2=474007
==============================================================================
---
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java
(original)
+++
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java
Sun Nov 12 10:18:49 2006
@@ -148,7 +148,7 @@
crit.addEqualTo("name", "manager_" + name);
q = QueryFactory.newQuery(Employee.class, crit);
Manager newM1 = (Manager) broker.getObjectByQuery(q);
-
+
broker.clearCache();
assertNotNull(newEm1);
@@ -178,7 +178,7 @@
// store company with Employee/Executive/Manager
Company company = prepareTestDataWithCompany(name);
Long id_2 = company.getId();
-
+
// add Shareholder too
Shareholder shareholder = new Shareholder(id_2, name);
shareholder.setShare(77);
@@ -272,9 +272,9 @@
String name = "testQueryInheritancedObjectsByPk_" + timestamp;
Long id_2 = new Long(timestamp);
- List insertedObjs = prepareForQueryTests(id_2, name);
+ List insertedObjs = prepareForQueryTests(id_2, name);
- // add Shareholder
+ // add Shareholder
Shareholder shareholder = new Shareholder(id_2, name);
shareholder.setShare(77);
shareholder.setDepartment("none");
@@ -284,7 +284,7 @@
broker.beginTransaction();
broker.store(shareholder);
broker.commitTransaction();
-
+
broker.clearCache();
Employee emp1;
@@ -306,7 +306,7 @@
assertNotNull(retrievedEmp);
assertSame(Executive.class, retrievedEmp.getClass());
assertEquals(emp1, retrievedEmp);
-
+
// retrieve Employee by pk
emp1 = (Employee) insertedObjs.get(5);
ident = broker.serviceIdentity().buildIdentity(emp1);
@@ -379,7 +379,7 @@
List newEmployees = newCompany.getEmployees();
assertNotNull(newEmployees);
assertEquals(company.getEmployees().size(), newEmployees.size());
-
+
List newExecutives = newCompany.getExecutives();
assertNotNull(newExecutives);
assertEquals(company.getExecutives().size(), newExecutives.size());
@@ -525,7 +525,7 @@
assertEquals(consortium.getId(), con.getId());
assertEquals(consortium.getName(), con.getName());
assertEquals(consortium.getManagers().size(),
con.getManagers().size());
-
+
broker.clearCache();
Manager s1_new = (Manager) broker.getObjectByIdentity(oidSH);
assertNotNull(s1_new.getConsortiumKey());
@@ -538,7 +538,7 @@
Query q = QueryFactory.newQuery(Consortium.class, crit, true);
Collection result = broker.getCollectionByQuery(q);
assertEquals(1, result.size());
-
+
Consortium con2 = (Consortium) result.iterator().next();
assertEquals(consortium.getId(), con2.getId());
assertEquals(consortium.getName(), con2.getName());
@@ -906,7 +906,7 @@
private List prepareForQueryTests(Long id_2, String name)
{
List result = new ArrayList();
-
+
Manager m_1 = new Manager(id_2, name + "_manager_1");
Manager m_2 = new Manager(id_2, name + "_manager_2");
Manager m_3 = new Manager(id_2, name + "_manager_3");
@@ -936,7 +936,7 @@
broker.store(ex_2);
broker.store(em);
broker.commitTransaction();
-
+
return result;
}
@@ -965,14 +965,14 @@
executives.add(m_3);
executives.add(ex_1);
executives.add(ex_2);
-
+
Company company = new Company(null, name, employees, executives);
broker.beginTransaction();
broker.store(company);
broker.commitTransaction();
return company;
}
-
+
public void testQuery_InheritedObjects()
{
long timestamp = System.currentTimeMillis();
@@ -1116,13 +1116,13 @@
String name = "testQuery_ReferenceOuterJoin_" + timestamp;
prepareTestDataWithCompany(name);
//Long id_2 = company.getId();
-
+
// Store a dummy company
Company dummyComp = new Company(null, name + "_dummy",
Collections.EMPTY_LIST, Collections.EMPTY_LIST);
broker.beginTransaction();
broker.store(dummyComp);
broker.commitTransaction();
-
+
broker.clearCache();
Criteria crit = new Criteria();
@@ -1149,7 +1149,7 @@
// should retrieve both companies
assertEquals(2, result.size());
}
-
+
public void testInsertQuery()
{
long timestamp = System.currentTimeMillis();
@@ -1457,15 +1457,74 @@
assertNull(newSecond);
assertNull(newThird);
}
+
+ public void testInheritanceViaAnonymousField_Serialized_1()
+ {
+ long timestamp = System.currentTimeMillis();
+ String name = "testInheritanceViaAnonymousField_Serialized_1_" +
timestamp;
+ String t_name = "third_" + name;
+
+ Third third = new Third(t_name);
+ third.setThird("third");
+ third.setSecond("second");
+
+ broker.beginTransaction();
+ broker.store(third);
+ broker.commitTransaction();
+
+ Identity oid_3 = broker.serviceIdentity().buildIdentity(third);
+
+ broker.clearCache();
+
+ Third newThird = (Third) broker.getObjectByIdentity(oid_3);
+
+ assertNotNull(newThird);
+ assertEquals(t_name, newThird.getName());
+ assertEquals("third", third.getThird());
+ assertEquals("second", third.getSecond());
+
+ newThird.setName(newThird.getName() + "_updated");
+ newThird.setThird("third_updated");
+ newThird.setSecond("second_updated");
+
+ newThird = (Third) SerializationUtils.clone(newThird);
- public void testInsertDeletePerSubClassViaFK_Serialized()
+ broker.beginTransaction();
+ broker.store(newThird);
+ broker.commitTransaction();
+
+ broker.clearCache();
+
+ newThird = (Third) broker.getObjectByIdentity(oid_3);
+
+ assertNotNull(newThird);
+ assertEquals(t_name + "_updated", newThird.getName());
+ assertEquals("second_updated", newThird.getSecond());
+ assertEquals("third_updated", newThird.getThird());
+
+ newThird = (Third) SerializationUtils.clone(newThird);
+
+ broker.beginTransaction();
+ broker.delete(newThird);
+ broker.commitTransaction();
+
+ newThird = (Third) broker.getObjectByIdentity(oid_3);
+
+ assertNull(newThird);
+ }
+
+ public void testInheritanceViaAnonymousField_Serialized_2()
{
long timestamp = System.currentTimeMillis();
- String name = "testInsertDeletePerSubClassViaFK_Serialized_" +
timestamp;
- First first = new First("first_" + name);
- Second second = new Second("second_" + name);
+ String name = "testInheritanceViaAnonymousField_2_" + timestamp;
+ String f_name = "first_" + name;
+ String s_name = "second_" + name;
+ String t_name = "third_" + name;
+
+ First first = new First(f_name);
+ Second second = new Second(s_name);
second.setSecond("second");
- Third third = new Third("third_" + name);
+ Third third = new Third(t_name);
third.setThird("third");
broker.beginTransaction();
@@ -1487,14 +1546,17 @@
assertNotNull(newFirst);
assertNotNull(newSecond);
assertNotNull(newThird);
+ assertEquals(f_name, newFirst.getName());
+ assertEquals(s_name, newSecond.getName());
+ assertEquals(t_name, newThird.getName());
assertEquals("second", second.getSecond());
assertEquals("third", third.getThird());
assertNull(third.getSecond());
- newFirst.setName(name + "_updated");
- newSecond.setName(name + "_updated");
+ newFirst.setName(newFirst.getName() + "_updated");
+ newSecond.setName(newSecond.getName() + "_updated");
newSecond.setSecond("second_updated");
- newThird.setName(name + "_updated");
+ newThird.setName(newThird.getName() + "_updated");
newThird.setThird("third_updated");
newThird.setSecond("third");
@@ -1517,13 +1579,32 @@
assertNotNull(newFirst);
assertNotNull(newSecond);
assertNotNull(newThird);
- assertEquals(name + "_updated", newFirst.getName());
- assertEquals(name + "_updated", newSecond.getName());
- assertEquals(name + "_updated", newThird.getName());
+ assertEquals(f_name + "_updated", newFirst.getName());
+ assertEquals(s_name + "_updated", newSecond.getName());
+ assertEquals(t_name + "_updated", newThird.getName());
assertEquals("second_updated", newSecond.getSecond());
assertEquals("third_updated", newThird.getThird());
assertEquals("third", newThird.getSecond());
+ Criteria c = new Criteria().addLike("name", "%" + name + "%");
+ Query q = QueryFactory.newQuery(First.class, c);
+ Collection result = broker.getCollectionByQuery(q);
+ assertEquals(3, result.size());
+ int count = 0;
+ for(Iterator iterator = result.iterator(); iterator.hasNext();)
+ {
+ Object o = iterator.next();
+ if(o instanceof Second)
+ {
+ count+=1;
+ if(o instanceof Third)
+ {
+ count+=7;
+ }
+ }
+ }
+ assertEquals("Wrong instances returned, expect First, Second, Third",
9, count);
+
newFirst = (First) SerializationUtils.clone(newFirst);
newSecond = (Second) SerializationUtils.clone(newSecond);
newThird = (Third) SerializationUtils.clone(newThird);
@@ -1543,6 +1624,70 @@
assertNull(newThird);
}
+ public void testInheritanceViaAnonymousField_Serialized_3()
+ {
+ if(ojbSkipKnownIssueProblem("Table-per-subclass inheritance issue,
when field was overridden in sub-class"))
+ {
+ return;
+ }
+ long timestamp = System.currentTimeMillis();
+ String name = "testInheritanceViaAnonymousField_3_" + timestamp;
+ String t_name = "fourth_" + name;
+
+ Fourth fourth = new Fourth(t_name);
+ fourth.setFourth("fourth");
+ fourth.setThird("third");
+ fourth.setSecond("second");
+
+ broker.beginTransaction();
+ broker.store(fourth);
+ broker.commitTransaction();
+
+ Identity oid_3 = broker.serviceIdentity().buildIdentity(fourth);
+
+ broker.clearCache();
+
+ Fourth newFourth = (Fourth) broker.getObjectByIdentity(oid_3);
+
+ assertNotNull(newFourth);
+ assertEquals(t_name, newFourth.getName());
+ assertEquals("fourth", fourth.getFourth());
+ assertEquals("third", fourth.getThird());
+ assertEquals("second", fourth.getSecond());
+
+ newFourth.setName(newFourth.getName() + "_updated");
+ newFourth.setFourth("fourth_updated");
+ newFourth.setThird("third_updated");
+ newFourth.setSecond("second_updated");
+
+ newFourth = (Fourth) SerializationUtils.clone(newFourth);
+
+ broker.beginTransaction();
+ broker.store(newFourth);
+ broker.commitTransaction();
+
+ broker.clearCache();
+
+ newFourth = (Fourth) broker.getObjectByIdentity(oid_3);
+
+ assertNotNull(newFourth);
+ assertEquals(t_name + "_updated", newFourth.getName());
+ assertEquals("second_updated", newFourth.getSecond());
+ assertEquals("third_updated", newFourth.getThird());
+ assertEquals("fourth_updated", newFourth.getFourth());
+
+ newFourth = (Fourth) SerializationUtils.clone(newFourth);
+
+ broker.beginTransaction();
+ broker.delete(newFourth);
+ broker.commitTransaction();
+
+ newFourth = (Fourth) broker.getObjectByIdentity(oid_3);
+
+ assertNull(newFourth);
+ }
+
+
// /**
// * TODO: Should we support some kind of "declarative inheritance"? This
test
// * try to use this kind of inheritance as class Dog expects some fields
from a
@@ -2375,7 +2520,7 @@
public static class First implements Serializable
{
- private Integer id;
+ private int id;
private String name;
public First()
@@ -2387,12 +2532,12 @@
this.name = name;
}
- public Integer getId()
+ public int getId()
{
return id;
}
- public void setId(Integer id)
+ public void setId(int id)
{
this.id = id;
}
@@ -2410,6 +2555,19 @@
public static class Second extends First
{
+// //!! override field not allowed !!
+// private int id;
+// public int getId()
+// {
+// return id;
+// }
+//
+// public void setId(int id)
+// {
+// this.id = id;
+// }
+// //!!!!!
+
private String second;
public Second()
@@ -2434,6 +2592,19 @@
public static class Third extends Second
{
+// //!! override field not allowed !!
+// private int id;
+// public int getId()
+// {
+// return id;
+// }
+//
+// public void setId(int id)
+// {
+// this.id = id;
+// }
+// //!!!!!
+
private String third;
public Third()
@@ -2453,6 +2624,45 @@
public void setThird(String third)
{
this.third = third;
+ }
+ }
+
+ public static class Fourth extends Third
+ {
+ //##################################
+ //!! override field to show issue !!
+ private int id;
+ public int getId()
+ {
+ return id;
+ }
+
+ public void setId(int id)
+ {
+ this.id = id;
+ }
+ //!!!!!
+ //####################################
+
+ private String fourth;
+
+ public Fourth()
+ {
+ }
+
+ public Fourth(String name)
+ {
+ super(name);
+ }
+
+ public String getFourth()
+ {
+ return fourth;
+ }
+
+ public void setFourth(String fourth)
+ {
+ this.fourth = fourth;
}
}
}
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit_inheritance.xml
URL:
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit_inheritance.xml?view=diff&rev=474007&r1=474006&r2=474007
==============================================================================
---
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit_inheritance.xml
(original)
+++
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit_inheritance.xml
Sun Nov 12 10:18:49 2006
@@ -426,7 +426,7 @@
<class-descriptor
class="org.apache.ojb.broker.InheritanceMultipleTableTest$First"
- table="FIRST_"
+ table="TPS_FIRST"
>
<field-descriptor
name="id"
@@ -437,7 +437,7 @@
/>
<field-descriptor
name="name"
- column="NAME"
+ column="NAME_"
jdbc-type="VARCHAR"
/>
</class-descriptor>
@@ -445,18 +445,18 @@
<class-descriptor
class="org.apache.ojb.broker.InheritanceMultipleTableTest$Second"
- table="SECOND_"
+ table="TPS_SECOND"
>
<field-descriptor
name="id"
column="ID_"
jdbc-type="INTEGER"
primarykey="true"
- autoincrement="true"
+ autoincrement="false"
/>
<field-descriptor
name="second"
- column="SECOND"
+ column="SECOND_"
jdbc-type="VARCHAR"
/>
<field-descriptor
@@ -474,19 +474,50 @@
<class-descriptor
class="org.apache.ojb.broker.InheritanceMultipleTableTest$Third"
- table="THIRD_"
+ table="TPS_THIRD"
>
<field-descriptor
name="id"
column="ID_"
jdbc-type="INTEGER"
primarykey="true"
- autoincrement="true"
+ autoincrement="false"
/>
<field-descriptor
name="third"
- column="THIRD"
+ column="THIRD_"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="secondFk"
+ column="SECOND_FK"
+ jdbc-type="INTEGER"
+ access="anonymous"
+ />
+
+ <reference-descriptor name="super"
+ class-ref="org.apache.ojb.broker.InheritanceMultipleTableTest$Second"
+ >
+ <foreignkey field-ref="secondFk"/>
+ </reference-descriptor>
+</class-descriptor>
+<class-descriptor
+ class="org.apache.ojb.broker.InheritanceMultipleTableTest$Fourth"
+ table="TPS_FOURTH"
+>
+ <field-descriptor
+ name="id"
+ column="ID_"
+ jdbc-type="INTEGER"
+ primarykey="true"
+ autoincrement="false"
+ />
+
+ <field-descriptor
+ name="fourth"
+ column="FOURTH_"
jdbc-type="VARCHAR"
/>
@@ -498,7 +529,7 @@
/>
<reference-descriptor name="super"
- class-ref="org.apache.ojb.broker.InheritanceMultipleTableTest$Second"
+ class-ref="org.apache.ojb.broker.InheritanceMultipleTableTest$Third"
>
<foreignkey field-ref="thirdFk"/>
</reference-descriptor>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]