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 2006/07/15 16:49:28 UTC

svn commit: r422240 [1/2] - in /db/ojb/trunk/src/test/org/apache/ojb: broker/ broker/sequence/ broker/sqlcount/ compare/ junit/ odmg/

Author: arminw
Date: Sat Jul 15 07:49:27 2006
New Revision: 422240

URL: http://svn.apache.org/viewvc?rev=422240&view=rev
Log:
merge trunk with 1.0.x

Modified:
    db/ojb/trunk/src/test/org/apache/ojb/broker/PBRollbackTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/PathTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/PersistenceBrokerTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/ProductGroupWithRemovalAwareCollection.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/ReferenceTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/RsIteratorTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/StockDetailNested.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/AutoIncrementTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/NativeIdentifierTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/SequenceManagerTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/CollectionCountTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/EmptyCacheCountTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/SimpleCountTest.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/TwoLevelSimpleTest.java
    db/ojb/trunk/src/test/org/apache/ojb/compare/OJBPerfTest.java
    db/ojb/trunk/src/test/org/apache/ojb/compare/PerformanceBaseTest.java
    db/ojb/trunk/src/test/org/apache/ojb/compare/PerformanceODMGTest.java
    db/ojb/trunk/src/test/org/apache/ojb/compare/PerformancePBTest.java
    db/ojb/trunk/src/test/org/apache/ojb/junit/ODMGTestCase.java
    db/ojb/trunk/src/test/org/apache/ojb/junit/OJBTestCase.java
    db/ojb/trunk/src/test/org/apache/ojb/odmg/BatchModeTest.java
    db/ojb/trunk/src/test/org/apache/ojb/odmg/BidirectionalAssociationTest.java
    db/ojb/trunk/src/test/org/apache/ojb/odmg/CircularTest.java
    db/ojb/trunk/src/test/org/apache/ojb/odmg/CollectionsTest.java

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/PBRollbackTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/PBRollbackTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/PBRollbackTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/PBRollbackTest.java Sat Jul 15 07:49:27 2006
@@ -55,14 +55,15 @@
 
     public void testUserCommitClearCache() throws Exception
     {
+        // make sure to disable use of batch statements
+        broker.serviceBatchManager().setBatchMode(false);
+
         Collection projects = getNewProjects(10);
         storeObjects(broker, projects);
         Criteria c = new Criteria();
         Query q = QueryFactory.newQuery(Project.class, c);
         int beforeCommit = broker.getCount(q);
 
-        // Don't use batch statements
-        broker.serviceBatchManager().setBatchMode(false);
         broker.beginTransaction();
         broker.clearCache();
         storeObjects(broker, getNewProjects(10));
@@ -91,14 +92,15 @@
 
     public void testUserCommit() throws Exception
     {
+        // make sure to disable use of batch statements
+        broker.serviceBatchManager().setBatchMode(false);
+
         Collection projects = getNewProjects(10);
         storeObjects(broker, projects);
         Criteria c = new Criteria();
         Query q = QueryFactory.newQuery(Project.class, c);
         int beforeCommit = broker.getCount(q);
 
-        // Don't use batch statements
-        broker.serviceBatchManager().setBatchMode(false);
         broker.beginTransaction();
         storeObjects(broker, getNewProjects(10));
         int whileTransaction = broker.getCount(q);
@@ -126,6 +128,9 @@
 
     public void testUserRollbackClearCache() throws Exception
     {
+        // make sure to disable use of batch statements
+        broker.serviceBatchManager().setBatchMode(false);
+
         Collection projects = getNewProjects(10);
         storeObjects(broker, projects);
         Criteria c = new Criteria();
@@ -163,6 +168,9 @@
 
     public void testUserRollback() throws Exception
     {
+        // make sure to disable use of batch statements
+        broker.serviceBatchManager().setBatchMode(false);
+
         Collection projects = getNewProjects(10);
         storeObjects(broker, projects);
         Criteria c = new Criteria();
@@ -252,14 +260,16 @@
         Query q;
         int beforeRollback;
 
-            broker.beginTransaction();
-            storeObjects(broker, projects);
-            broker.commitTransaction();
+        broker.beginTransaction();
+        storeObjects(broker, projects);
+        broker.commitTransaction();
 
-            Criteria c = new Criteria();
-            q = QueryFactory.newQuery(Project.class, c);
-            beforeRollback = broker.getCount(q);
+        Criteria c = new Criteria();
+        q = QueryFactory.newQuery(Project.class, c);
+        beforeRollback = broker.getCount(q);
 
+        // close current used instance
+        broker.close();
         broker = ojb.getDefaultConfiguration().createPersistenceBroker();
         try
         {

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/PathTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/PathTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/PathTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/PathTest.java Sat Jul 15 07:49:27 2006
@@ -108,13 +108,13 @@
         {
             A a = new A(A_OFFSET + A_OFFSET * ia);
             broker.store(a);
-            output.append(eol +"A - " + a.getAAttrib());
+            output.append(eol +"A - " + a.getaAttrib());
             for (int ib = 0; ib < NUM_B_PER_A; ib++)
             {
                 B b = new B(A_OFFSET + B_OFFSET * ib);
                 b.setA(a);
                 broker.store(b);
-                output.append(eol +"\tB - " + b.getBAttrib());
+                output.append(eol +"\tB - " + b.getbAttrib());
                 for (int ic = 0; ic < NUM_C_PER_B; ic++)
                 {
                     C c = new C(A_OFFSET + B_OFFSET * ib + C_OFFSET * ic);
@@ -125,8 +125,8 @@
                         c.setD(d);
                         broker.store(d);
                         broker.store(c);
-                        output.append(eol +"\t\tC - " + c.getCAttrib());
-                        output.append(eol +"\t\t\tD - " + d.getDAttrib());
+                        output.append(eol +"\t\tC - " + c.getcAttrib());
+                        output.append(eol +"\t\t\tD - " + d.getdAttrib());
                     }
                 }
                 for (int ic = 0; ic < NUM_C1_PER_B; ic++)
@@ -137,11 +137,11 @@
                     {
                         D d = new D(A_OFFSET + B_OFFSET * ib + C_OFFSET * ic + D_OFFSET * id);
                         c1.setD(d);
-                        c1.setC1Attrib(c1.getCAttrib() + 1);
+                        c1.setC1Attrib(c1.getcAttrib() + 1);
                         broker.store(d);
                         broker.store(c1);
                         output.append(eol +"\t\tC1 - " + c1.getC1Attrib());
-                        output.append(eol +"\t\t\tD - " + d.getDAttrib());
+                        output.append(eol +"\t\t\tD - " + d.getdAttrib());
                     }
                 }
             }
@@ -246,7 +246,7 @@
 			while (itr.hasNext())
 			{
 				B b = (B) itr.next();
-				output.append(eol +"Found B:  " + b.getId() + " " + b.getBAttrib());
+				output.append(eol +"Found B:  " + b.getId() + " " + b.getbAttrib());
 			}
 		}
 		catch (Throwable t)
@@ -280,7 +280,7 @@
 			while (itr.hasNext())
 			{
 				A a = (A) itr.next();
-				output.append(eol +"Found A:  " + a.getId() + " " + a.getAAttrib());
+				output.append(eol +"Found A:  " + a.getId() + " " + a.getaAttrib());
 			}
 		}
 		catch (Throwable t)
@@ -315,7 +315,7 @@
 			while (itr.hasNext())
 			{
 				B b = (B) itr.next();
-				output.append(eol +"Found B:  " + b.getId() + " " + b.getBAttrib());
+				output.append(eol +"Found B:  " + b.getId() + " " + b.getbAttrib());
 			}
 		}
 		catch (Throwable t)
@@ -356,7 +356,7 @@
 			while (itr.hasNext())
 			{
 				B b = (B) itr.next();
-				output.append(eol +"Found B:  " + b.getId() + " " + b.getBAttrib());
+				output.append(eol +"Found B:  " + b.getId() + " " + b.getbAttrib());
 			}
 		}
 		catch (Throwable t)
@@ -397,7 +397,7 @@
 			while (itr.hasNext())
 			{
 				A a = (A) itr.next();
-				output.append(eol +"Found A:  " + a.getId() + " " + a.getAAttrib());
+				output.append(eol +"Found A:  " + a.getId() + " " + a.getaAttrib());
 			}
 		}
 		catch (Throwable t)
@@ -439,7 +439,7 @@
             while (itr.hasNext())
             {
                 B b = (B) itr.next();
-                output.append(eol +"Found B:  " + b.getId() + " " + b.getBAttrib());
+                output.append(eol +"Found B:  " + b.getId() + " " + b.getbAttrib());
             }
         }
         catch (Throwable t)
@@ -483,7 +483,7 @@
 			while (itr.hasNext())
 			{
 				B b = (B) itr.next();
-				output.append(eol +"Found B:  " + b.getId() + " " + b.getBAttrib());
+				output.append(eol +"Found B:  " + b.getId() + " " + b.getbAttrib());
 			}
 		}
 		catch (Throwable t)
@@ -525,7 +525,7 @@
 			while (itr.hasNext())
 			{
 				A a = (A) itr.next();
-				output.append(eol +"Found A:  " + a.getId() + " " + a.getAAttrib());
+				output.append(eol +"Found A:  " + a.getId() + " " + a.getaAttrib());
 			}
 		}
 		catch (Throwable t)
