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 2003/07/08 02:34:55 UTC
cvs commit: db-ojb/src/schema ojbtest-schema.xml
arminw 2003/07/07 17:34:54
Modified: src/test/org/apache/ojb repository_junit.xml
src/test/org/apache/ojb/broker NestedFieldsTest.java
src/schema ojbtest-schema.xml
Log:
upgrade nested fields test
Revision Changes Path
1.79 +36 -0 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.78
retrieving revision 1.79
diff -u -r1.78 -r1.79
--- repository_junit.xml 30 Jun 2003 21:16:21 -0000 1.78
+++ repository_junit.xml 8 Jul 2003 00:34:54 -0000 1.79
@@ -4384,4 +4384,40 @@
</collection-descriptor>
</class-descriptor>
+
+ <!-- ************************************************* -->
+ <!-- nested fields test -->
+ <!-- ************************************************* -->
+ <class-descriptor
+ class="org.apache.ojb.broker.NestedFieldsTest$NestedMain"
+ table="NESTED_FIELDS_TAB">
+
+ <field-descriptor
+ name="objId"
+ column="OBJ_ID"
+ jdbc-type="BIGINT"
+ primarykey="true"
+ autoincrement="true"/>
+
+ <field-descriptor
+ name="name"
+ column="NAME"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="detail::detail::realDetailName"
+ column="NESTED_VALUE"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="detail::detail::realDetailDescription"
+ column="NESTED_DESCRIPTION"
+ jdbc-type="VARCHAR"
+ />
+ </class-descriptor>
+
+
+
<!-- Mapping of classes used in junit tests and tutorials ends here -->
1.2 +241 -57 db-ojb/src/test/org/apache/ojb/broker/NestedFieldsTest.java
Index: NestedFieldsTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/NestedFieldsTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- NestedFieldsTest.java 30 Jun 2003 21:16:04 -0000 1.1
+++ NestedFieldsTest.java 8 Jul 2003 00:34:54 -0000 1.2
@@ -1,8 +1,8 @@
package org.apache.ojb.broker;
import junit.framework.TestCase;
-import org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl;
-import org.apache.ojb.broker.util.configuration.impl.OjbConfiguration;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
/**
@@ -11,9 +11,8 @@
*/
public class NestedFieldsTest extends TestCase
{
-
- private Class normalPersistentFieldClass;
PersistenceBroker broker;
+
public NestedFieldsTest(String name)
{
super(name);
@@ -34,70 +33,255 @@
*/
public void setUp()
{
- try
+ // obtain broker instance
+ broker = PersistenceBrokerFactory.defaultPersistenceBroker();
+ }
+
+ /**
+ * tearing down the test fixture.
+ */
+ public void tearDown()
+ {
+ broker.close();
+ }
+
+ public void testStoreReadNestedField()
+ {
+ long timestamp = System.currentTimeMillis();
+ String ddName = "second_level_detail_" + timestamp;
+ String ddDescription = "a real detail description" + timestamp;
+
+ NestedDetailDetail dd = new NestedDetailDetail(ddName, ddDescription);
+ NestedDetail d = new NestedDetail(dd);
+ NestedMain nested = new NestedMain("main_object_" + timestamp, d);
+ Identity oid = new Identity(nested, broker);
+
+ broker.beginTransaction();
+ broker.store(nested);
+ broker.commitTransaction();
+
+ assertNotNull(nested.getDetail());
+ assertNotNull(nested.getDetail().getDetail());
+ assertNotNull(nested.getDetail().getDetail().getRealDetailName());
+ dd = nested.getDetail().getDetail();
+ assertEquals(ddName, dd.getRealDetailName());
+ assertEquals(ddDescription, dd.getRealDetailDescription());
+
+ // retrieve copy of nested object
+ NestedMain nestedCopy = (NestedMain) broker.getObjectByIdentity(oid);
+ assertNotNull(nestedCopy.getDetail());
+ assertNotNull(nestedCopy.getDetail().getDetail());
+ assertNotNull(nestedCopy.getDetail().getDetail().getRealDetailName());
+ dd = nested.getDetail().getDetail();
+ assertEquals(ddName, dd.getRealDetailName());
+ assertEquals(ddDescription, dd.getRealDetailDescription());
+
+ // clear cache and retrieve copy of nested object
+ broker.clearCache();
+ nestedCopy = (NestedMain) broker.getObjectByIdentity(oid);
+ assertNotNull(nestedCopy.getDetail());
+ assertNotNull(nestedCopy.getDetail().getDetail());
+ assertNotNull(nestedCopy.getDetail().getDetail().getRealDetailName());
+ dd = nested.getDetail().getDetail();
+ assertEquals(ddName, dd.getRealDetailName());
+ assertEquals(ddDescription, dd.getRealDetailDescription());
+ }
+
+ public void testUpdateNestedField()
+ {
+ long timestamp = System.currentTimeMillis();
+ String ddName = "second_level_detail_" + timestamp;
+ String ddDescription = "a real detail description" + timestamp;
+
+ NestedDetailDetail dd = new NestedDetailDetail(ddName, ddDescription);
+ NestedDetail d = new NestedDetail(dd);
+ NestedMain nested = new NestedMain("main_object_" + timestamp, d);
+ Identity oid = new Identity(nested, broker);
+
+ broker.beginTransaction();
+ broker.store(nested);
+ broker.commitTransaction();
+
+ // clear cache and retrieve copy of nested object
+ broker.clearCache();
+ nested = (NestedMain) broker.getObjectByIdentity(oid);
+
+ /*
+ till now we do the same as in the test above
+ now change nested field and store
+ */
+ nested.getDetail().getDetail().setRealDetailName("update_name_"+timestamp);
+ broker.beginTransaction();
+ broker.store(nested);
+ broker.commitTransaction();
+
+ // clear cache and retrieve copy of nested object
+ broker.clearCache();
+ nested = (NestedMain) broker.getObjectByIdentity(oid);
+ assertEquals("update_name_"+timestamp, nested.getDetail().getDetail().getRealDetailName());
+ }
+
+ public void testDeleteNestedField()
+ {
+ long timestamp = System.currentTimeMillis();
+ String ddName = "second_level_detail_" + timestamp;
+ String ddDescription = "a real detail description" + timestamp;
+
+ NestedDetailDetail dd = new NestedDetailDetail(ddName, ddDescription);
+ NestedDetail d = new NestedDetail(dd);
+ NestedMain nested = new NestedMain("main_object_" + timestamp, d);
+ Identity oid = new Identity(nested, broker);
+
+ broker.beginTransaction();
+ broker.store(nested);
+ broker.commitTransaction();
+
+ // clear cache and retrieve copy of nested object
+ broker.clearCache();
+ nested = (NestedMain) broker.getObjectByIdentity(oid);
+
+ broker.beginTransaction();
+ broker.delete(nested);
+ broker.commitTransaction();
+
+ nested = (NestedMain) broker.getObjectByIdentity(oid);
+ assertNull("Object was not deleted", nested);
+ }
+
+
+
+ //************************************************************************
+ // inner classes - used test classes
+ //************************************************************************
+
+ public static class NestedMain
+ {
+ private Long objId;
+ private String name;
+ private NestedDetail detail;
+
+ public NestedMain()
+ {
+ }
+
+ public NestedMain(String name, NestedDetail detail)
+ {
+ this.name = name;
+ this.detail = detail;
+ }
+
+ public Long getObjId()
+ {
+ return objId;
+ }
+
+ public void setObjId(Long objId)
+ {
+ this.objId = objId;
+ }
+
+ public String getName()
{
- // obtain broker instance
- broker = PersistenceBrokerFactory.defaultPersistenceBroker();
- // manipulate configuration to use proper field access
- OjbConfiguration conf = (OjbConfiguration) PersistenceBrokerFactory.
- getConfigurator().getConfigurationFor(null);
- normalPersistentFieldClass = conf.getPersistentFieldClass();
- conf.setPersistentFieldClass(PersistentNestedFieldMaxPerformanceImpl.class);
+ return name;
}
- catch (PBFactoryException e)
+
+ public void setName(String name)
{
+ this.name = name;
}
+ public NestedDetail getDetail()
+ {
+ return detail;
+ }
+
+ public void setDetail(NestedDetail detail)
+ {
+ this.detail = detail;
+ }
+
+ public String toString()
+ {
+ ToStringBuilder buf = new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE);
+ buf.append("objId", objId).
+ append("name", name).
+ append("detail", detail);
+ return buf.toString();
+ }
}
- /**
- * tearing down the test fixture.
- */
- public void tearDown()
+ public static class NestedDetail
{
- try
- {
- // manipulate configuration to reset field access
- OjbConfiguration conf = (OjbConfiguration) PersistenceBrokerFactory.
- getConfigurator().getConfigurationFor(null);
- conf.setPersistentFieldClass(normalPersistentFieldClass);
+ private NestedDetailDetail detail;
+
+ public NestedDetail()
+ {
}
- catch (PBFactoryException e)
+
+ public NestedDetail(NestedDetailDetail detail)
{
- }
- broker.close();
+ this.detail = detail;
+ }
+
+ public NestedDetailDetail getDetail()
+ {
+ return detail;
+ }
+
+ public void setDetail(NestedDetailDetail detail)
+ {
+ this.detail = detail;
+ }
+
+ public String toString()
+ {
+ ToStringBuilder buf = new ToStringBuilder(this, ToStringStyle.SIMPLE_STYLE);
+ buf.append("detail", detail);
+ return buf.toString();
+ }
}
- public void testLoading()
- {
- ArticleWithNestedStockDetail article = new ArticleWithNestedStockDetail();
- article.setArticleName("an article with a stock detail");
- article.setPrice(23);
- article.setProductGroupId(1);
-
- StockDetail detail = new StockDetail();
- detail.setStock(500);
- detail.setIsSelloutArticle(true);
- detail.setMinimumStock(100);
- detail.setOrderedUnits(0);
- detail.setUnit("bottle");
-
- article.setStockDetail(detail);
-
- broker.beginTransaction();
- broker.store(article);
- Identity oid = new Identity(article, broker);
- broker.commitTransaction();
-
- broker.clearCache();
- ArticleWithNestedStockDetail copy = null;
- StockDetail detailCopy = null;
- broker.beginTransaction();
- copy = (ArticleWithNestedStockDetail) broker.getObjectByIdentity(oid);
- detailCopy = copy.getStockDetail();
-
- assertEquals(detail.getStock(), detailCopy.getStock());
-
- }
+ public static class NestedDetailDetail
+ {
+ private String realDetailName;
+ private String realDetailDescription;
+
+ public NestedDetailDetail()
+ {
+ }
+
+ public NestedDetailDetail(String realDetailName, String realDetailDescription)
+ {
+ this.realDetailName = realDetailName;
+ this.realDetailDescription = realDetailDescription;
+ }
+
+ public String getRealDetailName()
+ {
+ return realDetailName;
+ }
+ public void setRealDetailName(String realDetailName)
+ {
+ this.realDetailName = realDetailName;
+ }
+
+ public String getRealDetailDescription()
+ {
+ return realDetailDescription;
+ }
+
+ public void setRealDetailDescription(String realDetailDescription)
+ {
+ this.realDetailDescription = realDetailDescription;
+ }
+
+ public String toString()
+ {
+ ToStringBuilder buf = new ToStringBuilder(this, ToStringStyle.SIMPLE_STYLE);
+ buf.append("realDetailName", realDetailName).
+ append("realDetailDescription", realDetailDescription);
+ return buf.toString();
+ }
+ }
}
1.42 +11 -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.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- ojbtest-schema.xml 27 Jun 2003 21:03:13 -0000 1.41
+++ ojbtest-schema.xml 8 Jul 2003 00:34:54 -0000 1.42
@@ -731,4 +731,15 @@
<table name="ABSTRACT_COLLECTION_CONTAINER">
<column name="OBJ_ID" required="true" primaryKey="true" type="INTEGER"/>
</table>
+
+ <!-- =================================================== -->
+ <!-- PB nested fields test -->
+ <!-- =================================================== -->
+ <table name="NESTED_FIELDS_TAB">
+ <column name="OBJ_ID" required="true" primaryKey="true" type="DECIMAL"/>
+ <column name="NAME" type="VARCHAR" size="150"/>
+ <column name="NESTED_VALUE" type="VARCHAR" size="150"/>
+ <column name="NESTED_DESCRIPTION" type="VARCHAR" size="150"/>
+ </table>
+
</database>
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org