Thanks to everyone in this group.  You guys were a tremendous help.

Regards,
Alan

> -----Original Message-----
> From: Alan Cabrera [mailto:[EMAIL PROTECTED]]
> 
> I'm kind of partial to InstanceFactory also.   My updated 
> classes and patch
> are on the way.
> 
> > -----Original Message-----
> > From: David Blevins [mailto:[EMAIL PROTECTED]]
> > 
> > How about a plain and simple InstanceFactory?
> > 
> > 
> > > -----Original Message-----
> > > From: Thomas Yip [mailto:[EMAIL PROTECTED]]
> > > 
> > > Maybe DataObjectFactory?
> > > I am very bad at naming tough.
> > > 
> > > 
> > > 
> > > 
> > > Thank again.
> > > 
> > > 
> > > Thomas
> > > 
> > > 
> > > -----Original Message-----
> > > >From: Cabrera, Alan [mailto:[EMAIL PROTECTED]]
> > > >Sent: Tuesday, January 15, 2002 8:19 AM
> > > >To: [EMAIL PROTECTED]
> > > >Subject: Re: [castor-dev] [JDO] Controlling instance creation in
> > > ClassMolder
> > > >
> > > >Gotcha.  InstanceFactory sound good?
> > > >
> > > >I'll double check the OpenEJB side to make sure that it's 
> > safe to remove
> > > >those methods.
> > > >
> > > >Alan
> > > >
> > > >-----Original Message-----
> > > >From: Thomas Yip [mailto:[EMAIL PROTECTED]]
> > > >Sent: Tuesday, January 15, 2002 1:47 AM
> > > >To: [EMAIL PROTECTED]
> > > >Subject: Re: [castor-dev] [JDO] Controlling instance creation in
> > > >ClassMolder
> > > >
> > > >
> > > >
> > > >Hi Alan,
> > > >
> > > >
> > > >Thank you very much for your patch, especially appreciate that 
> > > you send us
> > > >test cases as well.
> > > >I don't have time to run your test case yet.
> > > >
> > > >However, I have a minor enhancement request. First, I saw that 
> > > you create a
> > > >new interface that extends CallbackInterceptor. However, I 
> > think the new
> > > >interface would be better if it doesn't extends 
> > CallbackInterceptor,
> > > because
> > > >it is actually not a extension of CallbackInterceptor, 
> > > logically. Could you
> > > >please make it standalone?
> > > >
> > > >Also, the method
> > > >     castor.jdo.Database.load( Class type, Object 
> identity, Object
> > > object ),
> > > >     castor.jdo.engine.DatabaseImpl( Class type, Object 
> > identity, Object
> > > >object ),
> > > >
> > > >were added, half year ago, for openEJB integration (although we 
> > > later found
> > > >that openEJB can't take advantage of that). So, I am going to 
> > > remove those
> > > >methods once your patch is committed. I am quite sure it 
> > won't cause any
> > > >problem on your side, right?
> > > >
> > > >
> > > >Thank again Alan! Greatly appreciated. :-)
> > > >
> > > >
> > > >
> > > >
> > > >Thomas
> > > >
> > > >
> > > >
> > > >-----Original Message-----
> > > >>From: Alan Cabrera [mailto:[EMAIL PROTECTED]]
> > > >>Sent: Sunday, January 13, 2002 8:41 PM
> > > >>To: [EMAIL PROTECTED]
> > > >>Subject: Re: [castor-dev] [JDO] Controlling instance creation in
> > > >ClassMolder
> > > >>
> > > >>Here are my files and test cases.
> > > >>
> 