@@ -574,7 +574,7 @@
 			while (itr.hasNext())
 			{
 				A a = (A) itr.next();
-				output.append(eol +"Found A:  " + a.getId() + " " + a.getAAttrib());
+				output.append(eol +"Found A:  " + a.getId() + " " + a.getaAttrib());
 			}
 		}
 		catch (Throwable t)
@@ -606,7 +606,7 @@
 		while (itr.hasNext())
 		{
 			A a = (A) itr.next();
-			output.append(eol +"Found A:  " + a.getId() + " " + a.getAAttrib());
+			output.append(eol +"Found A:  " + a.getId() + " " + a.getaAttrib());
 		}
     }
 	
@@ -628,75 +628,35 @@
             this.bSet = new ArrayList();
         }
 
-        // make javabeans conform
-        public int getaAttrib()
-        {
-            return aAttrib;
-        }
-        // make javabeans conform
-        public Collection getbSet()
-        {
-            return bSet;
-        }
-        // make javabeans conform
-        public void setbSet(Collection bSet)
-        {
-            this.bSet = bSet;
-        }
-        // make javabeans conform
-        public void setaAttrib(int aAttrib)
-        {
-            this.aAttrib = aAttrib;
-        }
-
-        /**
-         * @return
-         */
-        public int getAAttrib()
+        public long getId()
         {
-            return aAttrib;
+            return id;
         }
 
-        /**
-         * @return
-         */
-        public Collection getBSet()
+        public void setId(long id)
         {
-            return bSet;
+            this.id = id;
         }
 
-        /**
-         * @return
-         */
-        public long getId()
+        public int getaAttrib()
         {
-            return id;
+            return aAttrib;
         }
 
-        /**
-         * @param i
-         */
-        public void setAAttrib(int i)
+        public void setaAttrib(int aAttrib)
         {
-            aAttrib = i;
+            this.aAttrib = aAttrib;
         }
 
-        /**
-         * @param collection
-         */
-        public void setBSet(Collection collection)
+        public Collection getbSet()
         {
-            bSet = collection;
+            return bSet;
         }
 
-        /**
-         * @param l
-         */
-        public void setId(long l)
+        public void setbSet(Collection bSet)
         {
-            id = l;
+            this.bSet = bSet;
         }
-
     }
 
     public static class B
@@ -717,6 +677,16 @@
             this.cSet = new ArrayList();
         }
 
+        public long getId()
+        {
+            return id;
+        }
+
+        public void setId(long id)
+        {
+            this.id = id;
+        }
+
         public long getaId()
         {
             return aId;
@@ -737,81 +707,25 @@
             this.bAttrib = bAttrib;
         }
 
-        public Collection getcSet()
+       public A getA()
         {
-            return cSet;
-        }
-
-        public void setcSet(Collection cSet)
-        {
-            this.cSet = cSet;
+            return a;
         }
 
-        /**
-         * @return
-         */
-        public int getBAttrib()
+        public void setA(A a)
         {
-            return bAttrib;
+            this.a = a;
         }
 
-        /**
-         * @return
-         */
-        public Collection getCSet()
+        public Collection getcSet()
         {
             return cSet;
         }
 
-        /**
-         * @return
-         */
-        public long getId()
-        {
-            return id;
-        }
-
-        /**
-         * @param i
-         */
-        public void setBAttrib(int i)
-        {
-            bAttrib = i;
-        }
-
-        /**
-         * @param collection
-         */
-        public void setCSet(Collection collection)
-        {
-            cSet = collection;
-        }
-
-        /**
-         * @param l
-         */
-        public void setId(long l)
-        {
-            id = l;
-        }
-
-        /**
-         * @return
-         */
-        public A getA()
-        {
-            return a;
-        }
-
-        /**
-         * @param a
-         */
-        public void setA(A a)
+        public void setcSet(Collection cSet)
         {
-            this.a = a;
-            a.getBSet().add(this);
+            this.cSet = cSet;
         }
-
     }
 
     public static class C
@@ -832,112 +746,71 @@
             this.cAttrib = cAttrib;
         }
 
-        public long getbId()
-        {
-            return bId;
-        }
-
-        public void setbId(long bId)
+        public long getId()
         {
-            this.bId = bId;
+            return id;
         }
 
-        public long getdId()
+        public void setId(long id)
         {
-            return dId;
+            this.id = id;
         }
 
-        public void setdId(long dId)
+        public long getbId()
         {
-            this.dId = dId;
+            return bId;
         }
 
-        public int getcAttrib()
+        public void setbId(long bId)
         {
-            return cAttrib;
+            this.bId = bId;
         }
 
-        public void setcAttrib(int cAttrib)
+        public B getB()
         {
-            this.cAttrib = cAttrib;
+            return b;
         }
 
-        /**
-         * @return
-         */
-        public int getCAttrib()
+        public void setB(B b)
         {
-            return cAttrib;
+            this.b = b;
         }
 
-        /**
-         * @return
-         */
-        public D getD()
+        public long getdId()
         {
-            return d;
+            return dId;
         }
 
-        /**
-         * @return
-         */
-        public long getId()
+        public void setdId(long dId)
         {
-            return id;
+            this.dId = dId;
         }
 
-        /**
-         * @param i
-         */
-        public void setCAttrib(int i)
+        public D getD()
         {
-            cAttrib = i;
+            return d;
         }
 
-        /**
-         *
-         */
         public void setD(D d)
         {
             this.d = d;
         }
 
-        /**
-         * @param l
-         */
-        public void setId(long l)
-        {
-            id = l;
-        }
-
-        /**
-         * @return
-         */
-        public B getB()
+        public int getcAttrib()
         {
-            return b;
+            return cAttrib;
         }
 
-        /**
-         * @param b
-         */
-        public void setB(B b)
+        public void setcAttrib(int cAttrib)
         {
-            this.b = b;
-            b.getCSet().add(this);
+            this.cAttrib = cAttrib;
         }
-
     }
 
     public static class C1 extends C
     {
-
         private int c1Attrib;
 
-        /**
-         *
-         */
-
         public C1()
         {
         }
@@ -947,22 +820,15 @@
             super(cAttrib);
         }
 
-        /**
-         * @return
-         */
         public int getC1Attrib()
         {
             return c1Attrib;
         }
 
-        /**
-         * @param i
-         */
-        public void setC1Attrib(int i)
+        public void setC1Attrib(int c1Attrib)
         {
-            c1Attrib = i;
+            this.c1Attrib = c1Attrib;
         }
-
     }
 
     public static class D
@@ -979,38 +845,25 @@
             this.dAttrib = dAttrib;
         }
 
-        /**
-         * @return
-         */
-        public int getDAttrib()
-        {
-            return dAttrib;
-        }
-
-        /**
-         * @return
-         */
         public long getId()
         {
             return id;
         }
 
-        /**
-         * @param i
-         */
-        public void setDAttrib(int i)
+        public void setId(long id)
         {
-            dAttrib = i;
+            this.id = id;
         }
 
-        /**
-         * @param l
-         */
-        public void setId(long l)
+        public int getdAttrib()
         {
-            id = l;
+            return dAttrib;
         }
 
+        public void setdAttrib(int dAttrib)
+        {
+            this.dAttrib = dAttrib;
+        }
     }
 
 }

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/PersistenceBrokerTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/PersistenceBrokerTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/PersistenceBrokerTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/PersistenceBrokerTest.java Sat Jul 15 07:49:27 2006
@@ -19,6 +19,7 @@
 import org.apache.ojb.broker.query.QueryByCriteria;
 import org.apache.ojb.broker.query.QueryFactory;
 import org.apache.ojb.broker.query.ReportQueryByCriteria;
+import org.apache.ojb.broker.util.ObjectModification;
 import org.apache.ojb.junit.PBTestCase;
 
 /**
@@ -140,14 +141,16 @@
      public void testReadUncommitedDataWithinSamePB() throws Exception
     {
         String name = "testReadUncommitedDataWithinSamePB" + System.currentTimeMillis();
-        ObjectRepository.Component comp = new ObjectRepository.Component();
-        comp.setName(name);
 
         // make sure not to use batch mode
         broker.serviceBatchManager().setBatchMode(false);
+
+        ObjectRepository.Component comp = new ObjectRepository.Component();
+        comp.setName(name);
+
         broker.beginTransaction();
         // store data
-        broker.store(comp, OJB.INSERT);
+        broker.store(comp, ObjectModification.INSERT);
         Query query = QueryFactory.newQuery(ObjectRepository.Component.class, (Criteria) null);
         // now we try to read the uncommitted data
         Collection all = broker.getCollectionByQuery(query);
@@ -427,9 +430,9 @@
     /**
      * test the the PB deleteByQuery() method.
      */
