maguro      2004/11/10 15:25:10

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

  Fixes for my GBeans.
  
  Revision  Changes    Path
  1.2       +548 -274  
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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractCMRTest.java      10 Nov 2004 01:35:10 -0000      1.1
  +++ AbstractCMRTest.java      10 Nov 2004 20:25:10 -0000      1.2
  @@ -1,274 +1,548 @@
  -/* ====================================================================

  - * Redistribution and use of this software and associated documentation

  - * ("Software"), with or without modification, are permitted provided

  - * that the following conditions are met:

  - *

  - * 1. Redistributions of source code must retain copyright

  - *    statements and notices.  Redistributions must also contain a

  - *    copy of this document.

  - *

  - * 2. Redistributions in binary form must reproduce this list of

  - *    conditions and the following disclaimer in the documentation

  - *    and/or other materials provided with the distribution.

  - *

  - * 3. The name "OpenEJB" must not be used to endorse or promote

  - *    products derived from this Software without prior written

  - *    permission of The OpenEJB Group.  For written permission,

  - *    please contact [EMAIL PROTECTED]

  - *

  - * 4. Products derived from this Software may not be called "OpenEJB"

  - *    nor may "OpenEJB" appear in their names without prior written

  - *    permission of The OpenEJB Group. OpenEJB is a registered

  - *    trademark of The OpenEJB Group.

  - *

  - * 5. Due credit should be given to the OpenEJB Project

  - *    (http://openejb.org/).

  - *

  - * THIS SOFTWARE IS PROVIDED BY THE OPENEJB GROUP AND CONTRIBUTORS

  - * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT

  - * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

  - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL

  - * THE OPENEJB GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,

  - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES

  - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR

  - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

  - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,

  - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

  - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED

  - * OF THE POSSIBILITY OF SUCH DAMAGE.

  - *

  - * ====================================================================

  - *

  - * This software consists of voluntary contributions made by many

  - * individuals on behalf of the OpenEJB Project.  For more information

  - * please see <http://openejb.org/>.

  - *

  - * ====================================================================

  - */

  -package org.openejb.deployment.entity.cmp.cmr;

  -

  -import java.io.File;

  -import java.net.URI;

  -import java.sql.Connection;

  -import java.util.Collections;

  -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.jmx.GBeanMBean;

  -import org.apache.geronimo.j2ee.deployment.EARContext;

  -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.jmx.MBeanProxyFactory;

  -import org.apache.geronimo.naming.java.ReadOnlyContext;

  -import org.apache.geronimo.transaction.context.ContainerTransactionContext;

  -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.deployment.DeploymentHelper;

  -import org.openejb.deployment.MockConnectionProxyFactory;

  -import org.openejb.deployment.OpenEJBModuleBuilder;

  -import org.openejb.dispatch.InterfaceMethodSignature;

  -import org.openejb.security.SecurityConfiguration;

  -import org.openejb.transaction.ContainerPolicy;

  -import org.openejb.transaction.TransactionPolicy;

  -import org.openejb.transaction.TransactionPolicySource;

  -import org.openejb.xbeans.ejbjar.OpenejbOpenejbJarDocument;

  -import org.openejb.xbeans.ejbjar.OpenejbOpenejbJarType;

  -import org.tranql.cache.GlobalSchema;

  -import org.tranql.ejb.EJB;

  -import org.tranql.ejb.EJBSchema;

  -import org.tranql.ejb.TransactionManagerDelegate;

  -import org.tranql.sql.sql92.SQL92Schema;

  -

  -//import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

  -

  -/**

  - *

  - * @version $Revision$ $Date$

  - */

  -public abstract class AbstractCMRTest extends TestCase {

  -    private static final File basedir = new 
File(System.getProperty("basedir", System.getProperty("user.dir")));

  -    

  -    private static final String j2eeDomainName = "openejb.server";

  -    private static final String j2eeServerName = "TestOpenEJBServer";

  -    private static final J2eeContext j2eeContext = new 
J2eeContextImpl(j2eeDomainName, j2eeServerName, NameFactory.NULL, "MockModule", 
"testapp", NameFactory.J2EE_MODULE);

  -    protected static final ObjectName CI_NAME = 
JMXUtil.getObjectName("openejb.server:role=ContainerIndex");

  -    protected static final ObjectName C_NAME_A;

  -    protected static final ObjectName C_NAME_B;

  -    static {

  -

  -        try {

  -            C_NAME_A = NameFactory.getEjbComponentName(null, null, 
null,null, "A", NameFactory.ENTITY_BEAN, j2eeContext);

  -            C_NAME_B = NameFactory.getEjbComponentName(null, null, 
null,null, "B", NameFactory.ENTITY_BEAN, j2eeContext);

  -        } catch (MalformedObjectNameException e) {

  -            throw new AssertionError(e);

  -        }

  -    }

  -    protected Kernel kernel;

  -    protected DataSource ds;

  -    protected EJBSchema ejbSchema;

  -    protected SQL92Schema sqlSchema;

  -    protected GlobalSchema cacheSchema;

  -    protected Object ahome;

  -    protected Object bhome;

  -    

  -    protected ContainerTransactionContext newTransactionContext() throws 
Exception {

  -        return (ContainerTransactionContext) 
kernel.invoke(DeploymentHelper.TRANSACTIONCONTEXTMANAGER_NAME, 
"newContainerTransactionContext", null, null);

  -    }

  -    

  -    protected abstract void buildDBSchema(Connection c) throws Exception;

  -    protected abstract String getEjbJarDD();

  -    protected abstract String getOpenEjbJarDD();

  -    protected abstract EJBClass getA();

  -    protected abstract EJBClass getB();

  -    

  -    protected void setUp() throws Exception {

  -//        MysqlDataSource mysqlDataSource = new MysqlDataSource();

  -//        mysqlDataSource.setUser("geronimo");

  -//        mysqlDataSource.setPassword("geronimo");

  -//        mysqlDataSource.setURL("jdbc:mysql://localhost/geronimo");

  -//   

  -//        ds = mysqlDataSource;

  -        ds = new AxionDataSource("jdbc:axiondb:testdb");

  -        Connection c = ds.getConnection("root", null);

  -        buildDBSchema(c);

  -

  -        kernel = 
DeploymentHelper.setUpKernelWithTransactionManager("ContainerManagedPersistenceTest");

  -        DeploymentHelper.setUpTimer(kernel);

  -

  -        TransactionManager tm = (TransactionManager) 
MBeanProxyFactory.getProxy(

  -            TransactionManager.class, kernel.getMBeanServer(), 

  -            DeploymentHelper.TRANSACTIONMANAGER_NAME );

  -        TransactionManagerDelegate tmDelegate =  new 
TransactionManagerDelegate();

  -        tmDelegate.setTransactionManager(tm);

  -

  -        ejbSchema = new EJBSchema("Mock");

  -        sqlSchema = new SQL92Schema("Mock", ds);

  -        cacheSchema = new GlobalSchema("Mock");

  -

  -        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();

  -        

  -        OpenEJBModuleBuilder moduleBuilder = new OpenEJBModuleBuilder(null, 
null);

  -        CMPEntityBuilderTestUtil builder = new 
CMPEntityBuilderTestUtil(moduleBuilder);

  -        File tempDir = DeploymentUtil.createTempDir();

  -        try {

  -            EARContext earContext = new EARContext(tempDir,

  -                    new URI("test"),

  -                    ConfigurationModuleType.EJB,

  -                    null,

  -                    null,

  -                    j2eeDomainName,

  -                    j2eeServerName,

  -                    NameFactory.NULL,

  -                    null,

  -                    null,

  -                    null,

  -                    null,

  -                    null);

  -

  -            ClassLoader cl = Thread.currentThread().getContextClassLoader();

  -            builder.buildCMPSchema(earContext, j2eeContext, ejbJarType, 
openejbJarType, cl, ejbSchema, sqlSchema, cacheSchema);

  -

  -            GBeanMBean containerIndex = new 
GBeanMBean(ContainerIndex.GBEAN_INFO);

  -            Set patterns = new HashSet();

  -            patterns.add(C_NAME_A);

  -            patterns.add(C_NAME_B);

  -            containerIndex.setReferencePatterns("EJBContainers", patterns);

  -            start(CI_NAME, containerIndex);

  -

  -            GBeanMBean connectionProxyFactoryGBean = new 
GBeanMBean(MockConnectionProxyFactory.GBEAN_INFO);

  -            ObjectName connectionProxyFactoryObjectName = 
NameFactory.getResourceComponentName(null, null, null, "jcamodule", "testcf", 
NameFactory.JCA_CONNECTION_FACTORY, j2eeContext);

  -            kernel.loadGBean(connectionProxyFactoryObjectName, 
connectionProxyFactoryGBean);

  -            kernel.startGBean(connectionProxyFactoryObjectName);

  -

  -            setUpContainer(ejbSchema.getEJB("A"), getA().bean, getA().home, 
getA().local, C_NAME_A, tmDelegate);

  -            setUpContainer(ejbSchema.getEJB("B"), getB().bean, getB().home, 
getB().local, C_NAME_B, tmDelegate);

  -

  -            ahome = kernel.getAttribute(C_NAME_A, "ejbLocalHome");

  -            bhome = kernel.getAttribute(C_NAME_B, "ejbLocalHome");

  -        } finally {

  -            DeploymentUtil.recursiveDelete(tempDir);

  -        }

  -    }

  -    

  -    private void setUpContainer(EJB ejb, Class beanClass, Class homeClass, 
Class localClass, ObjectName containerName, TransactionManagerDelegate 
tmDelegate) throws Exception {

  -        CMPContainerBuilder builder = new CMPContainerBuilder();

  -        builder.setClassLoader(this.getClass().getClassLoader());

  -        builder.setContainerId(containerName.getCanonicalName());

  -        builder.setEJBName(ejb.getName());

  -        builder.setBeanClassName(beanClass.getName());

  -        builder.setHomeInterfaceName(null);

  -        builder.setLocalHomeInterfaceName(homeClass.getName());

  -        builder.setRemoteInterfaceName(null);

  -        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 TransactionPolicy getTransactionPolicy(String methodIntf, 
InterfaceMethodSignature signature) {

  -                return ContainerPolicy.Required;

  -            }

  -        });

  -        builder.setSecurityConfiguration(new SecurityConfiguration());

  -        builder.setEJBSchema(ejbSchema);

  -        builder.setSQLSchema(sqlSchema);

  -        builder.setGlobalSchema(cacheSchema);

  -        builder.setComponentContext(new ReadOnlyContext());

  -//        builder.setConnectionFactoryName("defaultDatasource");

  -        builder.setTransactionManagerDelegate(tmDelegate);

  -        builder.setQueries(new HashMap());

  -

  -        GBeanMBean container = builder.createConfiguration();

  -

  -        container.setReferencePatterns("TransactionContextManager", 
Collections.singleton(DeploymentHelper.TRANSACTIONCONTEXTMANAGER_NAME));

  -        container.setReferencePatterns("TrackedConnectionAssociator", 
Collections.singleton(DeploymentHelper.TRACKEDCONNECTIONASSOCIATOR_NAME));

  -        container.setReferencePattern("Timer", 
DeploymentHelper.TRANSACTIONALTIMER_NAME);

  -        start(containerName, container);

  -    }

  -    

  -    protected void tearDown() throws Exception {

  -        kernel.shutdown();

  -        java.sql.Connection c = ds.getConnection();

  -        c.createStatement().execute("SHUTDOWN");

  -    }

  -

  -    private void start(ObjectName name, GBeanMBean instance) throws 