TCL is *not* available, shell is disabled
cvs diff -u 
? Castor.vtg
? lib/.new.postgresql.jar
? src/schema
? src/main/org/exolab/castor/persist/.nbattrs
? src/main/org/exolab/castor/persist/spi/.nbattrs
? src/main/org/exolab/castor/persist/spi/InstanceFactory.java
? src/tests/.nbattrs
? src/tests/Copy of tests.xml
? src/tests/harness/.nbattrs
? src/tests/jdo/CallbacksInvoked.java
? src/tests/jdo/sqlserver.sql
? src/tests/jdo/sqlserver.xml
? src/tests/jdo/TestCallbackInterceptor.java
? src/tests/jdo/TestInstanceFactory.java
? src/tests/jdo/TestObjectTimeStampable.java
cvs server: Diffing .
cvs server: Diffing lib
cvs server: cannot find lib/xerces-license
cvs server: Diffing lib/bin
cvs server: Diffing src
cvs server: Diffing src/doc
cvs server: Diffing src/doc/images
cvs server: Diffing src/doc/ora-mar-2k
cvs server: Diffing src/doc/style
cvs server: Diffing src/doc/style/images
cvs server: Diffing src/doc/style/images/boxes
cvs server: Diffing src/doc/style/images/bullets
cvs server: Diffing src/doc/style/images/corners
cvs server: Diffing src/doc/style/images/links
cvs server: Diffing src/etc
cvs server: Diffing src/examples
cvs server: Diffing src/examples/SourceGenerator
cvs server: Diffing src/examples/dsml
cvs server: Diffing src/examples/dtx
cvs server: Diffing src/examples/jdo
cvs server: Diffing src/examples/myapp
cvs server: Diffing src/examples/oes
cvs server: Diffing src/examples/oes/schema
cvs server: Diffing src/examples/servlet
cvs server: Diffing src/main
cvs server: Diffing src/main/org
cvs server: Diffing src/main/org/exolab
cvs server: Diffing src/main/org/exolab/castor
cvs server: Diffing src/main/org/exolab/castor/builder
cvs server: Diffing src/main/org/exolab/castor/builder/types
cvs server: Diffing src/main/org/exolab/castor/builder/util
cvs server: Diffing src/main/org/exolab/castor/dsml
cvs server: Diffing src/main/org/exolab/castor/dsml/jndi
cvs server: Diffing src/main/org/exolab/castor/dsml/mozilla
cvs server: Diffing src/main/org/exolab/castor/dsml/schema
cvs server: Diffing src/main/org/exolab/castor/dsml/tools
cvs server: Diffing src/main/org/exolab/castor/dtx
cvs server: Diffing src/main/org/exolab/castor/gui
cvs server: Diffing src/main/org/exolab/castor/gui/images
cvs server: Diffing src/main/org/exolab/castor/jdo
cvs server: Diffing src/main/org/exolab/castor/jdo/conf
cvs server: Diffing src/main/org/exolab/castor/jdo/drivers
cvs server: Diffing src/main/org/exolab/castor/jdo/engine
cvs server: Diffing src/main/org/exolab/castor/jdo/oql
cvs server: Diffing src/main/org/exolab/castor/mapping
cvs server: Diffing src/main/org/exolab/castor/mapping/loader
cvs server: Diffing src/main/org/exolab/castor/mapping/xml
cvs server: Diffing src/main/org/exolab/castor/mapping/xml/types
cvs server: Diffing src/main/org/exolab/castor/persist
Index: src/main/org/exolab/castor/persist/TransactionContext.java
===================================================================
RCS file: 
/cvs/castor/castor/src/main/org/exolab/castor/persist/TransactionContext.java,v
retrieving revision 1.98
diff -u -r1.98 TransactionContext.java
--- src/main/org/exolab/castor/persist/TransactionContext.java  5 Dec 2001 02:15:26 
-0000       1.98
+++ src/main/org/exolab/castor/persist/TransactionContext.java  16 Jan 2002 03:28:21 
+-0000
@@ -68,6 +68,7 @@
 import org.exolab.castor.jdo.TransactionNotInProgressException;
 import org.exolab.castor.jdo.ObjectModifiedException;
 import org.exolab.castor.persist.spi.CallbackInterceptor;
+import org.exolab.castor.persist.spi.InstanceFactory;
 import org.exolab.castor.mapping.AccessMode;
 import org.exolab.castor.persist.spi.PersistenceQuery;
 import org.exolab.castor.util.Messages;
@@ -241,6 +242,13 @@
     private CallbackInterceptor        _callback;
 
     /**
+     * The callback interceptor to instantiate a data object in 
+     * this transaction.  If this is not set, the transaction will
+     * use the ClassMolder to instantiate a new data object.
+     */
+    private InstanceFactory _instatiateCallback;
+
+    /**
      * Creating 
      *
      */
@@ -302,6 +310,9 @@
      */
     public void setCallback( CallbackInterceptor callback ) {
         _callback = callback;
+        if ( callback instanceof InstanceFactory ) {
+            _instatiateCallback = (InstanceFactory)callback;
+        }
     }
 
 
@@ -569,8 +580,13 @@
             //object = molder.newInstance();
             if ( objectToBeLoaded != null )
                 object = objectToBeLoaded;