-    public void testDeleteByQuery1() throws Exception
+    public void testDeleteByQuery() throws Exception
     {
-        String name = "Funny_testDelete1_" + System.currentTimeMillis();
+        String name = "Funny_testDelete_" + System.currentTimeMillis();
         ProductGroup pg;
         pg = new ProductGroup();
         pg.setGroupName(name);
@@ -438,6 +441,9 @@
         broker.store(pg);
         broker.commitTransaction();
 
+        // make sure not to use batch mode
+        broker.serviceBatchManager().setBatchMode(false);
+
         Article a = createArticle(pg, name);
         Article b = createArticle(pg, name);
         CdArticle c = createCdArticle(pg, name);
@@ -613,19 +619,19 @@
 
         // test retrieval by Identity
         Criteria crit = new Criteria();
-        crit.addEqualTo("id", new Integer(a1.id));
+        crit.addEqualTo("id", new Integer(a1.getId()));
         q = QueryFactory.newQuery(ObjectRepository.AB.class, crit);
         ab = (ObjectRepository.AB) broker.getObjectByQuery(q);
 
-        assertEquals(ObjectRepository.A.class.getName(), ab.getConcreteClass());
+        assertEquals(ObjectRepository.A.class.getName(), ab.getOjbConcreteClass());
         assertEquals(ObjectRepository.A.class, ab.getClass());
 
         crit = new Criteria();
-        crit.addEqualTo("id", new Integer(b1.id));
+        crit.addEqualTo("id", new Integer(b1.getId()));
         q = QueryFactory.newQuery(ObjectRepository.AB.class, crit);
         ab = (ObjectRepository.AB) broker.getObjectByQuery(q);
 
-        assertEquals(ObjectRepository.B.class.getName(), ab.getConcreteClass());
+        assertEquals(ObjectRepository.B.class.getName(), ab.getOjbConcreteClass());
         assertEquals(ObjectRepository.B.class, ab.getClass());
 
         // test retrieval of collections
@@ -869,12 +875,8 @@
         broker.commitTransaction();
 
         ObjectRepository.C c1 = new ObjectRepository.C();
-        // Identity iC1 = new Identity(c1, broker);
         ObjectRepository.C c2 = new ObjectRepository.C();
-        // Identity iC2 = new Identity(c2, broker);
-
         ObjectRepository.D d1 = new ObjectRepository.D();
-        // Identity iD1 = new Identity(d1, broker);
 
         broker.beginTransaction();
         broker.store(c1);
@@ -886,25 +888,25 @@
 
         // test retrieval by Identity
         crit = new Criteria();
-        crit.addEqualTo("id", new Integer(c1.id));
+        crit.addEqualTo("id", new Integer(c1.getId()));
         q = QueryFactory.newQuery(ObjectRepository.C.class, crit);
         candidate = (ObjectRepository.C) broker.getObjectByQuery(q);
 
-        assertEquals(ObjectRepository.C.class.getName(), candidate.getConcreteClass());
+        assertEquals(ObjectRepository.C.class.getName(), candidate.getOjbConcreteClass());
         assertEquals(ObjectRepository.C.class, candidate.getClass());
 
         crit = new Criteria();
-        crit.addEqualTo("id", new Integer(d1.id));
+        crit.addEqualTo("id", new Integer(d1.getId()));
         q = QueryFactory.newQuery(ObjectRepository.C.class, crit);
         candidate = (ObjectRepository.C) broker.getObjectByQuery(q);
-        assertEquals(ObjectRepository.D.class.getName(), candidate.getConcreteClass());
+        assertEquals(ObjectRepository.D.class.getName(), candidate.getOjbConcreteClass());
         assertEquals(ObjectRepository.D.class, candidate.getClass());
 
         crit = new Criteria();
-        crit.addEqualTo("id", new Integer(d1.id));
+        crit.addEqualTo("id", new Integer(d1.getId()));
         q = QueryFactory.newQuery(ObjectRepository.D.class, crit);
         candidate = (ObjectRepository.D) broker.getObjectByQuery(q);
-        assertEquals(ObjectRepository.D.class.getName(), candidate.getConcreteClass());
+        assertEquals(ObjectRepository.D.class.getName(), candidate.getOjbConcreteClass());
         assertEquals(ObjectRepository.D.class, candidate.getClass());
 
         // test retrieval of collections
@@ -1200,7 +1202,6 @@
 
     public void testSorting() throws Exception
     {
-        // 1. ensure there are 0 items matching the query
         String name = "testSorting_" + System.currentTimeMillis();
         Criteria criteria = new Criteria();
         criteria.addEqualTo("articleName", name);
@@ -1236,7 +1237,7 @@
         String name = "testSortedCollectionAttribute_" + System.currentTimeMillis();
         ProductGroup samplePG = new ProductGroup();
         Article a1_ = createArticle(samplePG, name);
-        createArticle(samplePG, name);
+        Article a2_ = createArticle(samplePG, name);
         Article a3_ = createArticle(samplePG, name);
         // auto insert of referenced Article is enabled
         // and aX_ was added to PG
@@ -1561,12 +1562,12 @@
     public void testUpdateWithModification() throws Exception
     {
         String name = "testUpdateWithModification_" + System.currentTimeMillis();
-        assertFalse("should not be marked for update yet", OJB.INSERT.needsUpdate());
-        assertFalse("should not be marked for insert", OJB.UPDATE.needsInsert());
+        assertFalse("should not be marked for update yet", ObjectModification.INSERT.needsUpdate());
+        assertFalse("should not be marked for insert", ObjectModification.UPDATE.needsInsert());
         Article a = createArticle(null, name);
 
         broker.beginTransaction();
-        broker.store(a, OJB.INSERT);
+        broker.store(a, ObjectModification.INSERT);
         broker.commitTransaction();
 
         Article b = readArticleByIdentity(a.getArticleId());
@@ -1577,7 +1578,7 @@
         String newname = "TESTUPDATE_" + name;
         b.setArticleName(newname);
         broker.beginTransaction();
-        broker.store(b, OJB.UPDATE);
+        broker.store(b, ObjectModification.UPDATE);
         broker.commitTransaction();
 
         b = null;
@@ -1609,6 +1610,9 @@
 
     public void testChangeFieldsWhileStoringObject()
     {
+        // guarantee that batch statements are disabled
+        broker.serviceBatchManager().setBatchMode(false);
+
         long timestamp = System.currentTimeMillis();
 
         broker.beginTransaction();

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/ProductGroupWithRemovalAwareCollection.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/ProductGroupWithRemovalAwareCollection.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/ProductGroupWithRemovalAwareCollection.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/ProductGroupWithRemovalAwareCollection.java Sat Jul 15 07:49:27 2006
@@ -11,6 +11,7 @@
  */
 public class ProductGroupWithRemovalAwareCollection implements Serializable
 {
+
     /** collection containing all articles of a given product group*/
     private RemovalAwareList allArticlesInGroup;
 
@@ -20,6 +21,9 @@
     /** the name of a group*/
     private String groupName;
 
+    public ProductGroupWithRemovalAwareCollection()
+    {
+    }
 
     /** return group id*/
     public int getId()
@@ -33,12 +37,8 @@
         return groupName;
     }
 
-    public ProductGroupWithRemovalAwareCollection()
-    {
-    }
-
     /** return List of all Articles in productgroup*/
-    public RemovalAwareList getAllArticles()
+    public RemovalAwareList getAllArticlesInGroup()
     {
         return allArticlesInGroup;
     }

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/ReferenceTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/ReferenceTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/ReferenceTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/ReferenceTest.java Sat Jul 15 07:49:27 2006
@@ -17,7 +17,6 @@
 /**
  * Test case for checking the management of references.
  *
- * @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
  * @version $Id$
  */
 public class ReferenceTest extends PBTestCase
@@ -709,6 +708,7 @@
 
         broker.beginTransaction();
         broker.store(a);
+        broker.store(b);
         broker.commitTransaction();
 
         broker.clearCache();

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/RsIteratorTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/RsIteratorTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/RsIteratorTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/RsIteratorTest.java Sat Jul 15 07:49:27 2006
@@ -2,12 +2,12 @@
 
 import java.util.Iterator;
 
-import org.apache.ojb.broker.accesslayer.RsIterator;
 import org.apache.ojb.broker.accesslayer.OJBIterator;
+import org.apache.ojb.broker.accesslayer.RsIterator;
 import org.apache.ojb.broker.query.Criteria;
 import org.apache.ojb.broker.query.Query;
-import org.apache.ojb.broker.query.QueryByCriteria;
 import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.broker.util.ObjectModification;
 import org.apache.ojb.junit.PBTestCase;
 
 /**
@@ -29,6 +29,82 @@
         super(name);
     }
 
+    public void setUp() throws Exception
+    {
+        super.setUp();
+    }
+
+    public void tearDown() throws Exception
+    {
+        super.tearDown();
+    }
+
+    /**
+     * This test provoke resource cleanup by GC, which remove
+     * listener objects.
+     */
+    public void testMassReadWithIterator()
+    {
+        long time = System.currentTimeMillis();
+        String name = "testMassReadWithIterator_" + time + "_";
+
+        for(int k = 0; k < 10 ; k++)
+        {
+            broker.beginTransaction();
+            for(int i = 0; i < 500; i++)
+            {
+                ObjectRepository.Component r = new ObjectRepository.Component();
+                r.setName(name + i);
+                broker.store(r);
+            }
+            broker.commitTransaction();
+
+            //long timer = System.currentTimeMillis();
+            broker.beginTransaction();
+            for(int i = 0; i < 400; i++)
+            {
+                Query q = QueryFactory.newQuery(ObjectRepository.Component.class, new Criteria().addLike("name", name));
+                Iterator result = broker.getIteratorByQuery(q);
+                if(result.hasNext())
+                {
+                    ObjectRepository.Component o = (ObjectRepository.Component) result.next();
+                    o.setName(o.getName() + "_update");
+                    broker.store(o, ObjectModification.UPDATE);
+                }
+            }
+            broker.commitTransaction();
+
+            broker.beginTransaction();
+            for(int i = 0; i < 400; i++)
+            {
+                PersistenceBroker tmp = PersistenceBrokerFactory.defaultPersistenceBroker();
+                Iterator result;
+                try
+                {
+                    Query q = QueryFactory.newQuery(ObjectRepository.Component.class, new Criteria().addLike("name", name));
+                    result = tmp.getIteratorByQuery(q);
+                    if(result.hasNext())
+                    {
+                        ObjectRepository.Component o = (ObjectRepository.Component) result.next();
+                        o.setName(o.getName() + "_update");
+                        broker.store(o, ObjectModification.UPDATE);
+                    }
+                }
+                finally
+                {
+                    if(tmp != null && !tmp.isClosed()) tmp.close();
+                }
+            }
+            broker.commitTransaction();
+            //System.out.println("time: " + (System.currentTimeMillis() - timer));
+
+            broker.beginTransaction();
+            Query q = QueryFactory.newQuery(ObjectRepository.Component.class, new Criteria().addLike("name", name + "%"));
+            broker.deleteByQuery(q);
+            broker.commitTransaction();
+        }
+    }
+
     public void testRsIterator() throws Exception
     {
         String name = "testRsIterator_" + System.currentTimeMillis();
@@ -261,7 +337,7 @@
 
         try
         {
-            ((RsIterator) it).relative(1);
+            it.relative(1);
         }
         catch(RsIterator.ResourceClosedException e)
         {
@@ -302,12 +378,7 @@
         Query query = QueryFactory.newQuery(Person.class, criteria);
         // Run the query.
         Person person = (Person) broker.getObjectByQuery(query);
-        // The previous call may or may not return a 'real' Person
-        // object.  What it returns is not important.  The test here
-        // is whether or not this call raises an error or not.  When
-        // this code runs using hsqldb, it works fine.  However, when
-        // this code runs against Oracle, it fails with a null pointer
-        // exception.
+        assertNotNull("Person with id 1 was not found", person);
     }
-}
 
+}

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/StockDetailNested.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/StockDetailNested.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/StockDetailNested.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/StockDetailNested.java Sat Jul 15 07:49:27 2006
@@ -8,7 +8,7 @@
  */
 public class StockDetailNested implements java.io.Serializable
 {
-    private boolean isSelloutArticle;
+    private boolean selloutArticle;
     private int minimumStock;
     private int orderedUnits;
     private int stock;
@@ -20,12 +20,12 @@
 
     public boolean isSelloutArticle()
     {
-        return isSelloutArticle;
+        return selloutArticle;
     }
 
     public void setSelloutArticle(boolean selloutArticle)
     {
-        isSelloutArticle = selloutArticle;
+        this.selloutArticle = selloutArticle;
     }
 
     public int getMinimumStock()

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/AutoIncrementTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/AutoIncrementTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/AutoIncrementTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/AutoIncrementTest.java Sat Jul 15 07:49:27 2006
@@ -34,7 +34,7 @@
         assertTrue(obj_2.getIntegerId().intValue() > 0);
         assertTrue((new Integer(obj_2.getStr())).intValue() > 0);
 
-        Identity oid = new Identity(obj_2, broker);
+        Identity oid = broker.serviceIdentity().buildIdentity(obj_2);
         IncrementObject newObj_2 = (IncrementObject) broker.getObjectByIdentity(oid);
         broker.beginTransaction();
         broker.store(obj_1);

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/NativeIdentifierTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/NativeIdentifierTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/NativeIdentifierTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/NativeIdentifierTest.java Sat Jul 15 07:49:27 2006
@@ -23,7 +23,6 @@
 import org.apache.ojb.broker.query.QueryFactory;
 import org.apache.ojb.broker.util.sequence.SequenceManagerNativeImpl;
 import org.apache.ojb.junit.PBTestCase;
-import org.apache.ojb.odmg.OJB;
 import org.apache.ojb.odmg.TransactionExt;
 import org.odmg.Database;
 import org.odmg.Implementation;
@@ -214,11 +213,7 @@
 
     public void tearDown() throws Exception
     {
-        if (skipTest())
-        {
-            super.tearDown();
-            return;
-        }
+        if (skipTest()) return;
 
         Connection con;
         Statement stmt;
@@ -256,17 +251,24 @@
         }
         finally
         {
-            if (pb != null) pb.close();
+            if (pb != null)
+            {
+                pb.clearCache();
+                pb.close();
+            }
         }
 
-
+        // close the broker instance, because we want to release all used instance
+        if(broker != null) broker.close();
+        
+        persistenceConf.releaseAllInstances();
+        broker = persistenceConf.createPersistenceBroker();
         SequenceDescriptor sd = ojb.getMetadataManager().connectionRepository().
                 getDescriptor(broker.getPBKey()).getSequenceDescriptor();
         assertEquals(oldSequenceManager, sd.getSequenceManagerClass());
-
         // close the broker instance, because we want to release all used instance
         if(broker != null) broker.close();
-        persistenceConf.releaseAllInstances();
+
         super.tearDown();
     }
 
@@ -452,8 +454,8 @@
         assertTrue(ref_3.getRefIdentifier().longValue() > 0);
 
         // get Identity objects
-        Identity oid_1 = new Identity(obj_1, broker);
-        Identity oid_2 = new Identity(obj_2, broker);
+        Identity oid_1 = broker.serviceIdentity().buildIdentity(obj_1);
+        Identity oid_2 = broker.serviceIdentity().buildIdentity(obj_2);
         // get identifier (PK) values
         Long id_1 = obj_1.getIdentifier();
         Long id_2 = obj_2.getIdentifier();
@@ -690,6 +692,7 @@
         obj_2.setName(name+"_update");
         tx.commit();
 
+        broker.close();
         broker = ojb.getDefaultConfiguration().createPersistenceBroker();
         obj_2 = (MainObject) broker.getObjectByIdentity(oid_2);
         broker.close();
@@ -806,8 +809,8 @@
         assertTrue("The assigned FK should be > 0 after store of main object, but was " + fk.longValue(), fk.longValue() > 0);
 
         // get Identity objects
-        Identity oid_1 = new Identity(obj_1, broker);
-        Identity oid_2 = new Identity(obj_2, broker);
+        Identity oid_1 = broker.serviceIdentity().buildIdentity(obj_1);
+        Identity oid_2 = broker.serviceIdentity().buildIdentity(obj_2);
         // get identifier (PK) values
         Long id_1 = obj_1.getIdentifier();
         Long id_2 = obj_2.getIdentifier();
@@ -986,7 +989,7 @@
         broker.beginTransaction();
         broker.store(obj_1);
         broker.commitTransaction();
-        Identity oid_1 = new Identity(obj_1, broker);
+        Identity oid_1 = broker.serviceIdentity().buildIdentity(obj_1);
 
         MainObject result = (MainObject) broker.getObjectByIdentity(oid_1);
         assertNotNull(result);
@@ -1062,7 +1065,8 @@
         broker.store(obj_1);
         // System.out.println("8. "+obj_1);
         broker.commitTransaction();
-        Identity oid_1 = new Identity(obj_1, broker);
+        Identity oid_1 = broker.serviceIdentity().buildIdentity(obj_1);
+        //Identity oid_1 = new Identity(obj_1, broker);
 
         MainObject result = (MainObject) broker.getObjectByIdentity(oid_1);
         assertNotNull(result);
@@ -1200,8 +1204,9 @@
         public String toString()
         {
             return new ToStringBuilder(this).append("identifier", identifier).append("name", name)
-                    .append("allReferences", allReferences != null ? allReferences.toString() : "null")
-                    .append("singleReference", singleReference.getClass().toString()).toString();
+                    .append("allReferences", (allReferences != null ? allReferences.toString() : "null"))
+                    .append("singleReference", (singleReference != null ? singleReference.getClass().toString(): "null"))
+                    .toString();
         }
     }
 
@@ -1234,6 +1239,16 @@
             // id = new Long((long)(Math.random() * Integer.MAX_VALUE));
         }
 
+        public String getOjbConcreteClass()
+        {
+            return ojbConcreteClass;
+        }
+
+        public void setOjbConcreteClass(String ojbConcreteClass)
+        {
+            this.ojbConcreteClass = ojbConcreteClass;
+        }
+
         public MainObjectIF getMainObject()
         {
             return mainObject;
@@ -1301,6 +1316,16 @@
             this();
             this.refIdentifier = refIdentifier;
             this.refName = refName;
+        }
+
+        public String getOjbConcreteClass()
+        {
+            return ojbConcreteClass;
+        }
+
+        public void setOjbConcreteClass(String ojbConcreteClass)
+        {
+            this.ojbConcreteClass = ojbConcreteClass;
         }
 
         public Long getRefIdentifier()

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/SequenceManagerTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/SequenceManagerTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/SequenceManagerTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/sequence/SequenceManagerTest.java Sat Jul 15 07:49:27 2006
@@ -93,7 +93,7 @@
     protected void setUp() throws Exception
     {
         super.setUp();
-                }
+    }
 
     protected void tearDown() throws Exception
     {
@@ -507,6 +507,7 @@
         assertTrue(id2 > id1);
         assertTrue("If the sequence manger implementation does not support continuous key generation" +
                 " per PB instance, you could ignore this failure", (id2 - id1) == 1);
+        pb.close();
     }
 
     /**
@@ -731,6 +732,7 @@
     protected static synchronized void addResultList(List resultList)
     {
         System.out.println(" add " + resultList.size() + "generated Keys");
+        if (resultList == null) return;
         generatedKeys.addAll(resultList);
     }
 

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/CollectionCountTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/CollectionCountTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/CollectionCountTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/CollectionCountTest.java Sat Jul 15 07:49:27 2006
@@ -24,7 +24,7 @@
 import org.apache.ojb.broker.query.Query;
 import org.apache.ojb.broker.query.QueryByCriteria;
 import org.apache.ojb.broker.query.QueryFactory;
-import org.apache.ojb.broker.util.ObjectModificationDefaultImpl;
+import org.apache.ojb.broker.util.ObjectModification;
 
 /**
  * @author <a href="mailto:om@ppi.de">Oliver Matz</a>
@@ -85,7 +85,7 @@
     myPB.clearCache();
     myPB.beginTransaction();
     ProductGroup pg =
-            (ProductGroup)myPB.getObjectByIdentity(new Identity(null, ProductGroup.class, new Object[] {new Integer(5)}));
+            (ProductGroup)myPB.getObjectByIdentity(myPB.serviceIdentity().buildIdentity(null, ProductGroup.class, new Object[] {new Integer(5)}));
     assertStmtCount("getObjectByIdentity", 4);
     resetStmtCount();
     List articles = pg.getAllArticles();
@@ -131,7 +131,7 @@
     logStmtCount("Storing first person");  // 6. oma: why so many? double lookup in OJB_HL_SEQ !
     resetStmtCount();
     pers = new Person();
-    myPB.store(pers, ObjectModificationDefaultImpl.INSERT);
+    myPB.store(pers, ObjectModification.INSERT);
     myPB.commitTransaction();
     // INSERT INTO PERSON (ID,FIRSTNAME,LASTNAME) VALUES ('172','','')
     // commit
@@ -162,7 +162,7 @@
     proj2.setTitle("proj2");
     Collection projects = Arrays.asList(new Project[] {proj2});
     pers.setProjects(projects);
-    myPB.store(pers, ObjectModificationDefaultImpl.INSERT);
+    myPB.store(pers, ObjectModification.INSERT);
     myPB.commitTransaction();
     // INSERT INTO PERSON (ID,FIRSTNAME,LASTNAME) VALUES ('292','','')
     // SELECT TITLE,DESCRIPTION,ID FROM PROJECT WHERE ID = '88'

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/EmptyCacheCountTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/EmptyCacheCountTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/EmptyCacheCountTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/EmptyCacheCountTest.java Sat Jul 15 07:49:27 2006
@@ -33,7 +33,7 @@
     super.setUp();
     myPB = ojb.lookupBroker();
     //old_CacheFilter = getConfig().getCacheFilters();
-    // old_ObjectCache = ObjectCacheFactory.getInstance().getClassToServe();
+    //old_ObjectCache = ObjectCacheFactory.getInstance().getClassToServe();
   }
 
   /**
@@ -43,7 +43,7 @@
   protected void tearDown() throws Exception
   {
     //getConfig().setCacheFilters(old_CacheFilter);
-    // ObjectCacheFactory.getInstance().setClassToServe(old_ObjectCache);
+    //ObjectCacheFactory.getInstance().setClassToServe(old_ObjectCache);
     super.tearDown();
   }
 
@@ -55,7 +55,7 @@
     resetStmtCount();
     myPB.clearCache();
     myPB.beginTransaction();
-    Identity id = new Identity(null, InterfaceArticle.class, new Object[] {new Integer(200)});
+    Identity id = myPB.serviceIdentity().buildIdentity(null, InterfaceArticle.class, new Object[] {new Integer(200)});
     logger.info(id.toString());
     assertNull(id.getObjectsRealClass());
     myPB.getObjectByIdentity(id);

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/SimpleCountTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/SimpleCountTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/SimpleCountTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/SimpleCountTest.java Sat Jul 15 07:49:27 2006
@@ -26,7 +26,7 @@
     Person a = new Person();
     a.setFirstname("A");
     myPB.store(a);
-    aId = new Identity(a, myPB);
+    aId = myPB.serviceIdentity().buildIdentity(a);
     myPB.commitTransaction();
     logStmtCount("Wrote test data");
   }

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/TwoLevelSimpleTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/TwoLevelSimpleTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/TwoLevelSimpleTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/sqlcount/TwoLevelSimpleTest.java Sat Jul 15 07:49:27 2006
@@ -41,7 +41,7 @@
     protected void tearDown() throws Exception
     {
         //getConfig().setCacheFilters(old_CacheFilter);
-        // ObjectCacheFactory.getInstance().setClassToServe(old_ObjectCache);
+        //ObjectCacheFactory.getInstance().setClassToServe(old_ObjectCache);
         super.tearDown();
     }
 
@@ -58,7 +58,7 @@
         resetStmtCount();
         pb0.clearCache();
         pb0.beginTransaction();
-        Identity id = new Identity(null, CloneableGroup.class, new Object[]{new Integer(1)});
+        Identity id = pb0.serviceIdentity().buildIdentity(null, CloneableGroup.class, new Object[] {new Integer(1)});
         logger.info(id.toString());
         assertNull(id.getObjectsRealClass());
         Object group0 = pb0.getObjectByIdentity(id);

Modified: db/ojb/trunk/src/test/org/apache/ojb/compare/OJBPerfTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/compare/OJBPerfTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/compare/OJBPerfTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/compare/OJBPerfTest.java Sat Jul 15 07:49:27 2006
@@ -6,15 +6,18 @@
 import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Iterator;
 import java.util.List;
 
 import org.apache.ojb.broker.Identity;
 import org.apache.ojb.broker.PersistenceBroker;
 import org.apache.ojb.broker.TestHelper;
-import org.apache.ojb.broker.accesslayer.ConnectionFactory;
 import org.apache.ojb.broker.accesslayer.LookupException;
 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.broker.util.ObjectModification;
+import org.apache.ojb.odmg.OJB;
 import org.apache.ojb.odmg.TransactionExt;
 import org.apache.ojb.otm.OTMConnection;
 import org.apache.ojb.otm.OTMKit;
@@ -22,7 +25,6 @@
 import org.apache.ojb.otm.lock.LockType;
 import org.apache.ojb.performance.PerfArticle;
 import org.apache.ojb.performance.PerfArticleImpl;
-import org.apache.ojb.performance.PerfHandle;
 import org.apache.ojb.performance.PerfTest;
 import org.odmg.Database;
 import org.odmg.Implementation;
@@ -33,9 +35,8 @@
 /**
  * Multi-threaded performance test implementation classes for testing
  * the PB-api, ODMG-api of OJB against native JDBC using
- * the performance-package test classes from <code>org.apache.ojb.performance</code>.
+ * the performance-package test classes.
  *
- * @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
  * @version $Id$
  */
 public class OJBPerfTest
