gdamour     2005/09/13 09:05:00

  Modified:    modules/openejb-builder/src/java/org/openejb/deployment
                        CMPEntityBuilder.java OpenEJBModuleBuilder.java
  Log:

  GERONIMO-1004 SequenceTablePrimaryKeyGenerator transaction handling is broken
  (Tranql)
  
  As pointed out by David J, a TransactionManager needs to be passed to
  SequenceTablePrimaryKeyGenerator in order to suspend and resume in-flight
  transactions while retrieving the next ids.
  
  Revision  Changes    Path
  1.42      +4 -3      
openejb/modules/openejb-builder/src/java/org/openejb/deployment/CMPEntityBuilder.java
  
  Index: CMPEntityBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/CMPEntityBuilder.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- CMPEntityBuilder.java     10 Sep 2005 14:49:07 -0000      1.41
  +++ CMPEntityBuilder.java     13 Sep 2005 13:04:59 -0000      1.42
  @@ -51,6 +51,7 @@
   
   import javax.management.ObjectName;
   import javax.sql.DataSource;
  +import javax.transaction.TransactionManager;
   
   import org.apache.geronimo.common.DeploymentException;
   import org.apache.geronimo.gbean.GBeanData;
  @@ -115,7 +116,7 @@
        * EJB JAR.  This includes setting up the database mappings, key
        * generation, etc.
        */
  -    public Schemata buildSchemata(final EARContext earContext, final 
J2eeContext moduleJ2eeContext, String moduleName, EjbJarType ejbJar, 
OpenejbOpenejbJarType openejbEjbJar, ClassLoader cl, final PKGenBuilder pkGen, 
final DataSource dataSource) throws DeploymentException {
  +    public Schemata buildSchemata(final EARContext earContext, final 
J2eeContext moduleJ2eeContext, String moduleName, EjbJarType ejbJar, 
OpenejbOpenejbJarType openejbEjbJar, ClassLoader cl, final PKGenBuilder pkGen, 
final DataSource dataSource, final TransactionManager tm) throws 
DeploymentException {
           SchemataBuilder builder = new SchemataBuilder() {
               protected EJBProxyFactory buildEJBProxyFactory(EntityBeanType 
entityBean, String remoteInterfaceName, String homeInterfaceName, String 
localInterfaceName, String localHomeInterfaceName, ClassLoader cl) throws 
DeploymentException {
                   ObjectName entityObjectName = 
createEJBObjectName(moduleJ2eeContext, entityBean);
  @@ -129,7 +130,7 @@
               }
   
               protected PrimaryKeyGenerator 
buildPKGenerator(EjbKeyGeneratorType config, Class pkClass) throws 
DeploymentException, QueryException {
  -                return pkGen.configurePKGenerator(config, dataSource, 
pkClass, earContext);
  +                return pkGen.configurePKGenerator(config, tm, dataSource, 
pkClass, earContext);
               }
           };
           return builder.buildSchemata(moduleName, ejbJar, openejbEjbJar, 
dataSource, cl);
  
  
  
  1.56      +3 -4      
openejb/modules/openejb-builder/src/java/org/openejb/deployment/OpenEJBModuleBuilder.java
  
  Index: OpenEJBModuleBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/OpenEJBModuleBuilder.java,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- OpenEJBModuleBuilder.java 10 Sep 2005 14:49:07 -0000      1.55
  +++ OpenEJBModuleBuilder.java 13 Sep 2005 13:04:59 -0000      1.56
  @@ -361,6 +361,7 @@
           J2eeContext moduleJ2eeContext = 
J2eeContextImpl.newModuleContextFromApplication(earJ2eeContext, 
NameFactory.EJB_MODULE, module.getName());
   
           DataSourceDelegate delegate = new DataSourceDelegate();
  +        TransactionManagerDelegate tmDelegate = new 
TransactionManagerDelegate();
   
           // Handle automatic PK generation -- we want to use the same builder 
for all CMP entities
           TranQLPKGenBuilder pkgen = new TranQLPKGenBuilder();
  @@ -370,7 +371,7 @@
           EjbJarType ejbJar = (EjbJarType) module.getSpecDD();
   
           // @todo need a better schema name
  -        Schemata schemata = cmpEntityBuilder.buildSchemata(earContext, 
moduleJ2eeContext, ejbModule.getName(), ejbJar, openejbEjbJar, cl, pkgen, 
delegate);
  +        Schemata schemata = cmpEntityBuilder.buildSchemata(earContext, 
moduleJ2eeContext, ejbModule.getName(), ejbJar, openejbEjbJar, cl, pkgen, 
delegate, tmDelegate);
           EJBSchema ejbSchema = schemata.getEjbSchema();
           SQLSchema sqlSchema = schemata.getSqlSchema();
           GlobalSchema globalSchema = schemata.getGlobalSchema();
  @@ -384,8 +385,6 @@
           } catch (MalformedObjectNameException e) {
               throw new DeploymentException("Unable to construct module name", 
e);
           }
  -
  -        TransactionManagerDelegate tmDelegate = new 
TransactionManagerDelegate();
   
           GBeanData ejbModuleGBeanData = new GBeanData(ejbModuleObjectName, 
EJBModuleImpl.GBEAN_INFO);
           try {
  
  
  

Reply via email to