-            else
-                object = molder.newInstance( _db.getClassLoader() );
+            else {
+                if ( _instatiateCallback != null ) {
+                    object = _instatiateCallback.newInstance( molder.getName(), 
+_db.getClassLoader() );
+                } else {
+                    object = molder.newInstance( _db.getClassLoader() );
+                }
+            }
             entry = addObjectEntry( oid, object );
             oid = engine.load( this, oid, object, suggestedAccessMode, _lockTimeout, 
results );
 
cvs server: Diffing src/main/org/exolab/castor/persist/spi
cvs server: Diffing src/main/org/exolab/castor/tools
cvs server: Diffing src/main/org/exolab/castor/types
cvs server: Diffing src/main/org/exolab/castor/util
cvs server: Diffing src/main/org/exolab/castor/util/resources
cvs server: Diffing src/main/org/exolab/castor/xml
cvs server: Diffing src/main/org/exolab/castor/xml/descriptors
cvs server: Diffing src/main/org/exolab/castor/xml/dtd
cvs server: Diffing src/main/org/exolab/castor/xml/dtd/parser
cvs server: Diffing src/main/org/exolab/castor/xml/handlers
cvs server: Diffing src/main/org/exolab/castor/xml/schema
cvs server: Diffing src/main/org/exolab/castor/xml/schema/reader
cvs server: Diffing src/main/org/exolab/castor/xml/schema/simpletypes
cvs server: Diffing src/main/org/exolab/castor/xml/schema/simpletypes/factory
cvs server: Diffing src/main/org/exolab/castor/xml/schema/util
cvs server: Diffing src/main/org/exolab/castor/xml/schema/writer
cvs server: Diffing src/main/org/exolab/castor/xml/util
cvs server: Diffing src/main/org/exolab/castor/xml/validators
cvs server: Diffing src/main/org/exolab/javasource
cvs server: Diffing src/tests
Index: src/tests/tests.xml
===================================================================
RCS file: /cvs/castor/castor/src/tests/tests.xml,v
retrieving revision 1.45
diff -u -r1.45 tests.xml
--- src/tests/tests.xml 26 Oct 2001 01:35:02 -0000      1.45
+++ src/tests/tests.xml 16 Jan 2002 03:28:22 -0000
@@ -42,6 +42,9 @@
     <!-- -->
     <case class="jdo.Persistent" />
     <!-- <case class="jdo.StoredProcedure" /> -->
+    <!-- -->
+    <case class="jdo.TestCallbackInterceptor" />
+    <case class="jdo.TestInstanceFactory" />
 
     <!-- D -->
     <!-- jdo.ListTypes is a helper class for
@@ -85,6 +88,9 @@
     <case class="jdo.KeyGenReturning" />
     <!-- -->
     <case class="jdo.Persistent" />
+    <!-- -->
+    <case class="jdo.TestCallbackInterceptor" />
+    <case class="jdo.TestInstanceFactory" />
 
     <!-- D -->
     <!-- jdo.ListTypes is a helper class for
@@ -122,6 +128,9 @@
     <case class="jdo.KeyGenIdentity" />
     <!-- -->
     <case class="jdo.Persistent" />
+    <!-- -->
+    <case class="jdo.TestCallbackInterceptor" />
+    <case class="jdo.TestInstanceFactory" />
 
     <!-- D -->
     <!-- <case class="jdo.ListTypes" /> -->
@@ -159,6 +168,9 @@
     <case class="jdo.KeyGenSequence" />
     <!-- -->
     <case class="jdo.Persistent" />
+    <!-- -->
+    <case class="jdo.TestCallbackInterceptor" />
+    <case class="jdo.TestInstanceFactory" />
 
     <!-- D -->
     <!-- jdo.ListTypes is a helper class for
@@ -199,6 +211,52 @@
     <!-- -->
     <!-- -->
     <case class="jdo.Persistent" />