@@ -43,25 +44,40 @@
     static org.apache.ojb.broker.OJB ojbInstance = new org.apache.ojb.broker.OJB();
 
     // =====================================================================================
-    // Inner class, test base class using native JDBC
+    // Inner class, test handle using native JDBC
     // =====================================================================================
     public static class JdbcPerfTest extends PerfTest
     {
         private static final String TABLE_NAME = "PERF_ARTICLE";
-        private static ConnectionFactory conFac = ojbInstance.getDefaultConfiguration().getConnectionFactory();
+        // cast to int to avoid problems with DB field length
+        public static volatile int counter = (int) System.currentTimeMillis();
+        private PersistenceBroker broker;
 
-        public JdbcPerfTest()
+        public synchronized static Long nextKey()
         {
+            return new Long(++counter);
         }
 
-        public String testName()
+        public void init() throws Exception
         {
-            return "JDBC";
+            if(broker == null)
+            {
+                broker = ojbInstance.lookupBroker();
+            }
+        }
+
+        public void tearDown() throws Exception
+        {
+            if(broker != null)
+            {
+                broker.close();
+                broker = null;
+            }
         }
 
-        public PerfHandle newPerfHandle(PerfTest test)
+        public String testName()
         {
-            return new JdbcPerfHandle(test);
+            return "JDBC";
         }
 
         public int articleCount()
@@ -77,71 +93,32 @@
                 result = rs.getInt(1);
                 rs.close();
                 stmt.close();
-                releaseConnection(con);
+                releaseConnection();
             }
