Modified: branches/v2_1/openejb2/modules/openejb-builder/src/test/org/openejb/deployment/DeploymentHelper.java (2585 => 2586)
--- branches/v2_1/openejb2/modules/openejb-builder/src/test/org/openejb/deployment/DeploymentHelper.java 2006-03-27 00:56:03 UTC (rev 2585)
+++ branches/v2_1/openejb2/modules/openejb-builder/src/test/org/openejb/deployment/DeploymentHelper.java 2006-03-28 00:13:43 UTC (rev 2586)
@@ -112,7 +112,6 @@
* @version $Revision$ $Date$
*/
public class DeploymentHelper extends TestCase {
-
public static final Environment DEFAULT_ENVIRONMENT = new Environment();
public static final Environment ENVIRONMENT = new Environment();
@@ -135,6 +134,7 @@
protected Kernel kernel;
public AbstractName ctcName;
+ public AbstractName tmName;
public AbstractName tcmName;
public AbstractName txTimerName;
public AbstractName nonTxTimerName;
@@ -150,6 +150,7 @@
protected final AbstractName CONTAINER_NAME = new AbstractName(testConfigurationArtifact, Collections.singletonMap("ejb", "Mock"));
protected void setUp() throws Exception {
+ super.setUp();
defaultEnvironment.getProperties().put(NameFactory.JSR77_BASE_NAME_PROPERTY, BASE_NAME);
cl = this.getClass().getClassLoader();
kernel = KernelFactory.newInstance().createKernel("test");
@@ -181,11 +182,12 @@
xidFactory.setAttribute("tmId", "tmId".getBytes());
GBeanData tm = bootstrap.addGBean("TransactionManager", TransactionManagerImplGBean.GBEAN_INFO);
+ tmName = tm.getAbstractName();
tm.setReferencePattern("XidFactory", xidFactory.getAbstractName());
tm.setAttribute("defaultTransactionTimeoutSeconds", new Integer(10));
GBeanData tcm = bootstrap.addGBean("TransactionContextManager", TransactionContextManagerGBean.GBEAN_INFO);
- tcm.setReferencePattern("TransactionManager", tm.getAbstractName());
+ tcm.setReferencePattern("TransactionManager", tmName);
tcmName = tcm.getAbstractName();
ctcName = bootstrap.addGBean("ConnectionTrackingCoordinator", ConnectionTrackingCoordinatorGBean.GBEAN_INFO).getAbstractName();
@@ -256,17 +258,12 @@
}
- private AbstractName createConnectionObjectName(Artifact artifact) {
- AbstractName jcaResourceName = createJCAResourceName(artifact);
- AbstractName jcaConnectionFactoryName = naming.createChildName(jcaResourceName, "DefaultDatasource", NameFactory.JCA_CONNECTION_FACTORY);
- return naming.createChildName(jcaConnectionFactoryName, "DefaultDatasource", NameFactory.JCA_MANAGED_CONNECTION_FACTORY);
- }
private AbstractName createJCAResourceAdapterName(Artifact artifact) {
AbstractName jcaResourceName = createJCAResourceName(artifact);
return naming.createChildName(jcaResourceName, "MockRA", NameFactory.JCA_RESOURCE_ADAPTER);
}
- private AbstractName createJCAResourceName(Artifact artifact) {
+ protected AbstractName createJCAResourceName(Artifact artifact) {
AbstractName moduleName = createResourceAdapterModuleName(artifact);
AbstractName resourceAdapterName = naming.createChildName(moduleName, artifact.toString(), NameFactory.RESOURCE_ADAPTER);
AbstractName jcaResourceName = naming.createChildName(resourceAdapterName, artifact.toString(), NameFactory.JCA_RESOURCE);
@@ -281,6 +278,7 @@
protected void tearDown() throws Exception {
kernel.shutdown();
+ super.tearDown();
}
public static class MockConfigStore implements ConfigurationStore {
@@ -396,7 +394,6 @@
}
}
- /////////////////////////////
public static AbstractNameQuery createEjbNameQuery(String name, String j2eeType, String ejbModule) {
Map properties = new LinkedHashMap();
properties.put("name", name);
@@ -404,5 +401,4 @@
properties.put("EJBModule", ejbModule);
return new AbstractNameQuery(null, properties);
}
-
}
Added: branches/v2_1/openejb2/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/SerializableDataSource.java (2585 => 2586)
--- branches/v2_1/openejb2/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/SerializableDataSource.java 2006-03-27 00:56:03 UTC (rev 2585)
+++ branches/v2_1/openejb2/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/SerializableDataSource.java 2006-03-28 00:13:43 UTC (rev 2586)
@@ -0,0 +1,104 @@
+/**
+ * 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 the
+ * above copyright notice, 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.
+ *
+ * Copyright 2005 (C) The OpenEJB Group. All Rights Reserved.
+ *
+ * $Id: file,v 1.1 2005/02/18 23:22:00 user Exp $
+ */
+package org.openejb.deployment.entity.cmp;
+
+import java.io.Serializable;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.ArrayList;
+import javax.sql.DataSource;
+
+/**
+ * DO NOT USE THIS FOR A REAL DATA SOURCE!!!!!!
+ * @version $Revision$ $Date$
+ */
+public class SerializableDataSource implements DataSource, Serializable {
+ private static final long serialVersionUID = 4066474294074568165L;
+ private static final List dataSources = new ArrayList();
+
+ private transient final DataSource dataSource;
+ private final int index;
+
+ public SerializableDataSource(DataSource dataSource) {
+ this.dataSource = dataSource;
+ synchronized (dataSources) {
+ index = dataSources.size();
+ dataSources.add(dataSource);
+ }
+ }
+
+ public Connection getConnection() throws SQLException {
+ return dataSource.getConnection();
+ }
+
+ public Connection getConnection(String username, String password) throws SQLException {
+ return dataSource.getConnection(username, password);
+ }
+
+ public PrintWriter getLogWriter() throws SQLException {
+ return dataSource.getLogWriter();
+ }
+
+ public void setLogWriter(PrintWriter out) throws SQLException {
+ dataSource.setLogWriter(out);
+ }
+
+ public void setLoginTimeout(int seconds) throws SQLException {
+ dataSource.setLoginTimeout(seconds);
+ }
+
+ public int getLoginTimeout() throws SQLException {
+ return dataSource.getLoginTimeout();
+ }
+
+ protected Object readResolve() {
+ synchronized (dataSources) {
+ DataSource dataSource = (DataSource) dataSources.get(index);
+ return new SerializableDataSource(dataSource);
+ }
+ }
+}
Modified: branches/v2_1/openejb2/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/ejbql/EJBQLTest.java (2585 => 2586)
--- branches/v2_1/openejb2/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/ejbql/EJBQLTest.java 2006-03-27 00:56:03 UTC (rev 2585)
+++ branches/v2_1/openejb2/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/ejbql/EJBQLTest.java 2006-03-28 00:13:43 UTC (rev 2586)
@@ -52,41 +52,40 @@
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
+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.GBeanData;
import org.apache.geronimo.gbean.AbstractName;
import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.GBeanData;
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.config.ConfigurationData;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.ConfigurationUtil;
+import org.apache.geronimo.kernel.config.Configuration;
+import org.apache.geronimo.kernel.repository.Environment;
import org.apache.geronimo.kernel.repository.Repository;
+import org.apache.geronimo.kernel.repository.Artifact;
+import org.apache.geronimo.kernel.repository.Dependency;
+import org.apache.geronimo.kernel.repository.ImportType;
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.entity.cmp.CMPEJBContainer;
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.deployment.Schemata;
-//import org.openejb.deployment.KernelHelper;
+import org.openejb.deployment.entity.cmp.SerializableDataSource;
import org.openejb.deployment.pkgen.TranQLPKGenBuilder;
import org.openejb.dispatch.InterfaceMethodSignature;
import org.openejb.transaction.TransactionPolicySource;
@@ -103,198 +102,173 @@
/**
* @version $Revision$ $Date$
*/
-public class EJBQLTest extends TestCase {
- public void testNothing() {}
-// 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, NameFactory.EJB_MODULE, "MockModule", "testapp", NameFactory.J2EE_MODULE);
-// protected static final AbstractName CI_NAME = JMXUtil.getAbstractName("openejb.server:role=ContainerIndex");
-// protected static final AbstractName C_NAME_A;
-//
-// static {
-// try {
-// C_NAME_A = NameFactory.getEjbComponentName(null, null, null, null, "A", NameFactory.ENTITY_BEAN, j2eeContext);
-// } catch (MalformedAbstractNameException e) {
-// throw new AssertionError(e);
-// }
-// }
-//
-// private Repository repository = null;
-// private Kernel kernel;
-// private DataSource ds;
-// private EJBSchema ejbSchema;
-// private SQLSchema sqlSchema;
-// private GlobalSchema cacheSchema;
-// private AHome aHome;
-// private ALocalHome aLocalHome;
-// private TransactionManager tm;
-//
-// public void testHomeFindTest() throws Exception {
-// ARemote a = aHome.findTest("test");
-// assertEquals(new Integer(1), a.getField1());
-// }
-//
-// public void testLocalHomeFindTest() throws Exception {
-// ALocal a = aLocalHome.findTest("test");
-// assertEquals(new Integer(1), a.getField1());
-// }
-//
-// public void testSelectTest() throws Exception {
-// ALocal a = aLocalHome.selectTest("test");
-// assertEquals(new Integer(1), a.getField1());
-// }
-//
-// private void buildDBSchema(Connection c) throws Exception {
-// Statement s = c.createStatement();
-// try {
-// s.execute("DROP TABLE A");
-// } catch (SQLException e) {
-// // ignore
-// }
-//
-// s.execute("CREATE TABLE A(A1 INTEGER, A2 VARCHAR(50))");
-//
-// s.execute("INSERT INTO A(A1, A2) VALUES(1, 'test')");
-// s.close();
-// c.close();
-// }
-//
-// private String getEjbJarDD() {
-// return "src/test-cmp/ejb-ql/ejb-jar.xml";
-// }
-//
-// private String getOpenEjbJarDD() {
-// return "src/test-cmp/ejb-ql/openejb-jar.xml";
-// }
-//
-// protected void setUp() throws Exception {
-// ds = new AxionDataSource("jdbc:axiondb:testdb");
-//
-// Connection c = ds.getConnection("root", null);
-// 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();
-//
-// OpenEJBModuleBuilder moduleBuilder = new OpenEJBModuleBuilder(null, null, null, null);
-// CMPEntityBuilderTestUtil builder = new CMPEntityBuilderTestUtil(moduleBuilder);
-// TranQLPKGenBuilder pkGen = new TranQLPKGenBuilder();
-// File tempDir = DeploymentUtil.createTempDir();
-//
-// try {
-// EARContext earContext = new EARContext(tempDir,
-// KernelHelper.ENVIRONMENT,
-// ConfigurationModuleType.EJB,
-// kernel.getNaming(),
-// repository,
-// configurationStore,
-// serverName,
-// NameFactory.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);
-// Set patterns = new HashSet();
-// patterns.add(C_NAME_A);
-// containerIndex.setReferencePatterns("EJBContainers", patterns);
-// start(CI_NAME, containerIndex);
-//
-// AbstractName connectionProxyFactoryAbstractName = NameFactory.getComponentName(null, null, null, NameFactory.JCA_RESOURCE, "jcamodule", "testcf", NameFactory.JCA_CONNECTION_FACTORY, j2eeContext);
-// GBeanData connectionProxyFactoryGBean = new GBeanData(connectionProxyFactoryAbstractName, MockConnectionProxyFactory.GBEAN_INFO);
-// kernel.loadGBean(connectionProxyFactoryGBean, this.getClass().getClassLoader());
-// kernel.startGBean(connectionProxyFactoryAbstractName);
-//
-// FrontEndCacheDelegate cacheDelegate = new FrontEndCacheDelegate();
-// setUpContainer(ejbSchema.getEJB("A"), ABean.class, AHome.class, ARemote.class, ALocalHome.class, ALocal.class, C_NAME_A, tmDelegate, cacheDelegate);
-//
-// aLocalHome = (ALocalHome) kernel.getAttribute(C_NAME_A, "ejbLocalHome");
-// aHome = (AHome) kernel.getAttribute(C_NAME_A, "ejbHome");
-// } finally {
-// DeploymentUtil.recursiveDelete(tempDir);
-// }
-// }
-//
-//
-// private void setUpContainer(EJB ejb, Class beanClass, Class homeClass, Class remoteClass, Class localHomeClass, Class localClass, AbstractName containerName, TransactionManagerDelegate tmDelegate, FrontEndCacheDelegate cacheDelegate) throws Exception {
-// CMPContainerBuilder builder = new CMPContainerBuilder();
-// builder.setClassLoader(this.getClass().getClassLoader());
-// builder.setContainerId(containerName.toURI().toString());
-// builder.setEJBName(ejb.getName());
-// builder.setBeanClassName(beanClass.getName());
-// builder.setHomeInterfaceName(homeClass.getName());
-// builder.setLocalHomeInterfaceName(localHomeClass.getName());
-// builder.setRemoteInterfaceName(remoteClass.getName());
-// builder.setLocalInterfaceName(localHomeClass.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,
-// new AbstractNameQuery(DeploymentHelper.TRANSACTIONCONTEXTMANAGER_NAME),
-// new AbstractNameQuery(DeploymentHelper.TRACKEDCONNECTIONASSOCIATOR_NAME),
-// null);
-//
-// container.setReferencePattern("Timer", DeploymentHelper.TRANSACTIONALTIMER_NAME);
-// start(containerName, container);
-// }
-//
-// protected void tearDown() throws Exception {
-// kernel.getProxyManager().destroyProxy(tm);
-// kernel.shutdown();
-// java.sql.Connection c = ds.getConnection();
-// c.createStatement().execute("SHUTDOWN");
-// }
-//
-// private void start(AbstractName name, GBeanData instance) throws Exception {
-// instance.setAbstractName(name);
-// kernel.loadGBean(instance, this.getClass().getClassLoader());
-// kernel.startGBean(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;
-// }
+public class EJBQLTest extends DeploymentHelper {
+ private static final File basedir = new File(System.getProperty("basedir", System.getProperty("user.dir")));
+
+ private Repository repository = null;
+ private DataSource ds;
+ private EJBSchema ejbSchema;
+ private SQLSchema sqlSchema;
+ private GlobalSchema cacheSchema;
+ private AHome aHome;
+ private ALocalHome aLocalHome;
+ private TransactionManager tm;
+ private AbstractName moduleName = naming.createRootName(testConfigurationArtifact, "MockModule", NameFactory.EJB_MODULE);
+ private AbstractName containerA = naming.createChildName(moduleName, "A", NameFactory.ENTITY_BEAN);
+
+ public void testHomeFindTest() throws Exception {
+ ARemote a = aHome.findTest("test");
+ assertEquals(new Integer(1), a.getField1());
+ }
+
+ public void testLocalHomeFindTest() throws Exception {
+ ALocal a = aLocalHome.findTest("test");
+ assertEquals(new Integer(1), a.getField1());
+ }
+
+ public void testSelectTest() throws Exception {
+ ALocal a = aLocalHome.selectTest("test");
+ assertEquals(new Integer(1), a.getField1());
+ }
+
+ private void buildDBSchema(Connection c) throws Exception {
+ Statement s = c.createStatement();
+ try {
+ s.execute("DROP TABLE A");
+ } catch (SQLException e) {
+ // ignore
+ }
+
+ s.execute("CREATE TABLE A(A1 INTEGER, A2 VARCHAR(50))");
+
+ s.execute("INSERT INTO A(A1, A2) VALUES(1, 'test')");
+ s.close();
+ c.close();
+ }
+
+ private String getEjbJarDD() {
+ return "src/test-cmp/ejb-ql/ejb-jar.xml";
+ }
+
+ private String getOpenEjbJarDD() {
+ return "src/test-cmp/ejb-ql/openejb-jar.xml";
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ ds = new SerializableDataSource(new AxionDataSource("jdbc:axiondb:testdb"));
+
+ Connection c = ds.getConnection("root", null);
+ buildDBSchema(c);
+
+ tm = (TransactionManager) kernel.getProxyManager().createProxy(tmName, 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();
+
+ OpenEJBModuleBuilder moduleBuilder = new OpenEJBModuleBuilder(null, null, null, null);
+ CMPEntityBuilderTestUtil builder = new CMPEntityBuilderTestUtil(moduleBuilder);
+ TranQLPKGenBuilder pkGen = new TranQLPKGenBuilder();
+ File tempDir = DeploymentUtil.createTempDir();
+
+ try {
+ EARContext earContext = new EARContext(tempDir,
+ new Environment(testConfigurationArtifact),
+ ConfigurationModuleType.EJB,
+ kernel.getNaming(),
+ Collections.singleton(repository),
+ Collections.singleton(configStore),
+ new AbstractNameQuery(serverName),
+ moduleName,
+ new AbstractNameQuery(tcmName),
+ new AbstractNameQuery(ctcName),
+ new AbstractNameQuery(txTimerName),
+ new AbstractNameQuery(nonTxTimerName),
+ null,
+ null);
+
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ Schemata schemata = builder.buildCMPSchema(earContext, moduleName, ejbJarType, openejbJarType, cl, pkGen, ds);
+
+ ejbSchema = schemata.getEjbSchema();
+ sqlSchema = schemata.getSqlSchema();
+ cacheSchema = schemata.getGlobalSchema();
+
+ AbstractName connectionProxyFactoryAbstractName = naming.createChildName(createJCAResourceName(testConfigurationArtifact), "testcf", NameFactory.JCA_RESOURCE_ADAPTER);
+// NameFactory.getComponentName(null, null, null, NameFactory.JCA_RESOURCE, "jcamodule", "testcf", NameFactory.JCA_CONNECTION_FACTORY, j2eeContext);
+ GBeanData connectionProxyFactoryGBean = new GBeanData(connectionProxyFactoryAbstractName, MockConnectionProxyFactory.GBEAN_INFO);
+ kernel.loadGBean(connectionProxyFactoryGBean, this.getClass().getClassLoader());
+ kernel.startGBean(connectionProxyFactoryAbstractName);
+
+ FrontEndCacheDelegate cacheDelegate = new FrontEndCacheDelegate();
+ setUpContainer(ejbSchema.getEJB("A"), ABean.class, AHome.class, ARemote.class, ALocalHome.class, ALocal.class, containerA, tmDelegate, cacheDelegate);
+
+ aLocalHome = (ALocalHome) kernel.getAttribute(containerA, "ejbLocalHome");
+ aHome = (AHome) kernel.getAttribute(containerA, "ejbHome");
+ } finally {
+ DeploymentUtil.recursiveDelete(tempDir);
+ }
+ }
+
+
+ private void setUpContainer(EJB ejb, Class beanClass, Class homeClass, Class remoteClass, Class localHomeClass, Class localClass, AbstractName containerName, TransactionManagerDelegate tmDelegate, FrontEndCacheDelegate cacheDelegate) throws Exception {
+ CMPContainerBuilder builder = new CMPContainerBuilder();
+ builder.setClassLoader(this.getClass().getClassLoader());
+ builder.setContainerId(containerName.toURI().toString());
+ builder.setEJBName(ejb.getName());
+ builder.setBeanClassName(beanClass.getName());
+ builder.setHomeInterfaceName(homeClass.getName());
+ builder.setLocalHomeInterfaceName(localHomeClass.getName());
+ builder.setRemoteInterfaceName(remoteClass.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 = new GBeanData(containerA, CMPEJBContainer.GBEAN_INFO);
+ container = builder.createConfiguration(new AbstractNameQuery(tcmName),
+ new AbstractNameQuery(ctcName),
+ null,
+ container);
+
+ container.setReferencePattern("Timer", txTimerName);
+ container.setAbstractName(containerA);
+
+ // Wrap the GBeanData in a configuration
+ ConfigurationData config = new ConfigurationData(new Artifact("some", "test", "42", "car"), kernel.getNaming());
+ config.getEnvironment().addDependency(new Dependency(baseId, ImportType.ALL));
+ config.addGBean(container);
+
+ // Start the configuration
+ ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
+ Configuration configuration = configurationManager.loadConfiguration(config);
+ configurationManager.startConfiguration(configuration);
+ }
+
+ protected void tearDown() throws Exception {
+ kernel.getProxyManager().destroyProxy(tm);
+ kernel.shutdown();
+ java.sql.Connection c = ds.getConnection();
+ c.createStatement().execute("SHUTDOWN");
+ super.tearDown();
+ }
}
\ No newline at end of file