dain        2006/02/01 06:50:14

  Modified:    
modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr
                        AbstractCMRTest.java
  Log:

  Major refactor
  Split container into an object to represent a deployed ejb and a set of 
shared containers which process invocations
  Introduced interface between CMP container and CMP engine
  
  Revision  Changes    Path
  1.28      +53 -88    
openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/AbstractCMRTest.java
  
  Index: AbstractCMRTest.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/AbstractCMRTest.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- AbstractCMRTest.java      8 Oct 2005 04:45:59 -0000       1.27
  +++ AbstractCMRTest.java      1 Feb 2006 11:50:14 -0000       1.28
  @@ -51,54 +51,38 @@
   import java.io.File;
   import java.net.URI;
   import java.sql.Connection;
  -import java.util.HashMap;
   import java.util.HashSet;
   import java.util.Set;
   import javax.management.MalformedObjectNameException;
   import javax.management.ObjectName;
   import javax.sql.DataSource;
  -import javax.transaction.TransactionManager;
   
   import junit.framework.TestCase;
  -
   import org.apache.geronimo.deployment.util.DeploymentUtil;
   import org.apache.geronimo.gbean.GBeanData;
   import org.apache.geronimo.j2ee.deployment.EARContext;
  +import org.apache.geronimo.j2ee.deployment.EJBModule;
   import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
   import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContextImpl;
   import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
   import org.apache.geronimo.kernel.Kernel;
   import org.apache.geronimo.kernel.config.ConfigurationModuleType;
   import org.apache.geronimo.kernel.jmx.JMXUtil;
  -import org.apache.geronimo.kernel.repository.Repository;
  +import org.apache.geronimo.kernel.management.State;
   import org.apache.geronimo.transaction.context.TransactionContext;
  -import org.apache.geronimo.xbeans.j2ee.EjbJarDocument;
   import org.apache.geronimo.xbeans.j2ee.EjbJarType;
  -import org.apache.xmlbeans.XmlObject;
   import org.axiondb.jdbc.AxionDataSource;
  -import org.openejb.ContainerIndex;
  -import org.openejb.deployment.CMPContainerBuilder;
  -import org.openejb.deployment.CMPEntityBuilderTestUtil;
  +import org.openejb.DeploymentIndex;
  +import org.openejb.deployment.CmpSchemaBuilder;
   import org.openejb.deployment.DeploymentHelper;
   import org.openejb.deployment.KernelHelper;
   import org.openejb.deployment.MockConnectionProxyFactory;
  -import org.openejb.deployment.OpenEJBModuleBuilder;
  -import org.openejb.deployment.Schemata;
  -import org.openejb.deployment.pkgen.TranQLPKGenBuilder;
  -import org.openejb.dispatch.InterfaceMethodSignature;
  -import org.openejb.transaction.TransactionPolicySource;
  -import org.openejb.transaction.TransactionPolicyType;
  -import org.openejb.xbeans.ejbjar.OpenejbOpenejbJarDocument;
  +import org.openejb.deployment.CmpBuilder;
  +import org.openejb.deployment.TranqlCmpSchemaBuilder;
  +import org.openejb.deployment.XmlBeansHelper;
   import org.openejb.xbeans.ejbjar.OpenejbOpenejbJarType;
   import org.tranql.cache.GlobalSchema;
  -import org.tranql.cache.cache.FrontEndCache;
  -import org.tranql.cache.cache.FrontEndCacheDelegate;
  -import org.tranql.ejb.EJB;
   import org.tranql.ejb.EJBSchema;
  -import org.tranql.ejb.TransactionManagerDelegate;
  -import org.tranql.ejbqlcompiler.DerbyDBSyntaxtFactory;
  -import org.tranql.ejbqlcompiler.DerbyEJBQLCompilerFactory;
  -import org.tranql.sql.BaseSQLSchema;
   import org.tranql.sql.SQLSchema;
   
   /**
  @@ -122,7 +106,7 @@
           }
       }
   
  -    private Repository repository = null;
  +//    private Repository repository = null;
       protected Kernel kernel;
       protected DataSource ds;
       protected EJBSchema ejbSchema;
  @@ -130,7 +114,6 @@
       protected GlobalSchema cacheSchema;
       protected Object ahome;
       protected Object bhome;
  -    private TransactionManager tm;
   
       protected TransactionContext newTransactionContext() throws Exception {
           return (TransactionContext) 
kernel.invoke(DeploymentHelper.TRANSACTIONCONTEXTMANAGER_NAME, 
"newContainerTransactionContext", null, null);
  @@ -153,59 +136,61 @@
           buildDBSchema(c);
   
           kernel = DeploymentHelper.setUpKernelWithTransactionManager();
  -        DeploymentHelper.setUpTimer(kernel);
  -
  -        tm = (TransactionManager) 
kernel.getProxyManager().createProxy(DeploymentHelper.TRANSACTIONMANAGER_NAME, 
TransactionManager.class);
  -        TransactionManagerDelegate tmDelegate = new 
TransactionManagerDelegate();
  -
  -        tmDelegate.setTransactionManager(tm);
   
           File ejbJarFile = new File(basedir, getEjbJarDD());
           File openejbJarFile = new File(basedir, getOpenEjbJarDD());
  -        EjbJarType ejbJarType = ((EjbJarDocument) 
XmlObject.Factory.parse(ejbJarFile)).getEjbJar();
  -        OpenejbOpenejbJarType openejbJarType = ((OpenejbOpenejbJarDocument) 
XmlObject.Factory.parse(openejbJarFile)).getOpenejbJar();
  +        EjbJarType ejbJarType= XmlBeansHelper.loadEjbJar(ejbJarFile);
  +        OpenejbOpenejbJarType openejbJarType = 
XmlBeansHelper.loadOpenEjbJar(openejbJarFile);
   
  -        OpenEJBModuleBuilder moduleBuilder = new OpenEJBModuleBuilder(null, 
null, null, null, repository, kernel);
  -        CMPEntityBuilderTestUtil builder = new 
CMPEntityBuilderTestUtil(moduleBuilder);
  -        TranQLPKGenBuilder pkGen = new TranQLPKGenBuilder();
           File tempDir = DeploymentUtil.createTempDir();
   
           try {
  +            URI configId = new URI("test");
               EARContext earContext = new EARContext(tempDir,
  -                    new URI("test"),
  +                    configId,
                       ConfigurationModuleType.EJB,
                       KernelHelper.DEFAULT_PARENTID_LIST,
                       kernel,
                       NameFactory.NULL,
  +                    DeploymentHelper.TRANSACTIONMANAGER_NAME,
  +                    DeploymentHelper.TRANSACTIONCONTEXTMANAGER_NAME,
  +                    DeploymentHelper.TRACKEDCONNECTIONASSOCIATOR_NAME,
  +                    DeploymentHelper.TRANSACTIONALTIMER_NAME,
  +                    DeploymentHelper.NONTRANSACTIONALTIMER_NAME,
                       null,
  -                    null,
  -                    null,
  -                    null,
  -                    null, null);
  +                    null);
   
               ClassLoader cl = Thread.currentThread().getContextClassLoader();
  -            Schemata schemata = builder.buildCMPSchema(earContext, 
j2eeContext, ejbJarType, openejbJarType, cl, pkGen, ds);
   
  -            ejbSchema = schemata.getEjbSchema();
  -            sqlSchema = schemata.getSqlSchema();
  -            cacheSchema = schemata.getGlobalSchema();
  -            
  -            GBeanData containerIndex = new 
GBeanData(ContainerIndex.GBEAN_INFO);
  +            // create module cmp enging GBeanData
  +            EJBModule ejbModule = new EJBModule(true, configId, null, null, 
tempDir.getAbsolutePath(), ejbJarType, openejbJarType, "");
  +            CmpSchemaBuilder cmpSchemaBuilder = new TranqlCmpSchemaBuilder();
  +            cmpSchemaBuilder.addBeans(earContext, j2eeContext, ejbModule, 
cl);
  +            ObjectName moduleCmpEngineName = 
ejbModule.getModuleCmpEngineName();
  +            GBeanData moduleCmpEngineGBeanData = 
earContext.getGBeanInstance(moduleCmpEngineName);
  +
  +            // start the connection factory
  +            ObjectName connectionProxyFactoryObjectName = (ObjectName) 
moduleCmpEngineGBeanData.getReferencePatterns("connectionFactory").iterator().next();
  +            GBeanData connectionProxyFactoryGBean = new 
GBeanData(connectionProxyFactoryObjectName, 
MockConnectionProxyFactory.GBEAN_INFO);
  +            kernel.loadGBean(connectionProxyFactoryGBean, cl);
  +            kernel.startGBean(connectionProxyFactoryObjectName);
  +            assertEquals(State.RUNNING_INDEX, 
kernel.getGBeanState(connectionProxyFactoryObjectName));
  +
  +            // start the module cmp engine
  +            kernel.loadGBean(moduleCmpEngineGBeanData, cl);
  +            kernel.startGBean(moduleCmpEngineName);
  +            assertEquals(State.RUNNING_INDEX, 
kernel.getGBeanState(moduleCmpEngineName));
  +
  +
  +            GBeanData containerIndex = new 
GBeanData(DeploymentIndex.GBEAN_INFO);
               Set patterns = new HashSet();
               patterns.add(C_NAME_A);
               patterns.add(C_NAME_B);
  -            containerIndex.setReferencePatterns("EJBContainers", patterns);
  +            containerIndex.setReferencePatterns("EjbDeployments", patterns);
               start(CI_NAME, containerIndex);
   
  -            ObjectName connectionProxyFactoryObjectName = 
NameFactory.getComponentName(null, null, null, NameFactory.JCA_RESOURCE, 
"jcamodule", "testcf", NameFactory.JCA_CONNECTION_FACTORY, j2eeContext);
  -            GBeanData connectionProxyFactoryGBean = new 
GBeanData(connectionProxyFactoryObjectName, 
MockConnectionProxyFactory.GBEAN_INFO);
  -            kernel.loadGBean(connectionProxyFactoryGBean, 
this.getClass().getClassLoader());
  -            kernel.startGBean(connectionProxyFactoryObjectName);
  -
  -            FrontEndCacheDelegate cacheDelegate = new 
FrontEndCacheDelegate();
  -            
  -            setUpContainer(ejbSchema.getEJB("A"), getA().bean, getA().home, 
getA().local, C_NAME_A, tmDelegate, cacheDelegate);
  -            setUpContainer(ejbSchema.getEJB("B"), getB().bean, getB().home, 
getB().local, C_NAME_B, tmDelegate, cacheDelegate);
  +            setUpContainer("A", getA().bean, getA().home, getA().local, 
Integer.class, C_NAME_A, moduleCmpEngineName);
  +            setUpContainer("B", getB().bean, getB().home, getB().local, 
Integer.class, C_NAME_B, moduleCmpEngineName);
   
               ahome = kernel.getAttribute(C_NAME_A, "ejbLocalHome");
               bhome = kernel.getAttribute(C_NAME_B, "ejbLocalHome");
  @@ -214,43 +199,23 @@
           }
       }
   
  -
  -    private void setUpContainer(EJB ejb, Class beanClass, Class homeClass, 
Class localClass, ObjectName containerName, TransactionManagerDelegate 
tmDelegate, FrontEndCacheDelegate cacheDelegate) throws Exception {
  -        CMPContainerBuilder builder = new CMPContainerBuilder();
  -        builder.setClassLoader(this.getClass().getClassLoader());
  -        builder.setContainerId(containerName.getCanonicalName());
  -        builder.setEJBName(ejb.getName());
  +    private void setUpContainer(String ejbName, Class beanClass, Class 
localHomeClass, Class localClass, Class primaryKeyClass, ObjectName 
containerName, ObjectName moduleCmpEngineObjectName) throws Exception {
  +        CmpBuilder builder = new CmpBuilder();
  +        builder.setContainerId(containerName);
  +        builder.setEjbName(ejbName);
  +        builder.setEjbContainerName(DeploymentHelper.CMP_EJB_CONTAINER_NAME);
           builder.setBeanClassName(beanClass.getName());
  -        builder.setHomeInterfaceName(null);
  -        builder.setLocalHomeInterfaceName(homeClass.getName());
  -        builder.setRemoteInterfaceName(null);
  +        builder.setLocalHomeInterfaceName(localHomeClass.getName());
           builder.setLocalInterfaceName(localClass.getName());
  -        builder.setPrimaryKeyClassName(ejb.getPrimaryKeyClass().getName());
  -
  -        builder.setJndiNames(new String[0]);
  -        builder.setLocalJndiNames(new String[0]);
  -        builder.setUnshareableResources(new HashSet());
  -        builder.setTransactionPolicySource(new TransactionPolicySource() {
  -            public TransactionPolicyType getTransactionPolicy(String 
methodIntf, InterfaceMethodSignature signature) {
  -                return TransactionPolicyType.Required;
  -            }
  -        });
  -
  -        builder.setEJBSchema(ejbSchema);
  -        builder.setSQLSchema(sqlSchema);
  -        builder.setGlobalSchema(cacheSchema);
  -        builder.setComponentContext(new HashMap());
  -        builder.setTransactionManagerDelegate(tmDelegate);
  -        builder.setFrontEndCacheDelegate(cacheDelegate);
  -
  -        GBeanData container = builder.createConfiguration(containerName, 
DeploymentHelper.TRANSACTIONCONTEXTMANAGER_NAME, 
DeploymentHelper.TRACKEDCONNECTIONASSOCIATOR_NAME, null);
  +        builder.setPrimaryKeyClassName(primaryKeyClass.getName());
  +        builder.setModuleCmpEngineName(moduleCmpEngineObjectName);
  +        builder.setCmp2(true);
   
  -        container.setReferencePattern("Timer", 
DeploymentHelper.TRANSACTIONALTIMER_NAME);
  +        GBeanData container = builder.createConfiguration();
           start(containerName, container);
       }
   
       protected void tearDown() throws Exception {
  -        kernel.getProxyManager().destroyProxy(tm);
           kernel.shutdown();
           java.sql.Connection c = ds.getConnection();
           c.createStatement().execute("SHUTDOWN");
  
  
  

Reply via email to