-            catch (Exception e)
+            catch(Exception e)
             {
                 e.printStackTrace();
             }
             return result;
         }
 
-        private Connection getConnection() throws LookupException
-        {
-            return conFac.lookupConnection();
-        }
-
-        private void releaseConnection(Connection con)
-        {
-            conFac.releaseConnection(con);
-        }
-    }
-
-    // =====================================================================================
-    // Inner class, test handle using native JDBC
-    // =====================================================================================
-    public static class JdbcPerfHandle extends PerfHandle
-    {
-        private static final String TABLE_NAME = "PERF_ARTICLE";
-        private PersistenceBroker broker;
-
-
-        public JdbcPerfHandle(PerfTest test)
-        {
-            super(test);
-        }
-
-        public void init() throws Exception
-        {
-            if (broker == null)
-            {
-                broker = ojbInstance.lookupBroker();
-            }
-        }
-
-        public void tearDown() throws Exception
-        {
-            if (broker != null)
-            {
-                broker.close();
-            }
-        }
-
         public void insertNewArticles(PerfArticle[] arr) throws Exception
         {
             StringBuffer buf = new StringBuffer();
             buf.append("INSERT INTO ").append(TABLE_NAME);
             buf.append(" (ARTICLE_ID, ARTICLE_NAME, MINIMUM_STOCK, PRICE, UNIT, STOCK, SUPPLIER_ID)");
             buf.append(" VALUES (?,?,?,?,?,?,?)");
+            // lookup the connection (using OJB's con pooling support to make the test more fair)
             Connection con = getConnection();
             con.setAutoCommit(false);
-            PreparedStatement stmt = con.prepareStatement(buf.toString());
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
+                // OJB doesn't use a PS-pool (normally the JDBC driver supports statement pooling)
+                // thus to make this test more fair lookup a new PS for each object
+                PreparedStatement stmt = con.prepareStatement(buf.toString());
                 PerfArticle article = arr[i];
-                // use Identity to set pk field value
-                broker.serviceIdentity().buildIdentity(article);
-
+                // generate PK value
+                article.setArticleId(nextKey());
                 stmt.setLong(1, article.getArticleId().longValue());
                 stmt.setString(2, article.getArticleName());
                 stmt.setInt(3, article.getMinimumStock());
@@ -150,10 +127,10 @@
                 stmt.setInt(6, article.getStock());
                 stmt.setInt(7, article.getSupplierId());
                 stmt.executeUpdate();
+                stmt.close();
             }
             con.commit();
             con.setAutoCommit(true);
-            stmt.close();
             releaseConnection();
         }
 
