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/02/19 02:39:40 UTC

cvs commit: db-ojb/src/test/org/apache/ojb/faraway-db OJB_FarAway.script

arminw      2004/02/18 17:39:40

  Modified:    src/test/org/apache/ojb repository_junit.xml
               src/test/org/apache/ojb/broker MultipleDBTest.java
               src/schema ojbtest-schema.xml
               src/test/org/apache/ojb/faraway-db OJB_FarAway.script
  Log:
  add new "exotic" test, materialize an object using multiple DB
  
  Revision  Changes    Path
  1.106     +53 -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.105
  retrieving revision 1.106
  diff -u -r1.105 -r1.106
  --- repository_junit.xml	13 Feb 2004 18:58:24 -0000	1.105
  +++ repository_junit.xml	19 Feb 2004 01:39:40 -0000	1.106
  @@ -2787,6 +2787,58 @@
         />
   </class-descriptor>
   
  +<class-descriptor
  +   	  class="org.apache.ojb.broker.MultipleDBTest$MultipleObjectRef"
  +   	  table="MULTIPLE_OBJECT_REF">
  +
  +      <field-descriptor
  +         name="id"
  +         column="OBJ_ID"
  +         jdbc-type="INTEGER"
  +         primarykey="true"
  +         autoincrement="true"
  +      />
  +        <field-descriptor
  +         name="refId"
  +         column="REF_ID"
  +         jdbc-type="INTEGER"
  +      />
  +      <field-descriptor
  +         name="name"
  +         column="NAME"
  +         jdbc-type="VARCHAR"
  +      />
  +</class-descriptor>
  +
  +<class-descriptor
  +   	  class="org.apache.ojb.broker.MultipleDBTest$MultipleObject"
  +   	  table="MULTIPLE_OBJECT">
  +
  +      <field-descriptor
  +         name="id"
  +         column="OBJ_ID"
  +         jdbc-type="INTEGER"
  +         primarykey="true"
  +         autoincrement="true"
  +      />
  +      <field-descriptor
  +         name="name"
  +         column="NAME"
  +         jdbc-type="VARCHAR"
  +      />
  +
  +        <collection-descriptor
  +            name="references"
  +            element-class-ref="org.apache.ojb.broker.MultipleDBTest$MultipleObjectRef"
  +            proxy="false"
  +            auto-retrieve="false"
  +            auto-update="false"
  +            auto-delete="false"
  +        >
  +            <inverse-foreignkey field-ref="refId"/>
  +        </collection-descriptor>
  +</class-descriptor>
  +
   <!-- ************************************************* -->
   <!--      Performance/Stress test descriptor           -->
   <!-- ************************************************* -->
  
  
  
  1.15      +140 -0    db-ojb/src/test/org/apache/ojb/broker/MultipleDBTest.java
  
  Index: MultipleDBTest.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/MultipleDBTest.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- MultipleDBTest.java	30 Aug 2003 23:07:43 -0000	1.14
  +++ MultipleDBTest.java	19 Feb 2004 01:39:40 -0000	1.15
  @@ -4,8 +4,11 @@
   import junit.framework.TestCase;
   import org.apache.ojb.broker.query.Criteria;
   import org.apache.ojb.broker.query.QueryByCriteria;
  +import org.apache.commons.lang.builder.ToStringBuilder;
  +import org.apache.commons.lang.builder.ToStringStyle;
   
   import java.sql.Connection;
  +import java.util.Collection;
   
   /**
    * Test to check support for multiple DB.
  @@ -38,6 +41,48 @@
       }
   
       /**
  +     * This test show how it is possible to materialize an object
  +     * with a collection of objects retrieved from a different DB
  +     * NOTE: This is not a recommended design, but it works. 
  +     */
  +    public void testMaterializeFromDifferentDB()
  +    {
  +        String name = "testMaterializeFromDifferentDB" + System.currentTimeMillis();
  +        PersistenceBroker broker = PersistenceBrokerFactory.defaultPersistenceBroker();
  +        PersistenceBroker brokerFarAway = PersistenceBrokerFactory.createPersistenceBroker(TestHelper.FAR_AWAY_KEY);
  +
  +        MultipleObject obj = new MultipleObject();
  +        obj.setName(name);
  +        broker.beginTransaction();
  +        broker.store(obj);
  +        broker.commitTransaction();
  +
  +        Identity oid = new Identity(obj, broker);
  +
  +        MultipleObjectRef ref_1 = new MultipleObjectRef();
  +        MultipleObjectRef ref_2 = new MultipleObjectRef();
  +        ref_1.setName(name);
  +        ref_1.setRefId(obj.getId());
  +        ref_2.setName(name);
  +        ref_2.setRefId(obj.getId());
  +
  +        brokerFarAway.beginTransaction();
  +        brokerFarAway.store(ref_1);
  +        brokerFarAway.store(ref_2);
  +        brokerFarAway.commitTransaction();
  +
  +        broker.clearCache();
  +        brokerFarAway.clearCache();
  +
  +        MultipleObject newObj = (MultipleObject)broker.getObjectByIdentity(oid);
  +        brokerFarAway.retrieveAllReferences(newObj);
  +
  +        assertNotNull(newObj.getReferences());
  +        assertEquals(2, newObj.getReferences().size());
  +        // System.out.println("## " + newObj);
  +    }
  +
  +    /**
        * test PB instance lookup using different
        * PBKey constructors + databases
        */
  @@ -413,5 +458,100 @@
           a.setSupplierId(4);
           a.setUnit("bottle");
           return a;
  +    }
  +
  +    //***********************************************************************
  +    // inner classes used by test case
  +    //***********************************************************************
  +    public static class MultipleObject
  +    {
  +        Integer id;
  +        String name;
  +        Collection references;
  +
  +        public MultipleObject()
  +        {
  +        }
  +
  +        public Integer getId()
  +        {
  +            return id;
  +        }
  +
  +        public void setId(Integer id)
  +        {
  +            this.id = id;
  +        }
  +
  +        public String getName()
  +        {
  +            return name;
  +        }
  +
  +        public void setName(String name)
  +        {
  +            this.name = name;
  +        }
  +
  +        public Collection getReferences()
  +        {
  +            return references;
  +        }
  +
  +        public void setReferences(Collection references)
  +        {
  +            this.references = references;
  +        }
  +
  +        public String toString()
  +        {
  +            return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
  +        }
  +    }
  +
  +    public static class MultipleObjectRef
  +    {
  +        Integer id;
  +        Integer refId;
  +        String name;
  +
  +        public MultipleObjectRef()
  +        {
  +        }
  +
  +        public Integer getId()
  +        {
  +            return id;
  +        }
  +
  +        public void setId(Integer id)
  +        {
  +            this.id = id;
  +        }
  +
  +        public Integer getRefId()
  +        {
  +            return refId;
  +        }
  +
  +        public void setRefId(Integer refId)
  +        {
  +            this.refId = refId;
  +        }
  +
  +        public String getName()
  +        {
  +            return name;
  +        }
  +
  +        public void setName(String name)
  +        {
  +            this.name = name;
  +        }
  +
  +        public String toString()
  +        {
  +            return ToStringBuilder.reflectionToString(this, ToStringStyle.DEFAULT_STYLE);
  +        }
       }
   }
  
  
  
  1.64      +8 -0      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.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- ojbtest-schema.xml	13 Feb 2004 18:58:24 -0000	1.63
  +++ ojbtest-schema.xml	19 Feb 2004 01:39:40 -0000	1.64
  @@ -1007,6 +1007,14 @@
   
   
       <!-- =================================================== -->
  +    <!-- MultiplesDBTest - PB-api                            -->
  +    <!-- =================================================== -->
  +    <table name="MULTIPLE_OBJECT">
  +        <column name="OBJ_ID" required="true" primaryKey="true" type="INTEGER"/>
  +        <column name="NAME" type="VARCHAR" size="150"/>
  +    </table>
  +
  +    <!-- =================================================== -->
       <!-- Multithreaded lock test - odmg                      -->
       <!-- =================================================== -->
       <table name="LOCK_MULTI">
  
  
  
  1.7       +1 -0      db-ojb/src/test/org/apache/ojb/faraway-db/OJB_FarAway.script
  
  Index: OJB_FarAway.script
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/faraway-db/OJB_FarAway.script,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- OJB_FarAway.script	13 Aug 2003 17:57:01 -0000	1.6
  +++ OJB_FarAway.script	19 Feb 2004 01:39:40 -0000	1.7
  @@ -1,4 +1,5 @@
   CREATE TABLE FAR_AWAY(ID INTEGER PRIMARY KEY,NAME VARCHAR(50),DESCRIPTION VARCHAR(250), REFERENCE_ID INTEGER)
  +CREATE TABLE MULTIPLE_OBJECT_REF(OBJ_ID INTEGER PRIMARY KEY, NAME VARCHAR(50), REF_ID INTEGER)
   CREATE TABLE FAR_AWAY_REFERENCE(ID INTEGER PRIMARY KEY,NAME VARCHAR(50))
   CREATE TABLE OJB_HL_SEQ(TABLENAME VARCHAR(175) NOT NULL,FIELDNAME VARCHAR(70) NOT NULL,MAX_KEY INTEGER,GRAB_SIZE INTEGER,VERSION INTEGER,CONSTRAINT SYS_PK_OJB_HL_SEQ PRIMARY KEY(TABLENAME,FIELDNAME))
   CREATE TABLE OJB_LOCKENTRY(OID_ VARCHAR(250) NOT NULL,TX_ID VARCHAR(50) NOT NULL,TIMESTAMP_ TIMESTAMP,ISOLATIONLEVEL INTEGER,LOCKTYPE INTEGER,CONSTRAINT SYS_PK_OJB_LOCKENTRY PRIMARY KEY(OID_,TX_ID))
  
  
  

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