+    <!-- -->
+    <case class="jdo.TestCallbackInterceptor" />
+    <case class="jdo.TestInstanceFactory" />
+
+    <!-- D -->
+  </category>
+
+  <category name="sqlserver" class="jdo.JDOCategory">
+    <description>JDO tests for MS SQL Server</description>
+    <jdo database-name="test" configuration="sqlserver.xml" />
+
+    <!-- A -->
+    <case class="jdo.DuplicateKey" />
+    <case class="jdo.Concurrent" />
+    <case class="jdo.ReadOnly" />
+    <case class="jdo.Deadlock" />
+    <case class="jdo.Race" />
+    <case class="jdo.CacheLeakage" />
+
+    <!-- B -->
+    <case class="jdo.TypeHandling" />
+    <case class="jdo.TypeConversion" />
+    <case class="jdo.MultiPKs" />
+    <case class="jdo.ManyToMany" />
+    <case class="jdo.Dependent" />
+    <case class="jdo.DependentUpdate" />
+    <case class="jdo.DependentKeyGen" />
+    <case class="jdo.DependentKeyGenUpdate" />
+    <case class="jdo.LazyLoading" />
+    <case class="jdo.NestedFields" />
+    <case class="jdo.Collections" />
+    <case class="jdo.OqlExtends" />
+    <case class="jdo.ManyToManyKeyGen" />
+
+    <!-- C -->
+    <case class="jdo.KeyGenGeneric" />
+    <case class="jdo.KeyGenUuid" />
+    <!-- -->
+    <case class="jdo.KeyGenIdentity" />
+    <!-- -->
+    <!-- -->
+    <case class="jdo.Persistent" />
+    <!-- <case class="jdo.StoredProcedure" /> -->
+    <!-- -->
+    <case class="jdo.TestCallbackInterceptor" />
+    <case class="jdo.TestInstanceFactory" />
 
     <!-- D -->
   </category>
cvs server: Diffing src/tests/MasterTestSuite
cvs server: Diffing src/tests/MasterTestSuite/xml
cvs server: Diffing src/tests/MasterTestSuite/xml/introspection
cvs server: Diffing src/tests/MasterTestSuite/xml/mapping
cvs server: Diffing src/tests/MasterTestSuite/xml/sourcegenerator
cvs server: Diffing src/tests/harness
cvs server: Diffing src/tests/jdo
Index: src/tests/jdo/JDOCategory.java
===================================================================
RCS file: /cvs/castor/castor/src/tests/jdo/JDOCategory.java,v
retrieving revision 1.9
diff -u -r1.9 JDOCategory.java
--- src/tests/jdo/JDOCategory.java      21 Jun 2001 20:29:25 -0000      1.9
+++ src/tests/jdo/JDOCategory.java      16 Jan 2002 03:28:22 -0000
@@ -79,6 +79,9 @@
         }
     }
 
+    public JDO getJDO() {
+       return _jdo;
+    }
 
     public Database getDatabase( boolean verbose )
         throws PersistenceException
Index: src/tests/jdo/mapping.xml
===================================================================
RCS file: /cvs/castor/castor/src/tests/jdo/mapping.xml,v
retrieving revision 1.70
diff -u -r1.70 mapping.xml
--- src/tests/jdo/mapping.xml   11 Dec 2001 10:42:38 -0000      1.70
+++ src/tests/jdo/mapping.xml   16 Jan 2002 03:28:23 -0000
@@ -294,6 +294,20 @@
     </field>
   </class>
 
+  <class name="jdo.TestObjectTimeStampable" access="shared" identity="id">
+    <description>Table used for concurrency and performance testing</description>
+    <map-to table="test_table" />
+    <field name="id" type="integer">
+      <sql name="id" type="integer" />
+    </field>
+    <field name="value1" type="string" required="true">
+      <sql name="value1" type="varchar"/>
+    </field>
+    <field name="value2" type="string">
+      <sql name="value2" type="varchar"/>
+    </field>
+  </class>
+
   <class name="jdo.TestObject" access="shared" identity="id">
     <description>Table used for concurrency and performance testing</description>
     <map-to table="test_table" />
cvs server: Diffing src/tests/org
cvs server: Diffing src/tests/org/exolab
cvs server: Diffing src/tests/org/exolab/castor
cvs server: Diffing src/tests/org/exolab/castor/tests
cvs server: Diffing src/tests/org/exolab/castor/tests/framework
cvs server: Diffing src/tests/org/exolab/castor/tests/framework/testDescriptor
cvs server: Diffing src/tests/org/exolab/castor/tests/framework/testDescriptor/types
cvs server: Diffing src/tests/soak
cvs server: Diffing src/tests/soak/model
cvs server: Diffing src/tests/xml
cvs server: Diffing src/tests/xml/introspection

*****CVS exited normally with code 1*****

Attachment: InstanceFactory.java
Description: Binary data

Attachment: TestInstanceFactory.java
Description: Binary data

Attachment: TestCallbackInterceptor.java
Description: Binary data

Attachment: sqlserver.xml
Description: Binary data

Attachment: sqlserver.sql
Description: Binary data

Reply via email to