@@ -169,7 +146,7 @@
             Statement stmt = con.createStatement();
             ResultSet rs = stmt.executeQuery(sql);
             ArrayList list = new ArrayList();
-            while (rs.next())
+            while(rs.next())
             {
                 PerfArticle article = new PerfArticleImpl();
                 article.setArticleId(new Long(rs.getLong("ARTICLE_ID")));
@@ -187,6 +164,30 @@
             return list;
         }
 
+        public PerfArticle getArticleByIdentity(Long articleId) throws Exception
+        {
+            String sql = "SELECT * FROM " + TABLE_NAME + " WHERE ARTICLE_ID=" + articleId.longValue() + "";
+            Connection con = getConnection();
+            Statement stmt = con.createStatement();
+            ResultSet rs = stmt.executeQuery(sql);
+            PerfArticle result = null;
+            while(rs.next())
+            {
+                result = new PerfArticleImpl();
+                result.setArticleId(new Long(rs.getLong("ARTICLE_ID")));
+                result.setArticleName(rs.getString("ARTICLE_NAME"));
+                result.setMinimumStock(rs.getInt("MINIMUM_STOCK"));
+                result.setPrice(rs.getDouble("PRICE"));
+                result.setUnit(rs.getString("UNIT"));
+                result.setStock(rs.getInt("STOCK"));
+                result.setSupplierId(rs.getInt("SUPPLIER_ID"));
+            }
+            rs.close();
+            stmt.close();
+            releaseConnection();
+            return result;
+        }
+
         public void updateArticles(PerfArticle[] arr) throws Exception
         {
             // we don't know which field is to update, thus do do all
@@ -196,9 +197,11 @@
             buf.append(" WHERE ARTICLE_ID = ?");
             Connection con = getConnection();
             con.setAutoCommit(false);
-            PreparedStatement stmt = con.prepareStatement(buf.toString());
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
+                // OJB doesn't use a PS-pool (normally the JDBC driver supports statement pooling)
+                // thus to make this test more fair lookup a new PS for each object
+                PreparedStatement stmt = con.prepareStatement(buf.toString());
                 PerfArticle article = arr[i];
                 stmt.setString(1, article.getArticleName());
                 stmt.setInt(2, article.getMinimumStock());
@@ -208,10 +211,10 @@
                 stmt.setInt(6, article.getSupplierId());
                 stmt.setLong(7, article.getArticleId().longValue());
                 stmt.executeUpdate();
+                stmt.close();
             }
             con.commit();
             con.setAutoCommit(true);
-            stmt.close();
             releaseConnection();
         }
 
@@ -225,16 +228,18 @@
             String sql = "DELETE FROM " + TABLE_NAME + " WHERE ARTICLE_ID = ?";
             Connection con = getConnection();
             con.setAutoCommit(false);
-            PreparedStatement stmt = con.prepareStatement(sql);
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
+                // OJB doesn't use a PS-pool (normally the JDBC driver supports statement pooling)
+                // thus to make this test more fair lookup a new PS for each object
+                PreparedStatement stmt = con.prepareStatement(sql);
                 PerfArticle article = arr[i];
                 stmt.setLong(1, article.getArticleId().longValue());
                 stmt.execute();
+                stmt.close();
             }
             con.commit();
             con.setAutoCommit(true);
-            stmt.close();
             releaseConnection();
         }
 
@@ -245,8 +250,6 @@
 
         private Connection getConnection() throws LookupException
         {
-            // don't let OJB handle batching
-            broker.serviceBatchManager().setBatchMode(false);
             return broker.serviceConnectionManager().getConnection();
         }
 
@@ -256,28 +259,29 @@
         }
     }
 
+
     // =====================================================================================
-    // Inner class, test base class using PB-api
+    // Inner class, test handle using PB-api
     // =====================================================================================
     public static class PBPerfTest extends PerfTest
     {
-        public PBPerfTest()
+        public void init() throws Exception
         {
         }
 
-        public String testName()
+        public void tearDown() throws Exception
         {
-            return "PB";
         }
 
-        public PerfHandle newPerfHandle(PerfTest test)
+        public String testName()
         {
-            return new PBPerfHandle(test);
+            return "PB";
         }
 
         public int articleCount()
         {
-            Query q = ojbInstance.getQueryFactory().newQuery(PerfArticleImpl.class, new Criteria());
+            Criteria c = new Criteria();
+            Query q = QueryFactory.newQuery(PerfArticleImpl.class, c);
             int count = 0;
             try
             {
@@ -285,34 +289,12 @@
                 count = broker.getCount(q);
                 broker.close();
             }
-            catch (Exception e)
+            catch(Exception e)
             {
                 e.printStackTrace();
             }
             return count;
         }
-    }
-
-    // =====================================================================================
-    // Inner class, test handle using PB-api
-    // =====================================================================================
-    public static class PBPerfHandle extends PerfHandle
-    {
-        public PBPerfHandle(PerfTest test)
-        {
-            super(test);
-        }
-
-        public void init() throws Exception
-        {
-            PersistenceBroker broker = ojbInstance.lookupBroker();
-            broker.clearCache();
-            broker.close();
-        }
-
-        public void tearDown() throws Exception
-        {
-        }
 
         /**
          * A resource cumbering insert-method implementation,
@@ -320,7 +302,7 @@
          */
         public void insertNewArticlesStress(PerfArticle[] arr) throws Exception
         {
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 PersistenceBroker broker = null;
                 try
@@ -330,13 +312,9 @@
                     broker.store(arr[i]);
                     broker.commitTransaction();
                 }
-                catch(Exception e)
-                {
-                    if (broker != null) broker.abortTransaction();
-                }
                 finally
                 {
-                    if (broker != null) broker.close();
+                    if(broker != null) broker.close();
                 }
             }
         }
@@ -353,19 +331,15 @@
                 broker = ojbInstance.lookupBroker();
                 broker.serviceBatchManager().setBatchMode(true);
                 broker.beginTransaction();
-                for (int i = 0; i < arr.length; i++)
+                for(int i = 0; i < arr.length; i++)
                 {
-                    broker.store(arr[i], org.apache.ojb.broker.OJB.INSERT);
+                    broker.store(arr[i], ObjectModification.INSERT);
                 }
                 broker.commitTransaction();
             }
-            catch(Exception e)
-            {
-                if (broker != null) broker.abortTransaction();
-            }
             finally
             {
-                if (broker != null) broker.close();
+                if(broker != null) broker.close();
             }
         }
 
@@ -373,7 +347,7 @@
         {
             Criteria c = new Criteria();
             c.addLike("articleName", articleName);
-            Query q = ojbInstance.getQueryFactory().newQuery(PerfArticleImpl.class, c);
+            Query q = QueryFactory.newQuery(PerfArticleImpl.class, c);
 
             Collection col = null;
             PersistenceBroker broker = null;
@@ -384,11 +358,25 @@
             }
             finally
             {
-                if (broker != null) broker.close();
+                if(broker != null) broker.close();
             }
             return col;
         }
 
+        public PerfArticle getArticleByIdentity(Long articleId) throws Exception
+        {
+            PersistenceBroker broker = null;
+            try
+            {
+                broker = ojbInstance.lookupBroker();
+                return (PerfArticle) broker.getObjectByIdentity(broker.serviceIdentity().buildIdentity(PerfArticleImpl.class, articleId));
+            }
+            finally
+            {
+                if(broker != null) broker.close();
+            }
+        }
+
         public void updateArticles(PerfArticle[] arr) throws Exception
         {
             PersistenceBroker broker = null;
@@ -397,26 +385,22 @@
                 broker = ojbInstance.lookupBroker();
                 broker.serviceBatchManager().setBatchMode(true);
                 broker.beginTransaction();
-                for (int i = 0; i < arr.length; i++)
+                for(int i = 0; i < arr.length; i++)
                 {
-                    broker.store(arr[i], org.apache.ojb.broker.OJB.UPDATE);
+                    broker.store(arr[i], ObjectModification.UPDATE);
                     // broker.store(arr[i]);
                 }
                 broker.commitTransaction();
             }
