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/01/29 00:55:30 UTC
cvs commit: db-ojb/src/test/org/apache/ojb/broker ReferenceTest.java
arminw 2004/01/28 15:55:30
Modified: src/test/org/apache/ojb repository_junit_reference.xml
src/schema ojbtest-schema.xml
src/test/org/apache/ojb/broker ReferenceTest.java
Log:
add tests for changed PB behaviour on store of new object
Revision Changes Path
1.4 +76 -1 db-ojb/src/test/org/apache/ojb/repository_junit_reference.xml
Index: repository_junit_reference.xml
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/repository_junit_reference.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- repository_junit_reference.xml 12 Jan 2004 10:55:47 -0000 1.3
+++ repository_junit_reference.xml 28 Jan 2004 23:55:30 -0000 1.4
@@ -352,6 +352,81 @@
/>
</class-descriptor>
+ <class-descriptor
+ class="org.apache.ojb.broker.ReferenceTest$Wine"
+ table="REF_WINE">
+
+ <field-descriptor
+ name="id"
+ column="OBJ_ID"
+ jdbc-type="VARCHAR"
+ primarykey="true"
+ autoincrement="false"
+ />
+
+ <field-descriptor
+ name="grape"
+ column="GRAPE"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="year"
+ column="VINTAGE"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="regionName"
+ column="REGION_NAME"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="regionCountry"
+ column="REGION_COUNTRY"
+ jdbc-type="VARCHAR"
+ />
+
+ <reference-descriptor
+ name="region"
+ class-ref="org.apache.ojb.broker.ReferenceTest$Region"
+ proxy="false"
+ auto-retrieve="true"
+ auto-update="false"
+ auto-delete="false">
+ <foreignkey field-ref="regionName"/>
+ <foreignkey field-ref="regionCountry"/>
+ </reference-descriptor>
+ </class-descriptor>
+
+ <class-descriptor
+ class="org.apache.ojb.broker.ReferenceTest$Region"
+ table="REF_REGION">
+
+ <field-descriptor
+ name="name"
+ column="NAME"
+ jdbc-type="VARCHAR"
+ primarykey="true"
+ autoincrement="false"
+ />
+
+ <field-descriptor
+ name="country"
+ column="COUNTRY"
+ jdbc-type="VARCHAR"
+ primarykey="true"
+ autoincrement="false"
+ />
+
+ <field-descriptor
+ name="description"
+ column="DESCRIPTION"
+ jdbc-type="VARCHAR"
+ />
+ </class-descriptor>
+
1.61 +18 -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.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- ojbtest-schema.xml 13 Jan 2004 21:53:58 -0000 1.60
+++ ojbtest-schema.xml 28 Jan 2004 23:55:30 -0000 1.61
@@ -722,6 +722,24 @@
<column name="LENGTH_" type="DOUBLE"/>
</table>
+ <table name="REF_WINE">
+ <column name="OBJ_ID" required="true" primaryKey="true" type="VARCHAR" size="100"/>
+ <column name="REGION_NAME" type="VARCHAR" size="100" required="true"/>
+ <column name="REGION_COUNTRY" type="VARCHAR" size="100" required="true"/>
+ <column name="VINTAGE" type="VARCHAR" size="100"/>
+ <column name="GRAPE" type="VARCHAR" size="100"/>
+ <foreign-key foreignTable="REF_REGION">
+ <reference local="REGION_NAME" foreign="NAME"/>
+ <reference local="REGION_COUNTRY" foreign="COUNTRY"/>
+ </foreign-key>
+ </table>
+
+ <table name="REF_REGION">
+ <column name="NAME" required="true" primaryKey="true" type="VARCHAR" size="100"/>
+ <column name="COUNTRY" required="true" primaryKey="true" type="VARCHAR" size="100"/>
+ <column name="DESCRIPTION" type="VARCHAR" size="100"/>
+ </table>
+
<!-- =================================================== -->
1.10 +198 -1 db-ojb/src/test/org/apache/ojb/broker/ReferenceTest.java
Index: ReferenceTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/ReferenceTest.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ReferenceTest.java 9 Dec 2003 13:46:46 -0000 1.9
+++ ReferenceTest.java 28 Jan 2004 23:55:30 -0000 1.10
@@ -50,6 +50,74 @@
}
}
+ public void testStoreWithMultiplePK_1() throws Exception
+ {
+ String timestamp = ""+System.currentTimeMillis();
+ String regionName = "baden_"+timestamp;
+ String countryName = "germany_"+timestamp;
+ Region region = new Region(regionName, countryName, "brrr");
+ Wine wine = new Wine(timestamp, "silvaner", "2003", regionName, countryName);
+
+ broker.beginTransaction();
+ broker.store(region);
+ broker.commitTransaction();
+
+ /*
+ class Wine has a 1:1 reference with Region, we set set the FK in Wine but don't
+ set the Region reference object in Wine. But retriveAllReferences materialize
+ the reference object before store.
+ */
+ broker.beginTransaction();
+ broker.retrieveAllReferences(wine);
+ broker.store(wine);
+ broker.commitTransaction();
+ }
+
+ public void testStoreWithMultiplePK_2() throws Exception
+ {
+ String timestamp = ""+System.currentTimeMillis();
+ String regionName = "baden_"+timestamp;
+ String countryName = "germany_"+timestamp;
+ /*
+ Wine has a 1:1 reference with Region, we set the reference object in
+ Wine class. We don't set the FK fields in Wine, this should be done by OJB
+ automatic
+ */
+ Region region = new Region(regionName, countryName, "brrr");
+ Wine wine = new Wine(timestamp, "silvaner", "2003", null, null);
+ wine.setRegion(region);
+
+ broker.beginTransaction();
+ broker.store(region);
+ broker.commitTransaction();
+
+ broker.beginTransaction();
+ broker.store(wine);
+ broker.commitTransaction();
+ }
+
+ public void testStoreWithMultiplePK_3() throws Exception
+ {
+ String timestamp = ""+System.currentTimeMillis();
+ String regionName = "baden_"+timestamp;
+ String countryName = "germany_"+timestamp;
+ /*
+ Wine has a 1:1 reference with Region, we set set the FK fields
+ of an existing Region object in Wine
+ but don't set the Region reference object itself in Wine object
+ */
+ Region region = new Region(regionName, countryName, "brrr");
+ Wine wine = new Wine(timestamp, "silvaner", "2003", regionName, countryName);
+
+ broker.beginTransaction();
+ broker.store(region);
+ broker.commitTransaction();
+
+ broker.beginTransaction();
+ broker.store(wine);
+ broker.commitTransaction();
+ }
+
public void testStoreReferencesMappedToSameTable()
{
String referenceNamePrefix = "testStoreReferencesMappedToSameTable"+System.currentTimeMillis();
@@ -591,6 +659,8 @@
+
+
//***************************************************************************
// Inner classes used by the test case
//***************************************************************************
@@ -988,6 +1058,133 @@
public void setLength(Double length)
{
this.length = length;
+ }
+ }
+
+
+ //***************************************************************
+ // classes for test with multiple, non-autoincrement PK
+ //***************************************************************
+ public static class Wine
+ {
+ private String id;
+ private String grape;
+ private String year;
+ private String regionName;
+ private String regionCountry;
+ private Region region;
+
+ public Wine(String id, String grape, String year, String regionName, String regionCountry)
+ {
+ this.id = id;
+ this.grape = grape;
+ this.year = year;
+ this.regionName = regionName;
+ this.regionCountry = regionCountry;
+ }
+
+ public Region getRegion()
+ {
+ return region;
+ }
+
+ public void setRegion(Region region)
+ {
+ this.region = region;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getGrape()
+ {
+ return grape;
+ }
+
+ public void setGrape(String grape)
+ {
+ this.grape = grape;
+ }
+
+ public String getYear()
+ {
+ return year;
+ }
+
+ public void setYear(String year)
+ {
+ this.year = year;
+ }
+
+ public String getRegionName()
+ {
+ return regionName;
+ }
+
+ public void setRegionName(String regionName)
+ {
+ this.regionName = regionName;
+ }
+
+ public String getRegionCountry()
+ {
+ return regionCountry;
+ }
+
+ public void setRegionCountry(String regionCountry)
+ {
+ this.regionCountry = regionCountry;
+ }
+ }
+
+ public static class Region
+ {
+ private String name;
+ private String country;
+ private String description;
+
+ public Region(String name, String country, String description)
+ {
+ this.name = name;
+ this.country = country;
+ this.description = description;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getCountry()
+ {
+ return country;
+ }
+
+ public void setCountry(String country)
+ {
+ this.country = country;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setDescription(String description)
+ {
+ this.description = description;
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org