dain 2004/04/11 01:55:25
Modified: modules/core/src/test/org/openejb/entity
BasicCMPEntityContainerTest.java
Log:
Added cmp-field support
Revision Changes Path
1.3 +109 -89
openejb/modules/core/src/test/org/openejb/entity/BasicCMPEntityContainerTest.java
Index: BasicCMPEntityContainerTest.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/test/org/openejb/entity/BasicCMPEntityContainerTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BasicCMPEntityContainerTest.java 21 Mar 2004 20:29:24 -0000 1.2
+++ BasicCMPEntityContainerTest.java 11 Apr 2004 05:55:25 -0000 1.3
@@ -47,44 +47,61 @@
*/
package org.openejb.entity;
+import java.sql.Connection;
+import java.sql.Statement;
+import java.util.Collections;
+import java.util.HashSet;
import javax.management.ObjectName;
+import javax.sql.DataSource;
+
+import
org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrackingCoordinator;
+import org.apache.geronimo.gbean.jmx.GBeanMBean;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.jmx.JMXUtil;
+import org.apache.geronimo.naming.java.ReadOnlyContext;
+import org.apache.geronimo.transaction.TransactionManagerProxy;
import junit.framework.TestCase;
+import org.axiondb.jdbc.AxionDataSource;
+import org.openejb.MockTransactionManager;
+import org.openejb.deployment.TransactionPolicySource;
+import org.openejb.dispatch.InterfaceMethodSignature;
+import org.openejb.entity.cmp.CMPContainerBuilder;
+import org.openejb.transaction.ContainerPolicy;
+import org.openejb.transaction.TransactionPolicy;
+import org.tranql.ejb.CMPField;
+import org.tranql.ejb.EJB;
/**
* @version $Revision$ $Date$
*/
public class BasicCMPEntityContainerTest extends TestCase {
-// private static final ObjectName CONTAINER_NAME =
JMXUtil.getObjectName("geronimo.test:ejb=Mock");
-// private static final ObjectName TM_NAME =
JMXUtil.getObjectName("geronimo.test:role=TransactionManager");
-// private static final ObjectName TCA_NAME =
JMXUtil.getObjectName("geronimo.test:role=TrackedConnectionAssociator");
-// private org.openejb.EJBContainerConfiguration config;
-// private Kernel kernel;
-// private GBeanMBean container;
-// private MBeanServer mbServer;
-//
-// static {
-// new org.hsqldb.jdbcDriver();
-// }
-//
-// private final jdbcDataSource ds = new jdbcDataSource();
+ private static final ObjectName CONTAINER_NAME =
JMXUtil.getObjectName("geronimo.test:ejb=Mock");
+ private static final ObjectName TM_NAME =
JMXUtil.getObjectName("geronimo.test:role=TransactionManager");
+ private static final ObjectName TCA_NAME =
JMXUtil.getObjectName("geronimo.test:role=TrackedConnectionAssociator");
+ private Kernel kernel;
+ private GBeanMBean container;
+
+ private DataSource ds;
public void testLocalInvoke() throws Exception {
-// Connection c = initDatabase();
-//
-// MockLocalHome home = (MockLocalHome) mbServer.invoke(CONTAINER_NAME,
"getEJBLocalHome", null, null);
-// assertEquals(2, home.intMethod(1));
-//
+ MockLocalHome home = (MockLocalHome) kernel.getAttribute(CONTAINER_NAME,
"EJBLocalHome");
+ assertEquals(2, home.intMethod(1));
+
// MockLocal local = home.findByPrimaryKey(new Integer(1));
-// assertEquals(3, local.intMethod(1));
-// assertEquals(1, local.getIntField());
-// c.close();
+ Integer pk = new Integer(33);
+ String value = "Thirty-Three";
+ MockLocal local = home.create(pk, value);
+ int number = 44;
+ assertEquals(1 + number + pk.intValue(), local.intMethod(number));
+ assertEquals(pk, local.getPrimaryKey());
+ assertEquals(value, local.getValue());
}
public void testFields() throws Exception {
// Connection c = initDatabase();
// Statement s = c.createStatement();
-// MockLocalHome home = (MockLocalHome) mbServer.invoke(CONTAINER_NAME,
"getEJBLocalHome", null, null);
+// MockLocalHome home = (MockLocalHome) kernel.getAttribute(CONTAINER_NAME,
"EJBLocalHome");
// MockLocal local = home.findByPrimaryKey(new Integer(1));
// assertEquals("Hello", local.getValue());
// local.setValue("World");
@@ -153,31 +170,16 @@
protected void setUp() throws Exception {
super.setUp();
-//
-// ds.setDatabase(".");
-// ds.setUser("sa");
-// ds.setPassword("");
-//
-// config = new org.openejb.EJBContainerConfiguration();
- //config.uri = new URI("async", null, "localhost", 3434, "/JMX", null,
CONTAINER_NAME.toString());
-// config.beanClassName = MockCMPEJB.class.getName();
-// config.homeInterfaceName = MockHome.class.getName();
-// config.localHomeInterfaceName = MockLocalHome.class.getName();
-// config.remoteInterfaceName = MockRemote.class.getName();
-// config.localInterfaceName = MockLocal.class.getName();
-// config.txnDemarcation = TransactionDemarcation.CONTAINER;
-// config.pkClassName = Integer.class.getName();
-// config.unshareableResources = new HashSet();
-// config.transactionPolicySource = new TransactionPolicySource() {
-// public TransactionPolicy getTransactionPolicy(String methodIntf,
MethodSignature signature) {
-// return ContainerPolicy.Required;
-// }
-//
-// public TransactionPolicy getTransactionPolicy(String methodIntf,
String methodName, String[] parameterTypes) {
-// return ContainerPolicy.Required;
-// }
-// };
-//
+
+ // initialize the database
+ ds = new AxionDataSource("jdbc:axiondb:testdb");
+ Connection c = ds.getConnection();
+ Statement s = c.createStatement();
+ s.execute("CREATE TABLE MOCK(ID INTEGER, VALUE VARCHAR(50))");
+ s.execute("INSERT INTO MOCK(ID, VALUE) VALUES(1, 'Hello')");
+ s.close();
+ c.close();
+
// SimpleCommandFactory persistenceFactory = new SimpleCommandFactory(ds);
// ArrayList queries = new ArrayList();
// MethodSignature signature;
@@ -211,52 +213,70 @@
// cmpConfig.cmpFieldNames = new String[]{"id", "value"};
// cmpConfig.relations = new CMRelation[]{};
// cmpConfig.schema = "Mock";
-//
-// kernel = new Kernel("ContainerManagedPersistenceTest");
-// kernel.boot();
-// mbServer = kernel.getMBeanServer();
-//
-// GBeanMBean transactionManager = new
GBeanMBean(TransactionManagerProxy.GBEAN_INFO);
-// transactionManager.setAttribute("Delegate", new MockTransactionManager());
-// start(TM_NAME, transactionManager);
-//
-// GBeanMBean trackedConnectionAssociator = new
GBeanMBean(ConnectionTrackingCoordinator.GBEAN_INFO);
-// start(TCA_NAME, trackedConnectionAssociator);
-//
-// container = new GBeanMBean(CMPEntityContainer.GBEAN_INFO);
-// container.setAttribute("EJBContainerConfiguration", config);
-// container.setAttribute("CMPConfiguration", cmpConfig);
-// container.setReferencePatterns("TransactionManager",
Collections.singleton(TM_NAME));
-// container.setReferencePatterns("TrackedConnectionAssociator",
Collections.singleton(TCA_NAME));
-// start(CONTAINER_NAME, container);
-//
- }
-
- private void start(ObjectName name, Object instance) throws Exception {
-// mbServer.registerMBean(instance, name);
-// mbServer.invoke(name, "start", null, null);
- }
- private void stop(ObjectName name) throws Exception {
-// mbServer.invoke(name, "stop", null, null);
-// mbServer.unregisterMBean(name);
+ CMPContainerBuilder builder = new CMPContainerBuilder();
+ builder.setClassLoader(this.getClass().getClassLoader());
+ builder.setContainerId(CONTAINER_NAME);
+ builder.setEJBName("MockEJB");
+ builder.setBeanClassName(MockCMPEJB.class.getName());
+ builder.setHomeInterfaceName(MockHome.class.getName());
+ builder.setLocalHomeInterfaceName(MockLocalHome.class.getName());
+ builder.setRemoteInterfaceName(MockRemote.class.getName());
+ builder.setLocalInterfaceName(MockLocal.class.getName());
+ builder.setPrimaryKeyClassName(Integer.class.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.setComponentContext(new ReadOnlyContext());
+
+ EJB ejb = new EJB("MockEJB", "MOCK");
+ ejb.addCMPField(new CMPField("id", Integer.class, true));
+ ejb.addCMPField(new CMPField("value", String.class, false));
+ builder.setEJB(ejb);
+ builder.setDataSource(ds);
+ container = builder.createConfiguration();
+
+ kernel = new Kernel("BeanManagedPersistenceTest");
+ kernel.boot();
+
+
+ kernel = new Kernel("ContainerManagedPersistenceTest");
+ kernel.boot();
+
+ GBeanMBean transactionManager = new
GBeanMBean(TransactionManagerProxy.GBEAN_INFO);
+ transactionManager.setAttribute("Delegate", new MockTransactionManager());
+ start(TM_NAME, transactionManager);
+
+ GBeanMBean trackedConnectionAssociator = new
GBeanMBean(ConnectionTrackingCoordinator.GBEAN_INFO);
+ start(TCA_NAME, trackedConnectionAssociator);
+
+ //start the ejb container
+ container.setReferencePatterns("TransactionManager",
Collections.singleton(TM_NAME));
+ container.setReferencePatterns("TrackedConnectionAssociator",
Collections.singleton(TCA_NAME));
+ start(CONTAINER_NAME, container);
}
-
protected void tearDown() throws Exception {
-// stop(TM_NAME);
-// stop(TCA_NAME);
-// stop(CONTAINER_NAME);
-// kernel.shutdown();
+ stop(TM_NAME);
+ stop(TCA_NAME);
+ stop(CONTAINER_NAME);
+ kernel.shutdown();
+ java.sql.Connection c = ds.getConnection();
+ c.createStatement().execute("SHUTDOWN");
}
-// private Connection initDatabase() throws SQLException {
-// Connection c = ds.getConnection();
-// Statement s = c.createStatement();
-// s.execute("CREATE TABLE MOCK(ID INTEGER, VALUE VARCHAR(50))");
-// s.execute("INSERT INTO MOCK(ID, VALUE) VALUES(1, 'Hello')");
-// s.close();
-// return c;
-// }
+ 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);
+ }
}