Exception {

  -        kernel.loadGBean(name, instance);

  -        kernel.startGBean(name);

  -    }

  -

  -    private void stop(ObjectName name) throws Exception {

  -        kernel.stopGBean(name);

  -        kernel.unloadGBean(name);

  -    }

  -    

  -    protected class EJBClass {

  -        public EJBClass(Class bean, Class home, Class local) {

  -            this.bean = bean;

  -            this.home = home;

  -            this.local = local;

  -        };

  -        public Class bean;

  -        public Class home;

  -        public Class local;

  -    }

  -}

  +/* ====================================================================
  +
  + * Redistribution and use of this software and associated documentation
  +
  + * ("Software"), with or without modification, are permitted provided
  +
  + * that the following conditions are met:
  +
  + *
  +
  + * 1. Redistributions of source code must retain copyright
  +
  + *    statements and notices.  Redistributions must also contain a
  +
  + *    copy of this document.
  +
  + *
  +
  + * 2. Redistributions in binary form must reproduce this list of
  +
  + *    conditions and the following disclaimer in the documentation
  +
  + *    and/or other materials provided with the distribution.
  +
  + *
  +
  + * 3. The name "OpenEJB" must not be used to endorse or promote
  +
  + *    products derived from this Software without prior written
  +
  + *    permission of The OpenEJB Group.  For written permission,
  +
  + *    please contact [EMAIL PROTECTED]
  +
  + *
  +
  + * 4. Products derived from this Software may not be called "OpenEJB"
  +
  + *    nor may "OpenEJB" appear in their names without prior written
  +
  + *    permission of The OpenEJB Group. OpenEJB is a registered
  +
  + *    trademark of The OpenEJB Group.
  +
  + *
  +
  + * 5. Due credit should be given to the OpenEJB Project
  +
  + *    (http://openejb.org/).
  +
  + *
  +
  + * THIS SOFTWARE IS PROVIDED BY THE OPENEJB GROUP AND CONTRIBUTORS
  +
  + * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
  +
  + * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  +
  + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
  +
  + * THE OPENEJB GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
  +
  + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  +
  + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  +
  + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  +
  + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  +
  + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  +
  + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  +
  + * OF THE POSSIBILITY OF SUCH DAMAGE.
  +
  + *
  +
  + * ====================================================================
  +
  + *
  +
  + * This software consists of voluntary contributions made by many
  +
  + * individuals on behalf of the OpenEJB Project.  For more information
  +
  + * please see <http://openejb.org/>.
  +
  + *
  +
  + * ====================================================================
  +
  + */
  +
  +package org.openejb.deployment.entity.cmp.cmr;
  +
  +
  +
  +import java.io.File;
  +
  +import java.net.URI;
  +
  +import java.sql.Connection;
  +
  +import java.util.Collections;
  +
  +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.jmx.GBeanMBean;
  +
  +import org.apache.geronimo.j2ee.deployment.EARContext;
  +
  +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.jmx.MBeanProxyFactory;
  +
  +import org.apache.geronimo.naming.java.ReadOnlyContext;
  +
  +import org.apache.geronimo.transaction.context.ContainerTransactionContext;
  +
  +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.deployment.DeploymentHelper;
  +
  +import org.openejb.deployment.MockConnectionProxyFactory;
  +
  +import org.openejb.deployment.OpenEJBModuleBuilder;
  +
  +import org.openejb.dispatch.InterfaceMethodSignature;
  +
  +import org.openejb.security.SecurityConfiguration;
  +
  +import org.openejb.transaction.ContainerPolicy;
  +
  +import org.openejb.transaction.TransactionPolicy;
  +
  +import org.openejb.transaction.TransactionPolicySource;
  +
  +import org.openejb.xbeans.ejbjar.OpenejbOpenejbJarDocument;
  +
  +import org.openejb.xbeans.ejbjar.OpenejbOpenejbJarType;
  +
  +import org.tranql.cache.GlobalSchema;
  +
  +import org.tranql.ejb.EJB;
  +
  +import org.tranql.ejb.EJBSchema;
  +
  +import org.tranql.ejb.TransactionManagerDelegate;
  +
  +import org.tranql.sql.sql92.SQL92Schema;
  +
  +
  +
  +//import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
  +
  +
  +
  +/**
  +
  + *
  +
  + * @version $Revision$ $Date$
  +
  + */
  +
  +public abstract class AbstractCMRTest extends TestCase {
  +
  +    private static final File basedir = new 
File(System.getProperty("basedir", System.getProperty("user.dir")));
  +
  +    
  +
  +    private static final String j2eeDomainName = "openejb.server";
  +
  +    private static final String j2eeServerName = "TestOpenEJBServer";
  +
  +    private static final J2eeContext j2eeContext = new 
J2eeContextImpl(j2eeDomainName, j2eeServerName, NameFactory.NULL, "MockModule", 
"testapp", NameFactory.J2EE_MODULE);
  +
  +    protected static final ObjectName CI_NAME = 
JMXUtil.getObjectName("openejb.server:role=ContainerIndex");
  +
  +    protected static final ObjectName C_NAME_A;
  +
  +    protected static final ObjectName C_NAME_B;
  +
  +    static {
  +
  +
  +
  +        try {
  +
  +            C_NAME_A = NameFactory.getEjbComponentName(null, null, 
null,null, "A", NameFactory.ENTITY_BEAN, j2eeContext);
  +
  +            C_NAME_B = NameFactory.getEjbComponentName(null, null, 
null,null, "B", NameFactory.ENTITY_BEAN, j2eeContext);
  +
  +        } catch (MalformedObjectNameException e) {
  +
  +            throw new AssertionError(e);
  +
  +        }
  +
  +    }
  +
  +    protected Kernel kernel;
  +
  +    protected DataSource ds;
  +
  +    protected EJBSchema ejbSchema;
  +
  +    protected SQL92Schema sqlSchema;
  +
  +    protected GlobalSchema cacheSchema;
  +
  +    protected Object ahome;
  +
  +    protected Object bhome;
  +
  +    
  +
  +    protected ContainerTransactionContext newTransactionContext() throws 
Exception {
  +
  +        return (ContainerTransactionContext) 
kernel.invoke(DeploymentHelper.TRANSACTIONCONTEXTMANAGER_NAME, 
"newContainerTransactionContext", null, null);
  +
  +    }
  +
  +    
  +
  +    protected abstract void buildDBSchema(Connection c) throws Exception;
  +
  +    protected abstract String getEjbJarDD();
  +
  +    protected abstract String getOpenEjbJarDD();
  +
  +    protected abstract EJBClass getA();
  +
  +    protected abstract EJBClass getB();
  +
  +    
  +
  +    protected void setUp() throws Exception {
  +
  +//        MysqlDataSource mysqlDataSource = new MysqlDataSource();
  +
  +//        mysqlDataSource.setUser("geronimo");
  +
  +//        mysqlDataSource.setPassword("geronimo");
  +
  +//        mysqlDataSource.setURL("jdbc:mysql://localhost/geronimo");
  +
  +//   
  +
  +//        ds = mysqlDataSource;
  +
  +        ds = new AxionDataSource("jdbc:axiondb:testdb");
  +
  +        Connection c = ds.getConnection("root", null);
  +
  +        buildDBSchema(c);
  +
  +
  +
  +        kernel = 
DeploymentHelper.setUpKernelWithTransactionManager("ContainerManagedPersistenceTest");
  +
  +        DeploymentHelper.setUpTimer(kernel);
  +
  +
  +
  +        TransactionManager tm = (TransactionManager) 
MBeanProxyFactory.getProxy(
  +
  +            TransactionManager.class, kernel.getMBeanServer(), 
  +
  +            DeploymentHelper.TRANSACTIONMANAGER_NAME );
  +
  +        TransactionManagerDelegate tmDelegate =  new 
TransactionManagerDelegate();
  +
  +        tmDelegate.setTransactionManager(tm);
  +
  +
  +
  +        ejbSchema = new EJBSchema("Mock");
  +
  +        sqlSchema = new SQL92Schema("Mock", ds);
  +
  +        cacheSchema = new GlobalSchema("Mock");
  +
  +
  +
  +        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();
  +
  +        
  +
  +        OpenEJBModuleBuilder moduleBuilder = new OpenEJBModuleBuilder(null, 
null, null);
  +
  +        CMPEntityBuilderTestUtil builder = new 
CMPEntityBuilderTestUtil(moduleBuilder);
  +
  +        File tempDir = DeploymentUtil.createTempDir();
  +
  +        try {
  +
  +            EARContext earContext = new EARContext(tempDir,
  +
  +                    new URI("test"),
  +
  +                    ConfigurationModuleType.EJB,
  +
  +                    null,
  +
  +                    null,
  +
  +                    j2eeDomainName,
  +
  +                    j2eeServerName,
  +
  +                    NameFactory.NULL,
  +
  +                    null,
  +
  +                    null,
  +
  +                    null,
  +
  +                    null,
  +
  +                    null);
  +
  +
  +
  +            ClassLoader cl = Thread.currentThread().getContextClassLoader();
  +
  +            builder.buildCMPSchema(earContext, j2eeContext, ejbJarType, 
openejbJarType, cl, ejbSchema, sqlSchema, cacheSchema);
  +
  +
  +
  +            GBeanMBean containerIndex = new 
GBeanMBean(ContainerIndex.GBEAN_INFO);
  +
  +            Set patterns = new HashSet();
  +
  +            patterns.add(C_NAME_A);
  +
  +            patterns.add(C_NAME_B);
  +
  +            containerIndex.setReferencePatterns("EJBContainers", patterns);
  +
  +            start(CI_NAME, containerIndex);
  +
  +
  +
  +            GBeanMBean connectionProxyFactoryGBean = new 
GBeanMBean(MockConnectionProxyFactory.GBEAN_INFO);
  +
  +            ObjectName connectionProxyFactoryObjectName = 
NameFactory.getResourceComponentName(null, null, null, "jcamodule", "testcf", 
NameFactory.JCA_CONNECTION_FACTORY, j2eeContext);
  +
  +            kernel.loadGBean(connectionProxyFactoryObjectName, 
connectionProxyFactoryGBean);
  +
  +            kernel.startGBean(connectionProxyFactoryObjectName);
  +
  +
  +
  +            setUpContainer(ejbSchema.getEJB("A"), getA().bean, getA().home, 
getA().local, C_NAME_A, tmDelegate);
  +
  +            setUpContainer(ejbSchema.getEJB("B"), getB().bean, getB().home, 
getB().local, C_NAME_B, tmDelegate);
  +
  +
  +
  +            ahome = kernel.getAttribute(C_NAME_A, "ejbLocalHome");
  +
  +            bhome = kernel.getAttribute(C_NAME_B, "ejbLocalHome");
  +
  +        } finally {
  +
  +            DeploymentUtil.recursiveDelete(tempDir);
  +
  +        }
  +
  +    }
  +
  +    
  +
  +    private void setUpContainer(EJB ejb, Class beanClass, Class homeClass, 
Class localClass, ObjectName containerName, TransactionManagerDelegate 
tmDelegate) throws Exception {
  +
  +        CMPContainerBuilder builder = new CMPContainerBuilder();
  +
  +        builder.setClassLoader(this.getClass().getClassLoader());
  +
  +        builder.setContainerId(containerName.getCanonicalName());
  +
  +        builder.setEJBName(ejb.getName());
  +
  +        builder.setBeanClassName(beanClass.getName());
  +
  +        builder.setHomeInterfaceName(null);
  +
  +        builder.setLocalHomeInterfaceName(homeClass.getName());
  +
  +        builder.setRemoteInterfaceName(null);
  +
  +        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 TransactionPolicy getTransactionPolicy(String methodIntf, 
InterfaceMethodSignature signature) {
  +
  +                return ContainerPolicy.Required;
  +
  +            }
  +
  +        });
  +
  +        builder.setSecurityConfiguration(new SecurityConfiguration());
  +
  +        builder.setEJBSchema(ejbSchema);
  +
  +        builder.setSQLSchema(sqlSchema);
  +
  +        builder.setGlobalSchema(cacheSchema);
  +
  +        builder.setComponentContext(new ReadOnlyContext());
  +
  +//        builder.setConnectionFactoryName("defaultDatasource");
  +
  +        builder.setTransactionManagerDelegate(tmDelegate);
  +
  +        builder.setQueries(new HashMap());
  +
  +
  +
  +        GBeanMBean container = builder.createConfiguration();
  +
  +
  +
  +        container.setReferencePatterns("TransactionContextManager", 
Collections.singleton(DeploymentHelper.TRANSACTIONCONTEXTMANAGER_NAME));
  +
  +        container.setReferencePatterns("TrackedConnectionAssociator", 
Collections.singleton(DeploymentHelper.TRACKEDCONNECTIONASSOCIATOR_NAME));
  +
  +        container.setReferencePattern("Timer", 
DeploymentHelper.TRANSACTIONALTIMER_NAME);
  +
  +        start(containerName, container);
  +
  +    }
  +
  +    
  +
  +    protected void tearDown() throws Exception {
  +
  +        kernel.shutdown();
  +
  +        java.sql.Connection c = ds.getConnection();
  +
  +        c.createStatement().execute("SHUTDOWN");
  +
  +    }
  +
  +
  +
  +    private void start(ObjectName name, GBeanMBean instance) throws 
Exception {
  +
  +        kernel.loadGBean(name, instance);
  +
  +        kernel.startGBean(name);
  +
  +    }
  +
  +
  +
  +    private void stop(ObjectName name) throws Exception {
  +
  +        kernel.stopGBean(name);
  +
  +        kernel.unloadGBean(name);
  +
  +    }
  +
  +    
  +
  +    protected class EJBClass {
  +
  +        public EJBClass(Class bean, Class home, Class local) {
  +
  +            this.bean = bean;
  +
  +            this.home = home;
  +
  +            this.local = local;
  +
  +        };
  +
  +        public Class bean;
  +
  +        public Class home;
  +
  +        public Class local;
  +
  +    }
  +
  +}
  +
  
  
  

Reply via email to