-            catch(Exception e)
-            {
-                if (broker != null) broker.abortTransaction();
-            }
             finally
             {
-                if (broker != null) broker.close();
+                if(broker != null) broker.close();
             }
         }
 
         public void updateArticlesStress(PerfArticle[] arr) throws Exception
         {
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 PersistenceBroker broker = null;
                 try
@@ -426,13 +410,9 @@
                     broker.store(arr[i]);
                     broker.commitTransaction();
                 }
-                catch(Exception e)
-                {
-                    if (broker != null) broker.abortTransaction();
-                }
                 finally
                 {
-                    if (broker != null) broker.close();
+                    if(broker != null) broker.close();
                 }
             }
         }
@@ -443,7 +423,7 @@
          */
         public void deleteArticlesStress(PerfArticle[] arr) throws Exception
         {
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 PersistenceBroker broker = null;
                 try
@@ -453,13 +433,9 @@
                     broker.delete(arr[i]);
                     broker.commitTransaction();
                 }
-                catch(Exception e)
-                {
-                    if (broker != null) broker.abortTransaction();
-                }
                 finally
                 {
-                    if (broker != null) broker.close();
+                    if(broker != null) broker.close();
                 }
             }
         }
@@ -475,46 +451,61 @@
             {
                 broker.serviceBatchManager().setBatchMode(true);
                 broker.beginTransaction();
-                for (int i = 0; i < arr.length; i++)
+                for(int i = 0; i < arr.length; i++)
                 {
                     broker.delete(arr[i]);
                 }
                 broker.commitTransaction();
             }
-            catch(Exception e)
-            {
-                if (broker != null) broker.abortTransaction();
-            }
             finally
             {
-                if (broker != null) broker.close();
+                if(broker != null) broker.close();
             }
         }
     }
 
+
     // =====================================================================================
