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/05/11 13:55:58 UTC

cvs commit: db-ojb/src/test/org/apache/ojb/broker/sequence NativeIdentifierTest.java

arminw      2004/05/11 04:55:58

  Modified:    src/test/org/apache/ojb repository_junit_odmg.xml
                        repository_junit_meta_seq.xml
               src/test/org/apache/ojb/broker
                        InheritanceMultipleTableTest.java
               src/test/org/apache/ojb/broker/sequence
                        NativeIdentifierTest.java
  Added:       src/test/org/apache/ojb/odmg
                        InheritanceMultipleTableTest.java
  Log:
  - add odmg test for object inheritance using multiple tables
  - update identity column sequence test
  
  Revision  Changes    Path
  1.10      +147 -1    db-ojb/src/test/org/apache/ojb/repository_junit_odmg.xml
  
  Index: repository_junit_odmg.xml
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/repository_junit_odmg.xml,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- repository_junit_odmg.xml	7 May 2004 12:10:52 -0000	1.9
  +++ repository_junit_odmg.xml	11 May 2004 11:55:57 -0000	1.10
  @@ -1225,4 +1225,150 @@
       </class-descriptor>
   
   
  +<!-- =================================================== -->
  +<!-- Mapping Classes on Multiple Joined Tables test      -->
  +<!-- =================================================== -->
  +<class-descriptor
  +	class="org.apache.ojb.odmg.InheritanceMultipleTableTest$Employee"
  +	table="INHERITANCE_MULTI_EMPLOYEE"
  + >
  +    <field-descriptor
  +        name="id"
  +        column="OBJ_ID"
  +        jdbc-type="INTEGER"
  +        primarykey="true"
  +        autoincrement="true"
  +    />
  +    <field-descriptor
  +        name="name"
  +        column="NAME"
  +        jdbc-type="VARCHAR"
  +    />
  +
  +    <field-descriptor
  +        name="fkAddress"
  +        column="FK_ADDRESS"
  +        jdbc-type="INTEGER"
  +        access="anonymous"
  +    />
  +
  +    <reference-descriptor name="address"
  +        class-ref="org.apache.ojb.odmg.InheritanceMultipleTableTest$Address"
  +        auto-retrieve="true"
  +        auto-update="false"
  +        auto-delete="false"
  +    >
  +        <foreignkey field-ref="fkAddress" />
  +    </reference-descriptor>
  +</class-descriptor>
  +
  +<class-descriptor
  +	class="org.apache.ojb.odmg.InheritanceMultipleTableTest$Executive"
  +	table="INHERITANCE_MULTI_EXECUTIVE"
  + >
  +    <field-descriptor
  +        name="id"
  +        column="OBJ_ID"
  +        jdbc-type="INTEGER"
  +        primarykey="true"
  +        autoincrement="true"
  +    />
  +    <field-descriptor
  +        name="department"
  +        column="DEPARTMENT"
  +        jdbc-type="VARCHAR"
  +    />
  +    <field-descriptor
  +        name="superId"
  +        column="SUPER_ID"
  +        jdbc-type="INTEGER"
  +        access="anonymous"
  +    />
  +
  +    <field-descriptor
  +        name="managerId"
  +        column="MANAGER_ID"
  +        jdbc-type="INTEGER"
  +        access="anonymous"
  +    />
  +
  +    <reference-descriptor name="super"
  +        class-ref="org.apache.ojb.odmg.InheritanceMultipleTableTest$Employee"
  +        auto-retrieve="true"
  +        auto-update="false"
  +        auto-delete="false"
  +    >
  +        <foreignkey field-ref="superId" />
  +    </reference-descriptor>
  +
  +    <reference-descriptor name="manager"
  +        class-ref="org.apache.ojb.odmg.InheritanceMultipleTableTest$Manager"
  +        auto-retrieve="false"
  +        auto-update="none"
  +        auto-delete="none"
  +    >
  +        <foreignkey field-ref="managerId" />
  +    </reference-descriptor>
  +</class-descriptor>
  +
  +<class-descriptor
  +	class="org.apache.ojb.odmg.InheritanceMultipleTableTest$Manager"
  +	table="INHERITANCE_MULTI_MANAGER"
  + >
  +    <field-descriptor
  +        name="id"
  +        column="OBJ_ID"
  +        jdbc-type="INTEGER"
  +        primarykey="true"
  +        autoincrement="true"
  +    />
  +
  +    <field-descriptor
  +        name="superId"
  +        column="SUPER_ID"
  +        jdbc-type="INTEGER"
  +        access="anonymous"
  +    />
  +
  +    <reference-descriptor name="super"
  +        class-ref="org.apache.ojb.odmg.InheritanceMultipleTableTest$Executive"
  +        auto-retrieve="true"
  +        auto-update="false"
  +        auto-delete="false"
  +    >
  +        <foreignkey field-ref="superId" />
  +    </reference-descriptor>
  +
  +    <collection-descriptor
  +        name="executives"
  +        element-class-ref="org.apache.ojb.odmg.InheritanceMultipleTableTest$Executive"
  +        proxy="true"
  +        auto-retrieve="true"
  +        auto-update="false"
  +        auto-delete="false"
  +    >
  +            <inverse-foreignkey field-ref="managerId"/>
  +    </collection-descriptor>
  +</class-descriptor>
  +
  +<class-descriptor
  +	class="org.apache.ojb.odmg.InheritanceMultipleTableTest$Address"
  +	table="INHERITANCE_MULTI_ADDRESS"
  + >
  +    <field-descriptor
  +        name="id"
  +        column="OBJ_ID"
  +        jdbc-type="INTEGER"
  +        primarykey="true"
  +        autoincrement="true"
  +    />
  +
  +    <field-descriptor
  +        name="street"
  +        column="STREET"
  +        jdbc-type="VARCHAR"
  +    />
  +</class-descriptor>
  +
  +
   <!-- Mapping of classes used in junit tests and tutorials ends here -->
  
  
  
  1.6       +18 -1     db-ojb/src/test/org/apache/ojb/repository_junit_meta_seq.xml
  
  Index: repository_junit_meta_seq.xml
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/repository_junit_meta_seq.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- repository_junit_meta_seq.xml	19 Apr 2004 16:23:26 -0000	1.5
  +++ repository_junit_meta_seq.xml	11 May 2004 11:55:57 -0000	1.6
  @@ -627,6 +627,23 @@
           column="NAME"
           jdbc-type="VARCHAR"
           />
  +
  +        <field-descriptor
  +        name="refFK"
  +        column="REF_ID"
  +        jdbc-type="BIGINT"
  +        access="anonymous"
  +        />
  +
  +        <reference-descriptor
  +        name="mainObject"
  +        class-ref="org.apache.ojb.broker.sequence.NativeIdentifierTest$MainObject"
  +        proxy="false"
  +        auto-retrieve="false"
  +        auto-update="true"
  +        auto-delete="true">
  +            <foreignkey field-ref="refFK"/>
  +      </reference-descriptor>
       </class-descriptor>
   
   
  
  
  
  1.1                  db-ojb/src/test/org/apache/ojb/odmg/InheritanceMultipleTableTest.java
  
  Index: InheritanceMultipleTableTest.java
  ===================================================================
  package org.apache.ojb.odmg;
  
  import java.util.ArrayList;
  import java.util.Collection;
  import java.util.Iterator;
  import java.util.List;
  
  import org.apache.commons.lang.builder.EqualsBuilder;
  import org.apache.commons.lang.builder.ToStringBuilder;
  import org.apache.commons.lang.builder.ToStringStyle;
  import org.apache.ojb.broker.Identity;
  import org.apache.ojb.junit.ODMGTestCase;
  import org.odmg.OQLQuery;
  import org.odmg.Transaction;
  
  /**
   * Test inheritance using multiple tables.
   *
   * @author <a href="mailto:arminw@apache.org">Armin Waibel</a>
   * @version $Id: InheritanceMultipleTableTest.java,v 1.1 2004/05/11 11:55:57 arminw Exp $
   */
  public class InheritanceMultipleTableTest extends ODMGTestCase
  {
      public static void main(String[] args)
      {
          junit.textui.TestRunner.main(new String[] {InheritanceMultipleTableTest.class.getName()});
      }
  
      public void testQuery() throws Exception
      {
          String name = "testInsert" + System.currentTimeMillis();
          Manager m_1 = new Manager(name + "_manager_1");
          Manager m_2 = new Manager(name + "_manager_2");
          Manager m_3 = new Manager(name + "_manager_3");
          m_3.setDepartment("none");
  
          Executive ex_1 = new Executive(name+"_executive", "department_1", null);
          Executive ex_2 = new Executive(name+"_executive", "department_1", null);
  
          Employee em = new Employee(name+"_employee");
  
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          database.makePersistent(m_1);
          database.makePersistent(m_2);
          database.makePersistent(m_3);
          database.makePersistent(ex_1);
          database.makePersistent(ex_2);
          database.makePersistent(em);
          tx.commit();
  
          tx.begin();
          tx.getBroker().clearCache();
          tx.commit();
  
          OQLQuery query = odmg.newOQLQuery();
          query.create("select objects from " + Manager.class.getName()+" where name like $1 and department like $2");
          query.bind(name + "%");
          query.bind("none");
          Collection result = (Collection) query.execute();
          assertEquals(1, result.size());
  
          query = odmg.newOQLQuery();
          query.create("select objects from " + Employee.class.getName()+" where name like $1");
          query.bind(name + "%");
          result = (Collection) query.execute();
          assertEquals(6, result.size());
  
          query = odmg.newOQLQuery();
          query.create("select objects from " + Executive.class.getName()+" where name like $1");
          query.bind(name + "%");
          result = (Collection) query.execute();
          assertEquals(5, result.size());
  
          query = odmg.newOQLQuery();
          query.create("select objects from " + Manager.class.getName()+" where name like $1");
          query.bind(name + "%");
          result = (Collection) query.execute();
          assertEquals(3, result.size());
      }
  
      private void prepareForQueryTests(String name)
      {
          Manager m_1 = new Manager(name + "_manager_1");
          Manager m_2 = new Manager(name + "_manager_2");
          Manager m_3 = new Manager(name + "_manager_3");
          m_3.setDepartment("none");
          Address a_1 = new Address("snob allee");
          m_1.setAddress(a_1);
  
          Executive ex_1 = new Executive(name+"_executive", "department_1", null);
          Executive ex_2 = new Executive(name+"_executive", "department_1", null);
  
          Employee em = new Employee(name+"_employee");
          Address a_2 = new Address("cockroaches valley");
          em.setAddress(a_2);
  
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          database.makePersistent(m_1);
          database.makePersistent(m_2);
          database.makePersistent(m_3);
          database.makePersistent(ex_1);
          database.makePersistent(ex_2);
          database.makePersistent(em);
          tx.commit();
      }
  
      public void testQuery_InheritedObjects() throws Exception
      {
          String name = "testQuery_InheritedObjects" + System.currentTimeMillis();
          prepareForQueryTests(name);
  
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          tx.getBroker().clearCache();
  
          OQLQuery query = odmg.newOQLQuery();
          query.create("select objects from " + Employee.class.getName()+" where name like $1");
          query.bind(name + "%");
          Collection result = (Collection) query.execute();
          assertEquals(6, result.size());
          for(Iterator iterator = result.iterator(); iterator.hasNext();)
          {
              Employee obj = (Employee) iterator.next();
              assertNotNull(obj.getName());
          }
  
          tx.getBroker().clearCache();
          query = odmg.newOQLQuery();
          query.create("select objects from " + Executive.class.getName()+" where name like $1");
          query.bind(name + "%");
          result = (Collection) query.execute();
          assertEquals(5, result.size());
          for(Iterator iterator = result.iterator(); iterator.hasNext();)
          {
              Executive obj = (Executive) iterator.next();
              assertNotNull(obj.getName());
          }
  
          tx.getBroker().clearCache();
          query = odmg.newOQLQuery();
          query.create("select objects from " + Manager.class.getName()+" where name like $1");
          query.bind(name + "%");
          result = (Collection) query.execute();
          assertEquals(3, result.size());
          for(Iterator iterator = result.iterator(); iterator.hasNext();)
          {
              Manager obj = (Manager) iterator.next();
              assertNotNull(obj.getName());
          }
  
          tx.commit();
      }
  
      public void testQuery_InheritedField() throws Exception
      {
          String name = "testQuery_InheritedField" + System.currentTimeMillis();
          prepareForQueryTests(name);
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          tx.getBroker().clearCache();
          OQLQuery query = odmg.newOQLQuery();
          query.create("select objects from " + Manager.class.getName()+" where name like $1 and department like $2");
          query.bind(name + "%");
          query.bind("none");
          Collection result = (Collection) query.execute();
          tx.commit();
          assertEquals(1, result.size());
      }
  
      public void testQuery_Reference() throws Exception
      {
          String name = "testQuery_Reference" + System.currentTimeMillis();
          prepareForQueryTests(name);
  
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          tx.getBroker().clearCache();
          OQLQuery query = odmg.newOQLQuery();
          query.create("select objects from " + Employee.class.getName()+" where name like $1 and address.street like $2");
          query.bind(name + "%");
          query.bind("%valley");
          Collection result = (Collection) query.execute();
          tx.commit();
  
          assertEquals(1, result.size());
          Employee emp = (Employee) result.iterator().next();
          assertNotNull(emp.getAddress());
          assertEquals("cockroaches valley", emp.getAddress().getStreet());
      }
  
      public void testQuery_InheritedReference_1() throws Exception
      {
          String name = "testQuery_InheritedReference_1" + System.currentTimeMillis();
          prepareForQueryTests(name);
  
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          tx.getBroker().clearCache();
          OQLQuery query = odmg.newOQLQuery();
          query.create("select objects from " + Manager.class.getName()+" where name like $1 and address.street like $2");
          query.bind(name + "%");
          query.bind("snob allee");
          Collection result = (Collection) query.execute();
          tx.commit();
  
          assertEquals(1, result.size());
          Manager retManager = (Manager) result.iterator().next();
          assertNotNull(retManager);
          assertEquals(name + "_manager_1", retManager.getName());
          assertNotNull(retManager.getAddress());
          assertEquals("snob allee", retManager.getAddress().getStreet());
      }
  
      public void testQuery_InheritedReference_2() throws Exception
      {
          String name = "testQuery_InheritedReference_2" + System.currentTimeMillis();
          prepareForQueryTests(name);
  
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          tx.getBroker().clearCache();
          OQLQuery query = odmg.newOQLQuery();
          query.create("select objects from " + Executive.class.getName()+" where name like $1 and address.street like $2");
          query.bind(name + "%");
          query.bind("snob allee");
          Collection result = (Collection) query.execute();
          tx.commit();
  
          assertEquals(1, result.size());
          Executive retManager = (Executive) result.iterator().next();
          assertNotNull(retManager);
          assertEquals(name + "_manager_1", retManager.getName());
     }
  
      public void testQuery_InheritedReference_3() throws Exception
      {
          String name = "testQuery_InheritedReference_3" + System.currentTimeMillis();
          prepareForQueryTests(name);
  
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          tx.getBroker().clearCache();
          OQLQuery query = odmg.newOQLQuery();
          query.create("select objects from " + Employee.class.getName()+" where name like $1 and address.street like $2");
          query.bind(name + "%");
          query.bind("snob allee");
          Collection result = (Collection) query.execute();
          tx.commit();
          assertEquals(1, result.size());
          Employee emp = (Employee) result.iterator().next();
          assertNotNull(emp);
          assertEquals(name + "_manager_1", emp.getName());
      }
  
      public void testInsertQuery() throws Exception
      {
          String name = "testInsert" + System.currentTimeMillis();
          Employee em1 = new Employee(name);
          Executive ex1 = new Executive(name, "department_1", null);
          Executive ex2 = new Executive(name, "department_2", null);
          ArrayList list = new ArrayList();
          list.add(ex1);
          list.add(ex2);
          Manager m1 = new Manager(name);
          m1.setExecutives(list);
  
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          database.makePersistent(em1);
          database.makePersistent(m1);
          tx.commit();
  
          tx.begin();
          Identity m1_oid = new Identity(m1, tx.getBroker());
          Identity ex1_oid = new Identity(ex1, tx.getBroker());
          Identity em1_oid = new Identity(em1, tx.getBroker());
  
          tx.getBroker().clearCache();
  
          Employee newEm1 = (Employee) tx.getBroker().getObjectByIdentity(em1_oid);
          Executive newEx1 = (Executive) tx.getBroker().getObjectByIdentity(ex1_oid);
          Manager newM1 = (Manager) tx.getBroker().getObjectByIdentity(m1_oid);
  
          assertEquals(em1, newEm1);
          assertEquals(ex1, newEx1);
          assertEquals(m1, newM1);
          assertEquals(name, newEx1.getName());
          assertEquals(name, newM1.getName());
  
          assertEquals(2, newM1.getExecutives().size());
  
          OQLQuery queryEmployee = odmg.newOQLQuery();
          queryEmployee.create("select objects from " + Employee.class.getName()+" where name like $1");
          queryEmployee.bind(name);
  
          OQLQuery queryExecutive = odmg.newOQLQuery();
          queryExecutive.create("select objects from " + Executive.class.getName()+" where name like $1");
          queryExecutive.bind(name);
  
          OQLQuery queryManager = odmg.newOQLQuery();
          queryManager.create("select objects from " + Manager.class.getName()+" where name like $1");
          queryManager.bind(name);
  
          Collection result = (Collection) queryEmployee.execute();
          assertEquals(4, result.size());
  
          result = (Collection) queryExecutive.execute();
          assertEquals(3, result.size());
  
          result = (Collection) queryManager.execute();
          assertEquals(1, result.size());
      }
  
      public void testUpdate() throws Exception
      {
          // TODO: not all changes are written to DB
          if(ojbSkipKnownIssueProblem()) return;
  
          String name = "testUpdate" + System.currentTimeMillis();
          Employee em1 = new Employee("employee_" + name);
          Executive ex1 = new Executive("executive_" + name, "department_1", null);
          Executive ex2 = new Executive("executive_" + name, "department_2", null);
          ArrayList list = new ArrayList();
          list.add(ex1);
          list.add(ex2);
          Manager m1 = new Manager("manager_" + name);
          m1.setExecutives(list);
  
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          database.makePersistent(em1);
          database.makePersistent(m1);
          tx.commit();
  
          tx.begin();
          Identity m1_oid = new Identity(m1, tx.getBroker());
          Identity ex1_oid = new Identity(ex1, tx.getBroker());
          Identity em1_oid = new Identity(em1, tx.getBroker());
  
          tx.getBroker().clearCache();
  
          Employee newEm1 = (Employee) tx.getBroker().getObjectByIdentity(em1_oid);
          Executive newEx1 = (Executive) tx.getBroker().getObjectByIdentity(ex1_oid);
          Manager newM1 = (Manager) tx.getBroker().getObjectByIdentity(m1_oid);
          tx.commit();
  
          assertEquals(2, newM1.getExecutives().size());
  
          tx.begin();
          tx.lock(newEm1, Transaction.WRITE);
          tx.lock(newEx1, Transaction.WRITE);
          tx.lock(newM1, Transaction.WRITE);
          newEm1.setName("**updated_"+name);
          newM1.setName("**updated_"+name);
          ((Executive) newM1.getExecutives().get(0)).setName("**updated_"+name);
          tx.commit();
  
          //*************************************
          tx.begin();
          tx.getBroker().clearCache();
          em1 = (Employee) tx.getBroker().getObjectByIdentity(em1_oid);
          ex1 = (Executive) tx.getBroker().getObjectByIdentity(ex1_oid);
          m1 = (Manager) tx.getBroker().getObjectByIdentity(m1_oid);
          tx.commit();
          //*************************************
  
          assertEquals(newEm1, em1);
          assertEquals(newEx1, ex1);
          assertEquals(newM1, m1);
          assertEquals(2, m1.getExecutives().size());
      }
  
      public void testDelete()
      {
          // TODO: not all objects will be deleted
          if(ojbSkipKnownIssueProblem()) return;
  
          String name = "testUpdate" + System.currentTimeMillis();
          Employee em1 = new Employee("employee_" + name);
          Executive ex1 = new Executive("executive_" + name, "department_1", null);
          Executive ex2 = new Executive("executive_" + name, "department_2", null);
          ArrayList list = new ArrayList();
          list.add(ex1);
          list.add(ex2);
          Manager m1 = new Manager("manager_" + name);
          m1.setExecutives(list);
  
          TransactionExt tx = (TransactionExt) odmg.newTransaction();
          tx.begin();
          database.makePersistent(em1);
          database.makePersistent(m1);
          tx.commit();
  
          tx.begin();
          Identity m1_oid = new Identity(m1, tx.getBroker());
          Identity ex1_oid = new Identity(ex1, tx.getBroker());
          Identity em1_oid = new Identity(em1, tx.getBroker());
  
          tx.getBroker().clearCache();
  
          Employee newEm1 = (Employee) tx.getBroker().getObjectByIdentity(em1_oid);
          Executive newEx1 = (Executive) tx.getBroker().getObjectByIdentity(ex1_oid);
          Manager newM1 = (Manager) tx.getBroker().getObjectByIdentity(m1_oid);
          tx.commit();
  
          assertNotNull(newEm1);
          assertNotNull(newEx1);
          assertNotNull(newM1);
          assertEquals(2, newM1.getExecutives().size());
  
          //*************************************
          tx.begin();
          database.deletePersistent(newEm1);
          database.deletePersistent(newEx1);
          database.deletePersistent(newM1);
          tx.commit();
          //*************************************
  
          tx.begin();
          newEm1 = (Employee) tx.getBroker().getObjectByIdentity(em1_oid);
          newEx1 = (Executive) tx.getBroker().getObjectByIdentity(ex1_oid);
          newM1 = (Manager) tx.getBroker().getObjectByIdentity(m1_oid);
          tx.commit();
  
          assertNull(newEm1);
          assertNull(newEx1);
          assertNull(newM1);
      }
  
      //************************************************************
      // inner classes used for test
      //************************************************************
      public static class Manager extends Executive
      {
          private List executives;
  
          public Manager()
          {
          }
  
          public Manager(String name)
          {
              super(name,null, null);
          }
  
          public List getExecutives()
          {
              return executives;
          }
  
          public void setExecutives(List executives)
          {
              this.executives = executives;
          }
      }
  
      public static class Executive extends Employee
      {
          private String department;
          private Manager manager;
  
          public Executive()
          {
          }
  
          public Executive(String name, String department, Manager manager)
          {
              super(name);
              this.department = department;
              this.manager = manager;
          }
  
          public String getDepartment()
          {
              return department;
          }
  
          public void setDepartment(String department)
          {
              this.department = department;
          }
  
          public Manager getManager()
          {
              return manager;
          }
  
          public void setManager(Manager manager)
          {
              this.manager = manager;
          }
  
          public boolean equals(Object obj)
          {
              if(! (obj instanceof Executive))
              {
                  return false;
              }
              Executive ex = (Executive) obj;
              return new EqualsBuilder().append(getId(), ex.getId())
                      .append(getName(), ex.getName())
                      .append(getDepartment(), ex.getDepartment()).isEquals();
          }
      }
  
      public static class Employee
      {
          private Integer id;
          private String name;
          private AddressIF address;
  
          public Employee()
          {
          }
  
          public Employee(String name)
          {
              this.name = name;
          }
  
          public Integer getId()
          {
              return id;
          }
  
          public void setId(Integer id)
          {
              this.id = id;
          }
  
          public AddressIF getAddress()
          {
              return address;
          }
  
          public void setAddress(AddressIF address)
          {
              this.address = address;
          }
  
          public String getName()
          {
              return name;
          }
  
          public void setName(String name)
          {
              this.name = name;
          }
  
          public boolean equals(Object obj)
          {
              if(! (obj instanceof Employee))
              {
                  return false;
              }
              Employee em = (Employee) obj;
              return new EqualsBuilder().append(getId(), em.getId()).append(getName(), em.getName()).isEquals();
          }
  
          public String toString()
          {
              return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE, false, Employee.class);
          }
      }
  
      public static class Address implements AddressIF
      {
          private Integer id;
          private String street;
  
          public Address()
          {
          }
  
          public Address(String street)
          {
              this.street = street;
          }
  
          public Integer getId()
          {
              return id;
          }
  
          public void setId(Integer id)
          {
              this.id = id;
          }
  
          public String getStreet()
          {
              return street;
          }
  
          public void setStreet(String street)
          {
              this.street = street;
          }
      }
  
      public static interface AddressIF
      {
          public Integer getId();
          public void setId(Integer id);
          public String getStreet();
          public void setStreet(String street);
      }
  }
  
  
  
  1.7       +8 -19     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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- InheritanceMultipleTableTest.java	6 May 2004 21:22:33 -0000	1.6
  +++ InheritanceMultipleTableTest.java	11 May 2004 11:55:57 -0000	1.7
  @@ -11,36 +11,21 @@
   import org.apache.ojb.broker.query.Criteria;
   import org.apache.ojb.broker.query.Query;
   import org.apache.ojb.broker.query.QueryFactory;
  -import org.apache.ojb.junit.OJBTestCase;
  +import org.apache.ojb.junit.PBTestCase;
   
   /**
  - *
  + * Test inheritance using multiple tables.
    *
    * @author <a href="mailto:arminw@apache.org">Armin Waibel</a>
    * @version $Id$
    */
  -public class InheritanceMultipleTableTest extends OJBTestCase
  +public class InheritanceMultipleTableTest extends PBTestCase
   {
  -    private PersistenceBroker broker;
  -
       public static void main(String[] args)
       {
           junit.textui.TestRunner.main(new String[] {InheritanceMultipleTableTest.class.getName()});
       }
   
  -    public void setUp()
  -    {
  -        broker = PersistenceBrokerFactory.defaultPersistenceBroker();
  -    }
  -
  -    public void tearDown()
  -    {
  -         if(broker != null)
  -         {
  -             broker.close();
  -         }
  -    }
  -
       public void testQuery()
       {
           String name = "testInsert" + System.currentTimeMillis();
  @@ -63,6 +48,7 @@
           broker.store(em);
           broker.commitTransaction();
   
  +        broker.clearCache();
           Criteria crit = new Criteria();
           crit.addLike("name", name + "%");
           crit.addLike("department", "none");
  @@ -184,6 +170,9 @@
           Query query = QueryFactory.newQuery(Employee.class, crit);
           Collection result = broker.getCollectionByQuery(query);
           assertEquals(1, result.size());
  +        Employee emp = (Employee) result.iterator().next();
  +        assertNotNull(emp.getAddress());
  +        assertEquals("cockroaches valley", emp.getAddress().getStreet());
       }
   
       public void testQuery_InheritedReference_1()
  
  
  
  1.10      +16 -3     db-ojb/src/test/org/apache/ojb/broker/sequence/NativeIdentifierTest.java
  
  Index: NativeIdentifierTest.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/sequence/NativeIdentifierTest.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- NativeIdentifierTest.java	31 Oct 2003 22:21:18 -0000	1.9
  +++ NativeIdentifierTest.java	11 May 2004 11:55:57 -0000	1.10
  @@ -52,10 +52,10 @@
       // Statements for NATIVE_REF_TEST table
       private static final String CREATE_REF_MYSQL =
               "CREATE TABLE NATIVE_REFERENCE_OBJECT (NATIVE_ID int(11) NOT NULL PRIMARY KEY auto_increment," +
  -            " NAME VARCHAR(250), FK_ID BIGINT, SINGLE_REF_FK BIGINT)";
  +            " NAME VARCHAR(250), FK_ID BIGINT, REF_ID int(11), SINGLE_REF_FK BIGINT)";
       private static final String CREATE_REF_HSQL =
               "CREATE TABLE NATIVE_REFERENCE_OBJECT (NATIVE_ID IDENTITY NOT NULL PRIMARY KEY," +
  -            " NAME VARCHAR(250), FK_ID BIGINT, SINGLE_REF_FK BIGINT)";
  +            " NAME VARCHAR(250), FK_ID BIGINT, REF_ID int(11), SINGLE_REF_FK BIGINT)";
       private static final String DROP_REF = "DROP TABLE NATIVE_REFERENCE_OBJECT";
       private static final String INSERT_DUMMY_REF = "INSERT INTO NATIVE_REFERENCE_OBJECT (NAME) VALUES ('Dummy_2')";
   
  @@ -283,7 +283,9 @@
           obj_1.addReference(ref_4);
   
           obj_1.setSingleReference(s_ref_3);
  +        s_ref_3.setMainObject(obj_1);
           obj_2.setSingleReference(s_ref_4);
  +        s_ref_3.setMainObject(obj_1);
   
           broker.beginTransaction();
           // first store a reference
  @@ -610,6 +612,7 @@
       {
           Long id;
           String name;
  +        MainObject mainObject;
   
           public SingleReference()
           {
  @@ -620,6 +623,16 @@
           {
               this.name = name;
               // id = new Long((long)(Math.random() * Integer.MAX_VALUE));
  +        }
  +
  +        public MainObject getMainObject()
  +        {
  +            return mainObject;
  +        }
  +
  +        public void setMainObject(MainObject mainObject)
  +        {
  +            this.mainObject = mainObject;
           }
   
           public Long getId()
  
  
  

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