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]

Reply via email to