-    // Inner class, test base class using ODMG-api
+    // Inner class, test handle using ODMG-api
     // =====================================================================================
     public static class ODMGPerfTest extends PerfTest
     {
-        public ODMGPerfTest()
+        private static Implementation odmg;
+        private static Database db;
+        static
+        {
+            try
+            {
+                odmg = OJB.getInstance();
+                db = odmg.newDatabase();
+                db.open(TestHelper.DEF_DATABASE_NAME, Database.OPEN_READ_WRITE);
+            }
+            catch(ODMGException e)
+            {
+                e.printStackTrace();
+            }
+        }
+        private TransactionExt m_tx;
+
+        public void init()
         {
+            m_tx = (TransactionExt) odmg.newTransaction();
         }
 
-        public String testName()
+        public void tearDown() throws Exception
         {
-            return "ODMG";
+            if(m_tx.isOpen()) m_tx.abort();
         }
 
-        public PerfHandle newPerfHandle(PerfTest test)
+        public String testName()
         {
-            return new ODMGPerfHandle(test);
+            return "ODMG";
         }
 
         public int articleCount()
         {
             Criteria c = new Criteria();
-            Query q = ojbInstance.getQueryFactory().newQuery(PerfArticleImpl.class, c);
+            Query q = QueryFactory.newQuery(PerfArticleImpl.class, c);
             int count = 0;
             try
             {
@@ -522,48 +513,12 @@
                 count = broker.getCount(q);
                 broker.close();
             }
-            catch (Exception e)
+            catch(Exception e)
             {
                 e.printStackTrace();
             }
             return count;
         }
-    }
-
-    // =====================================================================================
-    // Inner class, test handle using ODMG-api
-    // =====================================================================================
-    public static class ODMGPerfHandle extends PerfHandle
-    {
-        private Implementation odmg;
-        private Database db;
-        private TransactionExt m_tx;
-
-        public ODMGPerfHandle(PerfTest test)
-        {
-            super(test);
-        }
-
-        public void init()
-        {
-            try
-            {
-                odmg = ojbInstance.instanceODMG();
-                db = odmg.newDatabase();
-                db.open(TestHelper.DEF_DATABASE_NAME, Database.OPEN_READ_WRITE);
-                m_tx = (TransactionExt) odmg.newTransaction();
-            }
-            catch (ODMGException e)
-            {
-                e.printStackTrace();
-            }
-        }
-
-        public void tearDown() throws Exception
-        {
-            if (m_tx.isOpen()) m_tx.abort();
-            db.close();
-        }
 
         /**
          * A performance optimized insert-method implementation,
@@ -572,7 +527,7 @@
         public void insertNewArticles(PerfArticle[] arr) throws Exception
         {
             m_tx.begin();
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 db.makePersistent(arr[i]);
             }
@@ -585,7 +540,7 @@
          */
         public void insertNewArticlesStress(PerfArticle[] arr) throws Exception
         {
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 Transaction tx = odmg.newTransaction();
                 tx.begin();
@@ -608,10 +563,32 @@
             return allProducts;
         }
 
+        public PerfArticle getArticleByIdentity(Long articleId) throws Exception
+        {
+//            m_tx.setImplicitLocking(false);
+//            m_tx.begin();
+//            OQLQuery query = odmg.newOQLQuery();
+//            String sql = "select allArticles from " + PerfArticleImpl.class.getName() +
+//                    " where articleId=$";
+//            query.create(sql);
+//            query.bind(articleId);
+//            List result = (List) query.execute();
+//            m_tx.commit();
+//            return (PerfArticle) result.get(0);
+// use OJB's extension for faster Identity lookup
+            PerfArticle result;
+            m_tx.setImplicitLocking(false);
+            m_tx.begin();
+            PersistenceBroker pb = m_tx.getBroker();
+            result = (PerfArticle) pb.getObjectByIdentity(pb.serviceIdentity().buildIdentity(PerfArticleImpl.class, articleId));
+            m_tx.commit();
+            return result;
+        }
+
         public void updateArticles(PerfArticle[] arr) throws Exception
         {
             m_tx.begin();
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 m_tx.lock(arr[i], Transaction.WRITE);
                 m_tx.markDirty(arr[i]);
@@ -621,7 +598,7 @@
 
         public void updateArticlesStress(PerfArticle[] arr) throws Exception
         {
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 Transaction tx = odmg.newTransaction();
                 tx.begin();
@@ -638,7 +615,7 @@
         public void deleteArticles(PerfArticle[] arr) throws Exception
         {
             m_tx.begin();
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 db.deletePersistent(arr[i]);
             }
@@ -651,7 +628,7 @@
          */
         public void deleteArticlesStress(PerfArticle[] arr) throws Exception
         {
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 Transaction tx = odmg.newTransaction();
                 tx.begin();
@@ -662,29 +639,40 @@
     }
 
     // =====================================================================================
-    // Inner class, test base class using OTM-api
+    // Inner class, test handle using OTM-api
     // =====================================================================================
     public static class OTMPerfTest extends PerfTest
     {
+        private OTMKit _kit;
+
+        private OTMConnection _conn;
+
+        private org.apache.ojb.otm.core.Transaction _tx;
 
-        public OTMPerfTest()
+        public void init()
         {
+            _kit = SimpleKit.getInstance();
+            _conn = _kit.acquireConnection(ojbInstance.getDefaultConfiguration());
         }
 
-        public String testName()
+        public void tearDown() throws Exception
         {
-            return "OTM";
+            if((_tx != null) && _tx.isInProgress())
+            {
+                _tx.rollback();
+            }
+            _conn.close();
         }
 
-        public PerfHandle newPerfHandle(PerfTest test)
+        public String testName()
         {
-            return new OTMPerfHandle(test);
+            return "OTM";
         }
 
         public int articleCount()
         {
             Criteria c = new Criteria();
-            Query q = ojbInstance.getQueryFactory().newQuery(PerfArticleImpl.class, c);
+            Query q = QueryFactory.newQuery(PerfArticleImpl.class, c);
             int count = 0;
             try
             {
@@ -692,45 +680,12 @@
                 count = broker.getCount(q);
                 broker.close();
             }
-            catch (Exception e)
+            catch(Exception e)
             {
                 e.printStackTrace();
             }
             return count;
         }
-    }
-
-    // =====================================================================================
-    // Inner class, test handle using OTM-api
-    // =====================================================================================
-    public static class OTMPerfHandle extends PerfHandle
-    {
-        private OTMKit _kit;
-
-        private OTMConnection _conn;
-
-        private org.apache.ojb.otm.core.Transaction _tx;
-
-        public OTMPerfHandle(PerfTest test)
-        {
-            super(test);
-        }
-
-        public void init()
-        {
-            _kit = SimpleKit.getInstance();
-            _conn = _kit.acquireConnection(ojbInstance.getDefaultConfiguration());
-        }
-
-        public void tearDown() throws Exception
-        {
-            if ((_tx != null) && _tx.isInProgress())
-            {
-                _tx.rollback();
-            }
-            _conn.close();
-        }
-
 
         /**
          * A resource cumbering insert-method implementation,
@@ -738,7 +693,7 @@
          */
         public void insertNewArticlesStress(PerfArticle[] arr) throws Exception
         {
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 _tx = _kit.getTransaction(_conn);
                 _tx.begin();
@@ -755,7 +710,7 @@
         {
             _tx = _kit.getTransaction(_conn);
             _tx.begin();
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 _conn.makePersistent(arr[i]);
             }
@@ -766,7 +721,7 @@
         {
             Criteria c = new Criteria();
             c.addLike("articleName", articleName);
-            Query q = ojbInstance.getQueryFactory().newQuery(PerfArticleImpl.class, c);
+            Query q = QueryFactory.newQuery(PerfArticleImpl.class, c);
 
             _tx = _kit.getTransaction(_conn);
             _tx.begin();
@@ -775,11 +730,26 @@
             return col;
         }
 
+        public PerfArticle getArticleByIdentity(Long articleId) throws Exception
+        {
+            Criteria c = new Criteria();
+            c.addEqualTo("articleId", articleId);
+            Query q = QueryFactory.newQuery(PerfArticleImpl.class, c);
+
+            _tx = _kit.getTransaction(_conn);
+            _tx.begin();
+            // the getByIdeneityMethod() needs Identity and this is currently not supported
+            Collection col = _conn.getCollectionByQuery(q, LockType.NO_LOCK);
+            _tx.commit();
+            Iterator it = col.iterator();
+            return it.hasNext() ? (PerfArticle) it.next() : null;
+        }
+
         public void updateArticles(PerfArticle[] arr) throws Exception
         {
             _tx = _kit.getTransaction(_conn);
             _tx.begin();
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 Identity oid = _conn.getIdentity(arr[i]);
                 PerfArticle a = (PerfArticle) _conn.getObjectByIdentity(oid, LockType.WRITE_LOCK);
@@ -790,7 +760,7 @@
 
         public void updateArticlesStress(PerfArticle[] arr) throws Exception
         {
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 _tx = _kit.getTransaction(_conn);
                 _tx.begin();
@@ -807,7 +777,7 @@
          */
         public void deleteArticlesStress(PerfArticle[] arr) throws Exception
         {
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 _tx = _kit.getTransaction(_conn);
                 _tx.begin();
@@ -824,7 +794,7 @@
         {
             _tx = _kit.getTransaction(_conn);
             _tx.begin();
-            for (int i = 0; i < arr.length; i++)
+            for(int i = 0; i < arr.length; i++)
             {
                 _conn.deletePersistent(arr[i]);
             }

Modified: db/ojb/trunk/src/test/org/apache/ojb/compare/PerformanceBaseTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/compare/PerformanceBaseTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/compare/PerformanceBaseTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/compare/PerformanceBaseTest.java Sat Jul 15 07:49:27 2006
@@ -2,10 +2,14 @@
 
 import java.sql.Connection;
 import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Statement;
 
 import org.apache.ojb.broker.metadata.ClassDescriptor;
 import org.apache.ojb.broker.util.logging.Logger;
 import org.apache.ojb.broker.util.logging.LoggerFactory;
+import org.apache.ojb.broker.platforms.Platform;
+import org.apache.ojb.broker.platforms.PlatformHsqldbImpl;
 import org.apache.ojb.junit.PBTestCase;
 
 /**
@@ -78,6 +82,7 @@
         try
         {
             clearTable();
+            shutdown();
             super.tearDown();
         }
         catch(Exception e)
@@ -222,5 +227,41 @@
             logger.error(e);
             throw e;
         }
+    }
+
+    public void shutdown()
+    {
+        Platform platform = broker.serviceConnectionManager().getSupportedPlatform();
+
+        if(platform instanceof PlatformHsqldbImpl)
+        {
+            Connection con = null;
+            Statement stmt = null;
+
+            try
+            {
+                con = broker.serviceConnectionManager().getConnection();
+                stmt = con.createStatement();
+                stmt.execute("shutdown");
+            }
+            catch (Exception e)
+            {
+                e.printStackTrace();
+            }
+            finally
+            {
+                try
+                {
+                    if(con != null) con.close();
+                    if(stmt != null) stmt.close();
+
+                }
+                catch (SQLException e1)
+                {
+                    e1.printStackTrace();
+                }
+            }
+        }
+
     }
 }

Modified: db/ojb/trunk/src/test/org/apache/ojb/compare/PerformanceODMGTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/compare/PerformanceODMGTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/compare/PerformanceODMGTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/compare/PerformanceODMGTest.java Sat Jul 15 07:49:27 2006
@@ -114,6 +114,9 @@
         TransactionExt tx = (TransactionExt) odmg.newTransaction();
         // we don't want implicite locks when compare performance
         tx.setImplicitLocking(false);
+        // the odmg-api hasn't specific methods to lookup objects
+        // by primary key. It's recommended to use use PB-api instead for
+        // best performance. But here we use an oql-query for each object.
         String sql = "select allArticles from " + PerformanceArticle.class.getName() + " where articleId=$1";
         long start = System.currentTimeMillis();
         tx.begin();

Modified: db/ojb/trunk/src/test/org/apache/ojb/compare/PerformancePBTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/compare/PerformancePBTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/compare/PerformancePBTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/compare/PerformancePBTest.java Sat Jul 15 07:49:27 2006
@@ -4,9 +4,9 @@
 
 import org.apache.ojb.broker.Identity;
 import org.apache.ojb.broker.PersistenceBrokerException;
-import org.apache.ojb.broker.OJB;
 import org.apache.ojb.broker.query.Criteria;
 import org.apache.ojb.broker.query.Query;
+import org.apache.ojb.broker.util.ObjectModification;
 
 /**
  * This TestCase contains the OJB single-threaded performance benchmarks for the
@@ -76,7 +76,7 @@
         broker.beginTransaction();
         for(int i = 0; i < articleCount; i++)
         {
-            broker.store(arr[i], OJB.INSERT);
+            broker.store(arr[i], ObjectModification.INSERT);
         }
         broker.commitTransaction();
         long stop = System.currentTimeMillis();
@@ -149,7 +149,7 @@
         broker.beginTransaction();
         for(int i = 0; i < articleCount; i++)
         {
-            broker.store(arr[i], OJB.UPDATE);
+            broker.store(arr[i], ObjectModification.UPDATE);
         }
         broker.commitTransaction();
         long stop = System.currentTimeMillis();

Modified: db/ojb/trunk/src/test/org/apache/ojb/junit/ODMGTestCase.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/junit/ODMGTestCase.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/junit/ODMGTestCase.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/junit/ODMGTestCase.java Sat Jul 15 07:49:27 2006
@@ -1,7 +1,10 @@
 package org.apache.ojb.junit;
 
 import org.apache.ojb.broker.PBKey;
+import org.apache.ojb.broker.PersistenceBrokerInternal;
+import org.apache.ojb.broker.core.proxy.ProxyFactory;
 import org.apache.ojb.odmg.ImplementationExt;
+import org.apache.ojb.odmg.TransactionExt;
 import org.odmg.Database;
 import org.odmg.Transaction;
 
@@ -64,5 +67,10 @@
             buf.append("#").append(key.getPassword());
         }
         return buf.toString();
+    }
+
+    public ProxyFactory getProxyFactory(TransactionExt tx)
+    {
+        return ((PersistenceBrokerInternal) tx.getBroker()).getProxyFactory();
     }
 }

Modified: db/ojb/trunk/src/test/org/apache/ojb/junit/OJBTestCase.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/junit/OJBTestCase.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/junit/OJBTestCase.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/junit/OJBTestCase.java Sat Jul 15 07:49:27 2006
@@ -81,6 +81,7 @@
         }
         // ojb.releaseAllConfigurations();
         super.tearDown();
+        // if not really needed don't comment in, because it double the test case runtime
         // System.gc();
     }
 

Modified: db/ojb/trunk/src/test/org/apache/ojb/odmg/BatchModeTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/odmg/BatchModeTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/odmg/BatchModeTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/odmg/BatchModeTest.java Sat Jul 15 07:49:27 2006
@@ -32,7 +32,7 @@
         tx.begin();
 
         ProductGroup pg1 = new ProductGroup();
-        pg1.setName("BatchModeTest ProductGroup #1");
+        pg1.setGroupName("BatchModeTest ProductGroup #1");
         database.makePersistent(pg1);
 
         tx.checkpoint();
@@ -44,7 +44,7 @@
         database.makePersistent(a1);
 
         ProductGroup pg2 = new ProductGroup();
-        pg2.setName("BatchModeTest ProductGroup #2");
+        pg2.setGroupName("BatchModeTest ProductGroup #2");
         database.makePersistent(pg2);
 
         Article a2 = Article.createInstance();

Modified: db/ojb/trunk/src/test/org/apache/ojb/odmg/BidirectionalAssociationTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/odmg/BidirectionalAssociationTest.java?rev=422240&r1=422239&r2=422240&view=diff
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/odmg/BidirectionalAssociationTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/odmg/BidirectionalAssociationTest.java Sat Jul 15 07:49:27 2006
@@ -128,8 +128,11 @@
         tx.begin();
         b.setRelatedA(a);
         a.setRelatedB(b);
-        database.makePersistent(a);
+        // we use a FK from ObjectB to ObjectA, thus we
+        // make persistent B
         database.makePersistent(b);
+        // not needed
+        //database.makePersistent(a);
         tx.commit();
 
         /**



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