You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2004/11/15 18:30:46 UTC

cvs commit: db-ojb/src/test/org/apache/ojb repository_junit.xml

arminw      2004/11/15 09:30:46

  Modified:    src/schema ojbtest-schema.xml
               src/test/org/apache/ojb/broker
                        InheritanceMultipleTableTest.java
               src/test/org/apache/ojb repository_junit.xml
  Log:
  add new test
  
  Revision  Changes    Path
  1.88      +8 -3      db-ojb/src/schema/ojbtest-schema.xml
  
  Index: ojbtest-schema.xml
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/schema/ojbtest-schema.xml,v
  retrieving revision 1.87
  retrieving revision 1.88
  diff -u -r1.87 -r1.88
  --- ojbtest-schema.xml	26 Oct 2004 15:27:40 -0000	1.87
  +++ ojbtest-schema.xml	15 Nov 2004 17:30:46 -0000	1.88
  @@ -1192,6 +1192,11 @@
       <!-- =================================================== -->
       <!-- Mapping Classes on Multiple Joined Tables test      -->
       <!-- =================================================== -->
  +    <table name="INHERITANCE_MULTI_COMPANY">
  +        <column name="OBJ_ID" required="true" primaryKey="true" type="DECIMAL" size="15,0"/>
  +        <column name="NAME" type="VARCHAR" size="150"/>
  +    </table>
  +
       <table name="INHERITANCE_MULTI_EMPLOYEE">
           <column name="OBJ_ID" required="true" primaryKey="true" type="INTEGER"/>
           <column name="OBJ_ID_2" required="true" primaryKey="true" type="DECIMAL" size="15,0"/>
  @@ -1474,7 +1479,7 @@
   	</table>
   	
   	<!-- ************ Object Factory tests * END -->
  -	
  -	
  +
  +
   
   </database>
  
  
  
  1.11      +126 -6    db-ojb/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java
  
  Index: InheritanceMultipleTableTest.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- InheritanceMultipleTableTest.java	20 Sep 2004 14:30:58 -0000	1.10
  +++ InheritanceMultipleTableTest.java	15 Nov 2004 17:30:46 -0000	1.11
  @@ -17,9 +17,9 @@
   import org.apache.ojb.junit.PBTestCase;
   
   /**
  - * This test check inheritance using multiple tables. The test objects use
  - * a composite PK. One autoincrement PK field - Integer. One non-autoincrement PK field
  - * with manually set PK- Long.
  + * These tests check inheritance using multiple tables via 1:1 reference and "super" keyword in
  + * reference descriptor. The test objects use a composite PK.
  + * One autoincrement PK field - Integer. One non-autoincrement PK field with manually set PK- Long.
    *
    * @author <a href="mailto:arminw@apache.org">Armin Waibel</a>
    * @version $Id$
  @@ -38,6 +38,78 @@
           broker.serviceConnectionManager().setBatchMode(true);
       }
   
  +    public void testInheritancedObjectsInCollectionReferences()
  +    {
  +//        if(ojbSkipKnownIssueProblem("References of classes (1:1, 1:n) mapped to multiple joined tables only" +
  +//                " return base class type instances"))
  +//        {
  +//            return;
  +//        }
  +
  +        long timestamp = System.currentTimeMillis();
  +        Long id_2 = new Long(timestamp);
  +        String name = "testInheritancedObjectsInCollectionReferences_" + timestamp;
  +        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");
  +        m_3.setDepartment("none");
  +        Executive ex_1 = new Executive(id_2, name + "_executive", "department_1", null);
  +        Executive ex_2 = new Executive(id_2, name + "_executive", "department_1", null);
  +        Employee em = new Employee(id_2, name + "_employee");
  +
  +        ArrayList employees = new ArrayList();
  +        employees.add(m_1);
  +        employees.add(m_2);
  +        employees.add(m_3);
  +        employees.add(ex_1);
  +        employees.add(ex_2);
  +        employees.add(em);
  +
  +        Company company = new Company(id_2, name, employees);
  +        broker.beginTransaction();
  +        broker.store(company);
  +        broker.commitTransaction();
  +
  +        broker.clearCache();
  +        Criteria crit = new Criteria();
  +        crit.addEqualTo("id", id_2);
  +        Query query = QueryFactory.newQuery(Company.class, crit);
  +        Collection result = broker.getCollectionByQuery(query);
  +        assertEquals(1, result.size());
  +        Company newCompany = (Company) result.iterator().next();
  +        List newEmployees = newCompany.getEmployees();
  +        assertNotNull(newEmployees);
  +        assertEquals(employees.size(), newEmployees.size());
  +        int countEmployee = 0;
  +        int countExecutive = 0;
  +        int countManager = 0;
  +        for(int i = 0; i < newEmployees.size(); i++)
  +        {
  +            Object o =  newEmployees.get(i);
  +            if(o instanceof Employee)
  +            {
  +                ++countEmployee;
  +            }
  +            if(o instanceof Executive)
  +            {
  +                ++countExecutive;
  +            }
  +            if(o instanceof Manager)
  +            {
  +                ++countManager;
  +            }
  +        }
  +        assertEquals(6, countEmployee);
  +        /*
  +        bug:
  +        expect that the real classes will be populated
  +        currently this does not happen, only objects of
  +        type Employee will be returned.
  +        */
  +        assertEquals(5, countExecutive);
  +        assertEquals(3, countManager);
  +    }
  +
       public void testUpdate()
       {
           long timestamp = System.currentTimeMillis();
  @@ -217,8 +289,8 @@
           Manager target_1 = new Manager(new Long(1), "testObjectExistence");
           Manager target_2 = new Manager(new Long(System.currentTimeMillis()), "testObjectExistence");
   
  -        Identity oid_1 = new Identity(target_1, broker);
  -        Identity oid_2 = new Identity(target_2, broker);
  +        Identity oid_1 = broker.serviceIdentity().buildIdentity(target_1);
  +        Identity oid_2 = broker.serviceIdentity().buildIdentity(target_2);
   
           ClassDescriptor cld = broker.getClassDescriptor(Manager.class);
   
  @@ -795,5 +867,53 @@
           public String getStreet();
   
           public void setStreet(String street);
  +    }
  +
  +    public static class Company
  +    {
  +        private Long id;
  +        private String name;
  +        private List  employees;
  +
  +        public Company()
  +        {
  +        }
  +
  +        public Company(Long id, String name, List employees)
  +        {
  +            this.id = id;
  +            this.name = name;
  +            this.employees = employees;
  +        }
  +
  +        public Long getId()
  +        {
  +            return id;
  +        }
  +
  +        public void setId(Long id)
  +        {
  +            this.id = id;
  +        }
  +
  +        public String getName()
  +        {
  +            return name;
  +        }
  +
  +        public void setName(String name)
  +        {
  +            this.name = name;
  +        }
  +
  +        public List getEmployees()
  +        {
  +            return employees;
  +        }
  +
  +        public void setEmployees(List employees)
  +        {
  +            this.employees = employees;
  +        }
       }
   }
  
  
  
  1.125     +33 -1     db-ojb/src/test/org/apache/ojb/repository_junit.xml
  
  Index: repository_junit.xml
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/repository_junit.xml,v
  retrieving revision 1.124
  retrieving revision 1.125
  diff -u -r1.124 -r1.125
  --- repository_junit.xml	26 Oct 2004 15:27:41 -0000	1.124
  +++ repository_junit.xml	15 Nov 2004 17:30:46 -0000	1.125
  @@ -208,6 +208,7 @@
            collection-class="org.apache.ojb.broker.util.collections.RemovalAwareCollection"
            auto-retrieve="true"
            auto-update="true"
  +          auto-delete="true"
         >
            <inverse-foreignkey field-ref="productGroupId"/>
         </collection-descriptor>
  @@ -1928,6 +1929,37 @@
   <!-- =================================================== -->
   <!-- Mapping Classes on Multiple Joined Tables test      -->
   <!-- =================================================== -->
  +<class-descriptor
  +	class="org.apache.ojb.broker.InheritanceMultipleTableTest$Company"
  +	table="INHERITANCE_MULTI_COMPANY"
  + >
  +    <field-descriptor
  +        name="id"
  +        column="OBJ_ID"
  +        jdbc-type="BIGINT"
  +        primarykey="true"
  +        autoincrement="true"
  +    />
  +
  +    <field-descriptor
  +        name="name"
  +        column="NAME"
  +        jdbc-type="VARCHAR"
  +    />
  +
  +    <collection-descriptor
  +        name="employees"
  +        element-class-ref="org.apache.ojb.broker.InheritanceMultipleTableTest$Employee"
  +        proxy="false"
  +        auto-retrieve="true"
  +        auto-update="object"
  +        auto-delete="object"
  +    >
  +        <!-- only for testing we use the second PK in base class Employee as FK  -->
  +        <inverse-foreignkey field-ref="id_2"/>
  +    </collection-descriptor>
  +</class-descriptor>
  +
   <class-descriptor
   	class="org.apache.ojb.broker.InheritanceMultipleTableTest$Employee"
   	table="INHERITANCE_MULTI_EMPLOYEE"
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org