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*****
InstanceFactory.java
Description: Binary data
TestInstanceFactory.java
Description: Binary data
TestCallbackInterceptor.java
Description: Binary data
sqlserver.xml
Description: Binary data
sqlserver.sql
Description: Binary data
