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