[jboss-cvs] JBossAS SVN: r87292 - in projects/ejb3/trunk/embedded: src/main/java/org/jboss/ejb3/embedded and 16 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Apr 14 11:00:18 EDT 2009


Author: wolfc
Date: 2009-04-14 11:00:18 -0400 (Tue, 14 Apr 2009)
New Revision: 87292

Added:
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/AttachmentBuilder.java
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/DeploymentBuilder.java
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/PackageBuilder.java
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/ResourceFinder.java
   projects/ejb3/trunk/embedded/src/main/resources/META-INF/classloader-beans.xml
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/AbstractEmbeddedTestCase.java
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/HSQLDBService.java
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/NonXADataSourceDeployer.java
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/datasource/
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/datasource/DataSourceDefinition.java
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/datasource/DataSourceDefinitionMetaData.java
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/dsl/
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/dsl/DataSourceBuilder.java
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookBean.java
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookEntry.java
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookLocal.java
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/unit/
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/unit/PhoneBookTestCase.java
   projects/ejb3/trunk/embedded/src/test/resources/META-INF/persistence.xml
   projects/ejb3/trunk/embedded/src/test/resources/explicit/
   projects/ejb3/trunk/embedded/src/test/resources/explicit/ds-deployers-beans.xml
Modified:
   projects/ejb3/trunk/embedded/pom.xml
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/JBossEJBContainer.java
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbModuleDeployer.java
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedDescriptorHandler.java
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/resolvers/EmbeddedDataSourceDependencyResolver.java
   projects/ejb3/trunk/embedded/src/main/resources/META-INF/aop-beans.xml
   projects/ejb3/trunk/embedded/src/main/resources/META-INF/ejb-container-beans.xml
   projects/ejb3/trunk/embedded/src/main/resources/META-INF/ejb-deployers-beans.xml
   projects/ejb3/trunk/embedded/src/main/resources/META-INF/embedded-bootstrap-beans.xml
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/stateful/unit/StatefulGreeterTestCase.java
   projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/stateless/unit/GreeterTestCase.java
Log:
EJBTHREE-1805: allow for DSL style data source definition

Modified: projects/ejb3/trunk/embedded/pom.xml
===================================================================
--- projects/ejb3/trunk/embedded/pom.xml	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/pom.xml	2009-04-14 15:00:18 UTC (rev 87292)
@@ -28,7 +28,15 @@
   <build>
     <plugins>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+          <executable>${JDK6_HOME}/bin/javac</executable>
+        </configuration>
+      </plugin>
+
+      <plugin>
         <artifactId>maven-enforcer-plugin</artifactId>
         <version>1.0-alpha-4</version>
         <executions>
@@ -72,21 +80,46 @@
               </rules>
             </configuration>
           </execution>
+          <execution>
+            <id>enforce-jdk6</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireProperty>
+                  <property>env.JDK6_HOME</property>
+                  <message>JDK6_HOME is not set</message>
+                </requireProperty>
+              </rules>
+            </configuration>
+          </execution>
         </executions>
       </plugin>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
+        <version>2.4.3</version>
         <configuration>
           <!-- Because we fiddle with the class loader in BasicTestSuite.
                Note that the other tests also change context class loader, but this is
                to make surefire work at all. -->
-          <forkMode>pertest</forkMode>
+          <!--forkMode>pertest</forkMode-->
           <!--
           <argLine>-enableassertions</argLine>
           -->
           
+          <forkMode>once</forkMode>
+          <jvm>${JDK6_HOME}/bin/java</jvm>
         </configuration>
+        <!-- 
+        <dependencies>
+          <dependency>
+            <groupId>org.apache.maven.surefire</groupId>
+            <artifactId>surefire-booter</artifactId>
+            <version>2.4.3</version>
+          </dependency>
+        </dependencies>
+        -->
       </plugin>
     </plugins>
   </build>
@@ -95,6 +128,11 @@
     <dependencies>
       <dependency>
         <groupId>org.jboss</groupId>
+        <artifactId>jboss-common-core</artifactId>
+        <version>[2.2.11.GA]</version>
+      </dependency>
+      <dependency>
+        <groupId>org.jboss</groupId>
         <artifactId>jboss-reflect</artifactId>
         <version>[2.0.2.GA]</version>
       </dependency>
@@ -112,7 +150,14 @@
   </dependencyManagement>
   
   <dependencies>
+    <!-- For 'mocking' a DataSource we use Hypersonic -->
     <dependency>
+      <groupId>hsqldb</groupId>
+      <artifactId>hsqldb</artifactId>
+      <version>1.8.0.8-brew</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>jboss.jbossts</groupId>
       <artifactId>jbossjta</artifactId>
       <version>4.4.0.GA</version>
@@ -132,7 +177,7 @@
     <dependency>
       <groupId>org.jboss.ejb3</groupId>
       <artifactId>jboss-ejb3-api</artifactId>
-      <version>3.1.0-Alpha1</version>
+      <version>3.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.jboss.ejb3</groupId>
@@ -179,6 +224,11 @@
     </dependency>
     <dependency>
       <groupId>org.jboss.deployers</groupId>
+      <artifactId>jboss-deployers-spi</artifactId>
+      <version>${version.org.jboss.deployers}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.deployers</groupId>
       <artifactId>jboss-deployers-vfs</artifactId>
       <version>${version.org.jboss.deployers}</version>
       <!-- scope>runtime</scope -->

Modified: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/JBossEJBContainer.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/JBossEJBContainer.java	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/JBossEJBContainer.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -30,10 +30,12 @@
 
 import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerState;
+import org.jboss.deployers.client.spi.Deployment;
 import org.jboss.deployers.client.spi.main.MainDeployer;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.vfs.spi.client.VFSDeployment;
 import org.jboss.deployers.vfs.spi.client.VFSDeploymentFactory;
+import org.jboss.ejb3.api.spi.EJBContainerWrapper;
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.plugins.bootstrap.basic.BasicBootstrap;
 import org.jboss.kernel.plugins.deployment.xml.BasicXMLDeployer;
@@ -62,6 +64,17 @@
    // stage 2
    private MainDeployer mainDeployer;
 
+   public static JBossEJBContainer on(EJBContainer container)
+   {
+      if(container == null)
+         throw new IllegalArgumentException("container is null");
+      if(container instanceof EJBContainerWrapper)
+         return on(((EJBContainerWrapper) container).getDelegate());
+      if(container instanceof JBossEJBContainer)
+         return (JBossEJBContainer) container;
+      throw new IllegalArgumentException(container + " is not an instance of JBossEJBContainer");
+   }
+   
    public JBossEJBContainer(Map<?, ?> properties, String... modules) throws Throwable
    {
       try
@@ -69,26 +82,31 @@
          bootstrap.run();
          kernel = bootstrap.getKernel();
          deployer = new BasicXMLDeployer(kernel);
+         
+         deploy("META-INF/classloader-beans.xml", true);
+         
          // bring the main deployer online
-         deploy("META-INF/embedded-bootstrap-beans.xml");
+         deploy("META-INF/embedded-bootstrap-beans.xml", true);
 
          // we're at stage 2
          mainDeployer = getBean("MainDeployer", ControllerState.INSTALLED, MainDeployer.class);
 
-         deploy("META-INF/ejb-deployers-beans.xml");
+         deploy("META-INF/ejb-deployers-beans.xml", false);
 
-         deploy("META-INF/namingserver-beans.xml");
+         deploy("META-INF/namingserver-beans.xml", true);
 
-         deploy("META-INF/aop-beans.xml");
+         deploy("META-INF/aop-beans.xml", true);
 
-         deploy("META-INF/transactionmanager-beans.xml");
+         deploy("META-INF/transactionmanager-beans.xml", true);
 
-         deploy("META-INF/jpa-deployers-beans.xml");
+         deploy("META-INF/jpa-deployers-beans.xml", true);
 
-         deploy("META-INF/ejb-container-beans.xml");
+         deploy("META-INF/ejb-container-beans.xml", true);
 
-         deploy("META-INF/ejb3-connectors-jboss-beans.xml");
+         deploy("META-INF/ejb3-connectors-jboss-beans.xml", true);
 
+         deployer.validate();
+         
          deployMain("ejb3-interceptors-aop.xml");
 
          deployModules(modules);
@@ -119,34 +137,49 @@
       bootstrap = null;
    }
 
-   private KernelDeployment deploy(String name) throws Throwable
+   private Deployment deploy(Deployment deployment) throws DeploymentException
    {
-      return deploy(getResource(name));
+      log.info("Deploying " + deployment.getName());
+      mainDeployer.deploy(deployment);
+      mainDeployer.checkComplete(deployment);
+      return deployment;
    }
+   
+   public void deploy(Deployment... deployments) throws DeploymentException, IOException
+   {
+      for(Deployment deployment : deployments)
+      {
+         deploy(deployment);
+      }
+   }
 
-   private KernelDeployment deploy(URL url) throws Throwable
+   private KernelDeployment deploy(String name, boolean validate) throws Throwable
    {
+      return deployKernel(getResource(name), validate);
+   }
+
+   public Deployment deploy(URL url) throws DeploymentException, IOException
+   {
+      VirtualFile root = VFS.getRoot(url);
+      VFSDeployment deployment = VFSDeploymentFactory.getInstance().createVFSDeployment(root);
+      return deploy(deployment);
+   }
+
+   private KernelDeployment deployKernel(URL url, boolean validate) throws Throwable
+   {
       log.info("Deploying " + url);
       KernelDeployment deployment = deployer.deploy(url);
-      deployer.validate(deployment);
+      if(validate)
+         deployer.validate(deployment);
       return deployment;
    }
 
    private void deployMain(String name) throws DeploymentException, IllegalArgumentException, MalformedURLException, IOException
    {
       URL url = getResource(name);
-      deployMain(url);
+      deploy(url);
    }
 
-   private void deployMain(URL url) throws DeploymentException, IOException
-   {
-      log.info("Deploying " + url);
-      VirtualFile root = VFS.getRoot(url);
-      VFSDeployment deployment = VFSDeploymentFactory.getInstance().createVFSDeployment(root);
-      mainDeployer.deploy(deployment);
-      mainDeployer.checkComplete(deployment);
-   }
-
    private void deployModules(String modules[]) throws MalformedURLException, IOException, DeploymentException
    {
       // TODO: deploy the world!
@@ -155,7 +188,7 @@
 
       for(String module : modules)
       {
-         deployMain(new URL(module));
+         deploy(new URL(module));
       }
    }
 

Modified: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbModuleDeployer.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbModuleDeployer.java	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbModuleDeployer.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -23,6 +23,7 @@
 
 import org.jboss.beans.metadata.api.annotations.Inject;
 import org.jboss.beans.metadata.api.annotations.Start;
+import org.jboss.beans.metadata.api.annotations.Stop;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.deployers.spi.DeploymentException;
@@ -36,6 +37,7 @@
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
 import org.jboss.ejb3.embedded.deployment.EjbDeployment;
 import org.jboss.ejb3.embedded.deployment.EmbeddedEjb3DeploymentUnit;
+import org.jboss.jpa.resolvers.PersistenceUnitDependencyResolver;
 import org.jboss.kernel.Kernel;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
@@ -49,6 +51,8 @@
    @Deprecated
    private Kernel kernel;
    
+   private PersistenceUnitDependencyResolver persistenceUnitDependencyResolver;
+   
    public EjbModuleDeployer()
    {
       //addInput(EjbMetadataJndiPolicyDecoratorDeployer.EJB_DECORATED_FLAG);
@@ -71,6 +75,12 @@
       public void deploy(DeploymentUnit unit, JBossMetaData metaData) throws DeploymentException
       {
          log.info("Found " + metaData + " in " + unit);
+         JBossMetaData realMetaData = unit.getTransientManagedObjects().getAttachment(JBossMetaData.class);
+         if(realMetaData != null && realMetaData != metaData)
+         {
+            metaData = realMetaData;
+            log.info("but it's really " + metaData);
+         }
          
          // FIXME
          if(metaData.getEnterpriseBeans() == null)
@@ -80,6 +90,11 @@
          }
          
          Ejb3Deployment module = createModule(unit, metaData);
+         
+         // ejb3-core builds its dependencies with runtime components. Since deployment
+         // isn't ready yet, we'll inject it.
+         module.setPersistenceUnitDependencyResolver(persistenceUnitDependencyResolver);
+         
          unit.addAttachment(Ejb3Deployment.class, module);
          
          String name = "org.jboss.ejb3.deployment:" + unit.getSimpleName();
@@ -121,6 +136,12 @@
       this.kernel = kernel;
    }
    
+   @Inject
+   public void setPersistenceUnitDependencyResolver(PersistenceUnitDependencyResolver resolver)
+   {
+      this.persistenceUnitDependencyResolver = resolver;
+   }
+   
    /**
     * LifeCycle Start
     * 
@@ -153,4 +174,12 @@
                + Ejb3RegistrarLocator.class.getSimpleName());
       }
    }
+   
+   @Stop
+   public void stop()
+   {
+      // FIXME: see start
+      if(Ejb3RegistrarLocator.isRegistrarBound())
+         Ejb3RegistrarLocator.unbindRegistrar();
+   }
 }

Modified: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedDescriptorHandler.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedDescriptorHandler.java	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedDescriptorHandler.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -24,10 +24,6 @@
 import org.jboss.ejb3.EJBContainer;
 import org.jboss.ejb3.Ejb3Deployment;
 import org.jboss.ejb3.Ejb3DescriptorHandler;
-import org.jboss.ejb3.mdb.ConsumerContainer;
-import org.jboss.ejb3.mdb.MDB;
-import org.jboss.ejb3.service.ServiceContainer;
-import org.jboss.ejb3.stateful.StatefulContainer;
 import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
@@ -69,38 +65,40 @@
       
       EJB_TYPE ejbType = getEjbType(beanMetaData);
       
+      EJBContainer container;
+      
       className = beanMetaData.getEjbClass();
       ejbClass = di.getClassLoader().loadClass(className);
       if (ejbType == EJB_TYPE.STATELESS)
       {
-         EJBContainer container = getStatelessContainer(index, (JBossSessionBeanMetaData) beanMetaData);
-         container.setJaccContextId(getJaccContextId());
-         return container;
+         container = getStatelessContainer(index, (JBossSessionBeanMetaData) beanMetaData);
       }
       else if (ejbType == EJB_TYPE.STATEFUL)
       {
-         StatefulContainer container = getStatefulContainer(index, (JBossSessionBeanMetaData) beanMetaData);
-         container.setJaccContextId(getJaccContextId());
-         return container;
+         container = getStatefulContainer(index, (JBossSessionBeanMetaData) beanMetaData);
       }
       else if (ejbType == EJB_TYPE.MESSAGE_DRIVEN)
       {
-         MDB container = getMDB(index, (JBossMessageDrivenBeanMetaData) beanMetaData);
-         container.setJaccContextId(getJaccContextId());
-         return container;
+         container = getMDB(index, (JBossMessageDrivenBeanMetaData) beanMetaData);
       }
       else if (ejbType == EJB_TYPE.SERVICE)
       {
-         ServiceContainer container = getServiceContainer(index, (JBossServiceBeanMetaData) beanMetaData);
-         container.setJaccContextId(getJaccContextId());
-         return container;
+         container = getServiceContainer(index, (JBossServiceBeanMetaData) beanMetaData);
       }
       else if (ejbType == EJB_TYPE.CONSUMER)
       {
-         ConsumerContainer container = getConsumerContainer(index, (JBossConsumerBeanMetaData) beanMetaData);
-         container.setJaccContextId(getJaccContextId());
-         return container;
+         container = getConsumerContainer(index, (JBossConsumerBeanMetaData) beanMetaData);
       }
-      throw new UnsupportedOperationException("Can't create a container for type "  + ejbType);
+      else
+         throw new UnsupportedOperationException("Can't create a container for type "  + ejbType);
+      
+      container.setJaccContextId(getJaccContextId());
+      container.instantiated();
+      
+      // chicken/egg starts here
+      // containers determine their dependencies using runtime components, instead of metadata
+      container.processMetadata();
+      
+      return container;
    }
 }

Added: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/AttachmentBuilder.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/AttachmentBuilder.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/AttachmentBuilder.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.dsl;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class AttachmentBuilder
+{
+   public static class AttachmentHolder<T>
+   {
+      private Class<T> type;
+      private T attachment;
+      
+      public AttachmentHolder(Class<T> type, T attachment)
+      {
+         this.type = type;
+         this.attachment = attachment;
+      }
+
+      public T getAttachment()
+      {
+         return attachment;
+      }
+      
+      public Class<T> getType()
+      {
+         return type;
+      }
+   }
+   
+   public static <T> AttachmentHolder<T> attachment(Class<T> type, T attachment)
+   {
+      return new AttachmentHolder<T>(type, attachment);
+   }
+}

Added: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/DeploymentBuilder.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/DeploymentBuilder.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/DeploymentBuilder.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.dsl;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.spi.attachments.MutableAttachments;
+import org.jboss.deployers.vfs.spi.client.VFSDeployment;
+import org.jboss.deployers.vfs.spi.client.VFSDeploymentFactory;
+import org.jboss.virtual.VFS;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class DeploymentBuilder
+{
+   public static <T> Deployment deployment(String name, Class<T> attachmentType, T attachment)
+   {
+      try
+      {
+         URL url = new URL("vfsmemory", name, "");
+         VirtualFile root = VFS.getRoot(url);
+         VFSDeployment deployment = VFSDeploymentFactory.getInstance().createVFSDeployment(root);
+         MutableAttachments attachments = (MutableAttachments) deployment.getPredeterminedManagedObjects();
+         attachments.addAttachment(attachmentType, attachment);
+         return deployment;
+      }
+      catch(IOException e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
+   
+   public static Deployment deployment(URL url) throws IOException
+   {
+      VirtualFile root = VFS.getRoot(url);
+      VFSDeployment deployment = VFSDeploymentFactory.getInstance().createVFSDeployment(root);
+      /*
+      MutableAttachments attachments = (MutableAttachments) deployment.getPredeterminedManagedObjects();
+      ClassLoadingMetaData attachment = new ClassLoadingMetaData();
+//      attachment.setIncludedPackages("org.jboss.ejb3.embedded.test.stateless");
+      attachment.setExcluded(ClassFilter.EVERYTHING);
+      attachment.setIncluded(ClassFilter.NOTHING);
+      attachment.setImportAll(false);
+      attachments.addAttachment(ClassLoadingMetaData.class, attachment);
+      
+      AbstractScanningMetaData scanningMetaData = new AbstractScanningMetaData();
+      List<PathMetaData> paths = new ArrayList<PathMetaData>();
+      scanningMetaData.setPaths(paths);
+      AbstractPathMetaData path = new AbstractPathMetaData();
+      Set<PathEntryMetaData> excludes = new HashSet<PathEntryMetaData>();
+      path.setExcludes(excludes);
+      paths.add(path);
+      AbstractPathEntryMetaData entry = new AbstractPathEntryMetaData();
+      entry.setName("org.jboss.ejb3.embedded.test.jpa");
+      excludes.add(entry);
+      
+      attachments.addAttachment(ScanningMetaData.class, scanningMetaData);
+      */
+      return deployment;
+   }
+}

Added: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/PackageBuilder.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/PackageBuilder.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/PackageBuilder.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,50 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.dsl;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class PackageBuilder
+{
+   public static URL pkg(String name)
+   {
+      String resource = name.replace('.', '/');
+      URL url = Thread.currentThread().getContextClassLoader().getResource(resource);
+      String spec = url.toExternalForm();
+      try
+      {
+         url = new URL(spec.substring(0, spec.length() - resource.length()));
+         if(url == null)
+            throw new IllegalArgumentException("Can't find package " + name);
+         return url;
+      }
+      catch(MalformedURLException e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
+}

Added: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/ResourceFinder.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/ResourceFinder.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/dsl/ResourceFinder.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,40 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.dsl;
+
+import java.net.URL;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class ResourceFinder
+{
+   public static URL resource(String name)
+   {
+      ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+      URL url = classLoader.getResource(name);
+      if(url == null)
+         throw new IllegalArgumentException("can't find resource " + name + " on " + classLoader);
+      return url;
+   }
+}

Modified: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/resolvers/EmbeddedDataSourceDependencyResolver.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/resolvers/EmbeddedDataSourceDependencyResolver.java	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/resolvers/EmbeddedDataSourceDependencyResolver.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -29,9 +29,16 @@
  */
 public class EmbeddedDataSourceDependencyResolver implements DataSourceDependencyResolver
 {
+   public static final String BASE_NAME = "org.jboss.ejb3.embedded.datasource";
+   
    public String resolveDataSourceSupplier(String jndiName)
    {
-      throw new RuntimeException("NYI");
+      String name = jndiName;
+      if(name.startsWith("java:"))
+         name = name.substring(6);
+      if(name.startsWith("/"))
+         name = name.substring(2);
+      return BASE_NAME + ":" + name;
    }
 
 }

Modified: projects/ejb3/trunk/embedded/src/main/resources/META-INF/aop-beans.xml
===================================================================
--- projects/ejb3/trunk/embedded/src/main/resources/META-INF/aop-beans.xml	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/src/main/resources/META-INF/aop-beans.xml	2009-04-14 15:00:18 UTC (rev 87292)
@@ -1,5 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
+   <!-- 
+   <classloader><inject bean="aop-classloader:0.0.0"/></classloader>
+   
+   <classloader name="aop-classloader" xmlns="urn:jboss:classloader:1.0" export-all="NON_EMPTY" import-all="true"/>
+   -->
+   
    <bean name="AspectManager" class="org.jboss.aop.AspectManager">
       <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>
    </bean>

Added: projects/ejb3/trunk/embedded/src/main/resources/META-INF/classloader-beans.xml
===================================================================
--- projects/ejb3/trunk/embedded/src/main/resources/META-INF/classloader-beans.xml	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/main/resources/META-INF/classloader-beans.xml	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+   The core classloading system
+-->
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <classloader><inject bean="bootstrap-classloader:0.0.0"/></classloader>
+
+   <!--
+      The classloader implementation
+   -->
+   <bean name="ClassLoaderSystem" class="org.jboss.classloader.spi.ClassLoaderSystem">
+      <classloader><null/></classloader>
+      <constructor factoryClass="org.jboss.classloader.spi.ClassLoaderSystem" factoryMethod="getInstance"/>
+   </bean>
+
+   <!-- 
+      ClassLoader management and resolution
+   -->
+   <bean name="ClassLoading" class="org.jboss.classloading.spi.dependency.ClassLoading">
+      <classloader><null/></classloader>
+      <incallback method="addModule" state="Configured"/>
+      <uncallback method="removeModule" state="Configured"/>
+   </bean>
+
+   <classloader name="bootstrap-classloader" xmlns="urn:jboss:classloader:1.0" export-all="NON_EMPTY" import-all="true">
+      <!-- System -->
+      <!-- root>${jboss.lib.url}jboss-system.jar</root -->
+   </classloader>
+   
+</deployment>

Modified: projects/ejb3/trunk/embedded/src/main/resources/META-INF/ejb-container-beans.xml
===================================================================
--- projects/ejb3/trunk/embedded/src/main/resources/META-INF/ejb-container-beans.xml	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/src/main/resources/META-INF/ejb-container-beans.xml	2009-04-14 15:00:18 UTC (rev 87292)
@@ -6,4 +6,6 @@
    </bean>
    
    <bean name="EmbeddedCachedConnectionManagerBridge" class="org.jboss.ejb3.embedded.connectionmanager.EmbeddedCachedConnectionManager"/>
+   
+   <bean name="EmbeddedXPCResolver" class="org.jboss.ejb3.stateful.EJB3XPCResolver"/>
 </deployment>

Modified: projects/ejb3/trunk/embedded/src/main/resources/META-INF/ejb-deployers-beans.xml
===================================================================
--- projects/ejb3/trunk/embedded/src/main/resources/META-INF/ejb-deployers-beans.xml	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/src/main/resources/META-INF/ejb-deployers-beans.xml	2009-04-14 15:00:18 UTC (rev 87292)
@@ -1,5 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
+   <!-- 
+   <classloader><inject bean="ejb-deployers-classloader:0.0.0"/></classloader>
+   
+   <classloader name="ejb-deployers-classloader" xmlns="urn:jboss:classloader:1.0" export-all="NON_EMPTY" import-all="true"/>
+   -->
+   
    <!-- TODO: move SchemaResolverConfig to a more general beans.xml -->
    <bean name="SchemaResolverConfig" class="org.jboss.xb.binding.sunday.unmarshalling.SchemaResolverConfig">
       <property name="bindingClassesByLocations">
@@ -53,7 +59,9 @@
    <bean name="Ejb3MetadataProcessingDeployer" class="org.jboss.ejb3.deployers.Ejb3MetadataProcessingDeployer" />
 
    <bean name="EjbModuleDeployer" class="org.jboss.ejb3.embedded.deployers.EjbModuleDeployer"/>
-   <bean name="EjbComponentDeployer" class="org.jboss.ejb3.embedded.deployers.EjbComponentDeployer"/>
+   <bean name="EjbComponentDeployer" class="org.jboss.ejb3.embedded.deployers.EjbComponentDeployer">
+      <depends>org.jboss.ejb3.RemotingConnector</depends>
+   </bean>
 
    <bean name="MessageDestinationReferenceResolver" class="org.jboss.ejb3.embedded.resolvers.EmbeddedMessageDestinationReferenceResolver"/>
 

Modified: projects/ejb3/trunk/embedded/src/main/resources/META-INF/embedded-bootstrap-beans.xml
===================================================================
--- projects/ejb3/trunk/embedded/src/main/resources/META-INF/embedded-bootstrap-beans.xml	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/src/main/resources/META-INF/embedded-bootstrap-beans.xml	2009-04-14 15:00:18 UTC (rev 87292)
@@ -1,7 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
+   <!--
    <bean name="SimpleClassLoaderDeployer" class="org.jboss.ejb3.embedded.deployers.SimpleClassLoaderDeployer"/>
+   -->
+   <classloader><inject bean="embedded-bootstrap-classloader:0.0.0"/></classloader>
    
+   <classloader name="embedded-bootstrap-classloader" xmlns="urn:jboss:classloader:1.0" export-all="NON_EMPTY" import-all="true"/>
+   
    <!-- The MainDeployer -->
    <bean name="MainDeployer" class="org.jboss.deployers.plugins.main.MainDeployerImpl">
       <property name="structuralDeployers"><inject bean="StructuralDeployers"/></property>
@@ -40,4 +45,27 @@
    <bean name="BeanMetaDataDeployer" class="org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer">
       <constructor><parameter class="org.jboss.kernel.Kernel"><inject bean="jboss.kernel:service=Kernel"/></parameter></constructor>
    </bean>
+   
+   <!-- Classloader deployers -->
+   <bean name="ClassLoadingMetaDataParser" class="org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer">
+      <constructor>
+         <parameter>org.jboss.classloading.spi.metadata.ClassLoadingMetaData</parameter>
+      </constructor>
+      <property name="name">jboss-classloading.xml</property>
+      <property name="buildManagedObject">true</property>
+   </bean>
+   <bean name="ClassLoadingDefaultDeployer" class="org.jboss.deployers.plugins.classloading.ClassLoadingDefaultDeployer">
+      <property name="defaultMetaData">
+         <classloading xmlns="urn:jboss:classloading:1.0" export-all="NON_EMPTY" import-all="true"/>
+      </property>
+   </bean>
+   <bean name="InMemoryClassesDeployer" class="org.jboss.deployers.vfs.plugins.classloader.InMemoryClassesDeployer"/>
+   <bean name="ClassLoaderClassPathDeployer" class="org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderClassPathDeployer"/>
+   <bean name="ClassLoaderDescribeDeployer" class="org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderDescribeDeployer">
+      <property name="classLoading"><inject bean="ClassLoading"/></property>
+   </bean>
+   <bean name="ClassLoaderDeployer" class="org.jboss.deployers.plugins.classloading.AbstractLevelClassLoaderSystemDeployer">
+      <property name="classLoading"><inject bean="ClassLoading"/></property>
+      <property name="system"><inject bean="ClassLoaderSystem"/></property>
+   </bean>
 </deployment>

Added: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/AbstractEmbeddedTestCase.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/AbstractEmbeddedTestCase.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/AbstractEmbeddedTestCase.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,92 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.test.common;
+
+import static org.jboss.ejb3.embedded.JBossEJBContainer.on;
+import static org.jboss.ejb3.embedded.dsl.DeploymentBuilder.deployment;
+import static org.jboss.ejb3.embedded.dsl.ResourceFinder.resource;
+import static org.jboss.ejb3.embedded.test.dsl.DataSourceBuilder.localDataSource;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.Properties;
+
+import javax.ejb.EJBContainer;
+
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.ejb3.proxy.remoting.ProxyRemotingUtils;
+import org.jboss.metadata.rar.jboss.mcf.NonXADataSourceDeploymentMetaData;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public abstract class AbstractEmbeddedTestCase
+{
+   protected static EJBContainer container;
+   
+   @AfterClass
+   public static void afterClass()
+   {
+      if (container != null)
+         container.close();
+   }
+
+   @BeforeClass
+   public static void beforeClass() throws DeploymentException, IOException
+   {
+      clearProxyRemotingUtilsDefaultClientBindingHack();
+      
+      Properties properties = new Properties();
+      container = EJBContainer.createEJBContainer(properties);
+      
+      // TODO: scanning filter doesn't work, so we need to deploy the data source
+      on(container).deploy(
+            deployment(resource("explicit/ds-deployers-beans.xml")),
+            deployment("default-ds",
+               NonXADataSourceDeploymentMetaData.class,
+               localDataSource()
+                  .connectionURL("jdbc:hsqldb:mem:defaultdb")
+                  .driverClass("org.jboss.ejb3.embedded.test.common.HSQLDBService")
+                  .jndiName("java:/DefaultDS")
+                  .user("sa")
+                  .password("")
+                  .getMetaData()
+            ));  
+   }
+
+   private static void clearProxyRemotingUtilsDefaultClientBindingHack()
+   {
+      try
+      {
+         Field field = ProxyRemotingUtils.class.getDeclaredField("DEFAULT_CLIENT_BINDING");
+         field.setAccessible(true);
+         field.set(null, null);
+      }
+      catch(Exception e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
+}

Added: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/HSQLDBService.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/HSQLDBService.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/HSQLDBService.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,114 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.test.common;
+
+import java.sql.Connection;
+
+import javax.naming.InitialContext;
+
+import org.hsqldb.jdbc.jdbcDataSource;
+import org.jboss.logging.Logger;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class HSQLDBService
+{
+   private static final Logger log = Logger.getLogger(HSQLDBService.class);
+   
+   private String jndiName = "java:/DefaultDS";
+   
+   private jdbcDataSource ds;
+   private InitialContext ctx;
+   private Connection conn;
+   
+   private String user = "sa";
+   private char[] password = {};
+   private String url = "jdbc:hsqldb:mem:defaultdb";
+   
+   public void create() throws Exception
+   {
+      log.info("Creating HSQLDB service");
+      
+      ds = new jdbcDataSource();
+      ds.setDatabase(url);
+      ds.setUser(user);
+      ds.setPassword(new String(password));
+      
+      ctx = new InitialContext();
+   }
+   
+   public void destroy() throws Exception
+   {
+      log.info("Destroying HSQLDB service");
+      
+      if(ctx != null)
+      {
+         ctx.close();
+         ctx = null;
+      }
+      ds = null;
+   }
+   
+   public void setJndiName(String name)
+   {
+      this.jndiName = name;
+   }
+   
+   public void setURL(String url)
+   {
+      this.url = url;
+   }
+   
+   public void setUser(String user)
+   {
+      this.user = user;
+   }
+   
+   public void setPassword(char password[])
+   {
+      this.password = password;
+   }
+   
+   public void start() throws Exception
+   {
+      log.info("Starting HSQLDB service");
+      
+      conn = ds.getConnection();
+      
+      ctx.bind(jndiName, ds);
+   }
+   
+   public void stop() throws Exception
+   {
+      log.info("Stopping HSQLDB service");
+      
+      ctx.unbind(jndiName);
+      
+      if(conn != null)
+      {
+         conn.close();
+         conn = null;
+      }
+   }
+}

Added: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/NonXADataSourceDeployer.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/NonXADataSourceDeployer.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/common/NonXADataSourceDeployer.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.test.common;
+
+import org.jboss.beans.metadata.api.annotations.Inject;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.jpa.resolvers.DataSourceDependencyResolver;
+import org.jboss.metadata.rar.jboss.mcf.NonXADataSourceDeploymentMetaData;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class NonXADataSourceDeployer extends AbstractSimpleRealDeployer<NonXADataSourceDeploymentMetaData>
+{
+   private DataSourceDependencyResolver resolver;
+   
+   public NonXADataSourceDeployer()
+   {
+      super(NonXADataSourceDeploymentMetaData.class);
+      
+      addOutput(BeanMetaData.class);
+   }
+
+   @Override
+   public void deploy(DeploymentUnit unit, NonXADataSourceDeploymentMetaData deployment) throws DeploymentException
+   {
+      String jndiName = deployment.getJndiName();
+      String beanName = resolver.resolveDataSourceSupplier(jndiName);
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(beanName, deployment.getDriverClass())
+         .addPropertyMetaData("jndiName", jndiName)
+         .addPropertyMetaData("URL", deployment.getConnectionUrl())
+         .addPropertyMetaData("user", deployment.getUserName())
+         .addPropertyMetaData("password", deployment.getPassWord().toCharArray());
+      unit.addAttachment(BeanMetaData.class, builder.getBeanMetaData());
+   }
+   
+   @Inject
+   public void setDataSourceDependencyResolver(DataSourceDependencyResolver resolver)
+   {
+      this.resolver = resolver;
+   }
+}

Added: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/datasource/DataSourceDefinition.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/datasource/DataSourceDefinition.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/datasource/DataSourceDefinition.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.test.datasource;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public @interface DataSourceDefinition {
+   String className();
+   
+   String name();
+   
+   String description() default "";
+   
+   String url() default "";
+   
+   String user() default "";
+   
+   String password() default "";
+   
+   String databaseName() default "";
+   
+   int portNumber() default -1;
+   
+   String serverName() default "localhost";
+   
+   int isolationLevel() default -1;
+   
+   boolean transactional() default true;
+   
+   int initialPoolSize() default -1;
+   
+   int maxPoolSize() default -1;
+   
+   int minPoolSize() default -1;
+   
+   int maxIdleTime() default -1;
+   
+   int maxStatements() default -1;
+   
+   String[] properties() default {};
+   
+   int loginTimeout() default 0;
+}

Added: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/datasource/DataSourceDefinitionMetaData.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/datasource/DataSourceDefinitionMetaData.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/datasource/DataSourceDefinitionMetaData.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,126 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.test.datasource;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class DataSourceDefinitionMetaData implements DataSourceDefinition
+{
+   public Class<? extends Annotation> annotationType()
+   {
+      throw new RuntimeException("NYI");
+   }
+   
+   public String className()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public String databaseName()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public String description()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public int initialPoolSize()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public int isolationLevel()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public int loginTimeout()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public int maxIdleTime()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public int maxPoolSize()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public int maxStatements()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public int minPoolSize()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public String name()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public String password()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public int portNumber()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public String[] properties()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public String serverName()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public boolean transactional()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public String url()
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   public String user()
+   {
+      throw new RuntimeException("NYI");
+   }
+}

Added: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/dsl/DataSourceBuilder.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/dsl/DataSourceBuilder.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/dsl/DataSourceBuilder.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,84 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.test.dsl;
+
+import org.jboss.metadata.rar.jboss.mcf.LocalDataSourceDeploymentMetaData;
+import org.jboss.metadata.rar.jboss.mcf.NonXADataSourceDeploymentMetaData;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class DataSourceBuilder
+{
+   private NonXADataSourceDeploymentMetaData metaData;
+   
+   public static DataSourceBuilder localDataSource()
+   {
+      return new DataSourceBuilder(new LocalDataSourceDeploymentMetaData());
+   }
+   
+   public static NonXADataSourceDeploymentMetaData nonXADataSource(DataSourceBuilder builder)
+   {
+      return builder.getMetaData();
+   }
+   
+   protected DataSourceBuilder(NonXADataSourceDeploymentMetaData metaData)
+   {
+      this.metaData = metaData;
+   }
+   
+   public DataSourceBuilder connectionURL(String spec)
+   {
+      metaData.setConnectionUrl(spec);
+      return this;
+   }
+   
+   public DataSourceBuilder driverClass(String driverClass)
+   {
+      metaData.setDriverClass(driverClass);
+      return this;
+   }
+   
+   public NonXADataSourceDeploymentMetaData getMetaData()
+   {
+      return metaData;
+   }
+   
+   public DataSourceBuilder jndiName(String jndiName)
+   {
+      metaData.setJndiName(jndiName);
+      return this;
+   }
+   
+   public DataSourceBuilder password(String password)
+   {
+      metaData.setPassWord(password);
+      return this;
+   }
+   
+   public DataSourceBuilder user(String user)
+   {
+      metaData.setUserName(user);
+      return this;
+   }
+}

Added: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookBean.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookBean.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookBean.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.test.jpa;
+
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Stateless
+public class PhoneBookBean implements PhoneBookLocal
+{
+   @PersistenceContext
+   private EntityManager em;
+
+   public String addEntry(String name, String phone)
+   {
+      throw new RuntimeException("NYI");
+   }
+}

Added: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookEntry.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookEntry.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookEntry.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,68 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.test.jpa;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Entity
+public class PhoneBookEntry
+{
+   private long id;
+   private String name;
+   private String number;
+   
+   @Id
+   public long getId()
+   {
+      return id;
+   }
+   
+   public String getName()
+   {
+      return name;
+   }
+   
+   public String getNumber()
+   {
+      return number;
+   }
+   
+   public void setId(long id)
+   {
+      this.id = id;
+   }
+   
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   public void setNumber(String number)
+   {
+      this.number = number;
+   }
+}

Added: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookLocal.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookLocal.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/PhoneBookLocal.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,34 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.test.jpa;
+
+import javax.ejb.Local;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Local
+public interface PhoneBookLocal
+{
+   String addEntry(String name, String phone);
+}

Added: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/unit/PhoneBookTestCase.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/unit/PhoneBookTestCase.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/jpa/unit/PhoneBookTestCase.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,81 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.test.jpa.unit;
+
+import static org.jboss.ejb3.embedded.JBossEJBContainer.on;
+import static org.jboss.ejb3.embedded.dsl.DeploymentBuilder.deployment;
+import static org.jboss.ejb3.embedded.dsl.PackageBuilder.pkg;
+import static org.jboss.ejb3.embedded.dsl.ResourceFinder.resource;
+import static org.jboss.ejb3.embedded.test.dsl.DataSourceBuilder.localDataSource;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import javax.ejb.EJBContainer;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.ejb3.embedded.test.common.AbstractEmbeddedTestCase;
+import org.jboss.ejb3.embedded.test.jpa.PhoneBookLocal;
+import org.jboss.logging.Logger;
+import org.jboss.metadata.rar.jboss.mcf.NonXADataSourceDeploymentMetaData;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class PhoneBookTestCase extends AbstractEmbeddedTestCase
+{
+   private static Logger logger = Logger.getLogger(PhoneBookTestCase.class);
+
+   @BeforeClass
+   public static void beforeClass() throws DeploymentException, IOException
+   {
+      Properties properties = new Properties();
+      container = EJBContainer.createEJBContainer(properties);
+      
+      on(container).deploy(deployment(resource("explicit/ds-deployers-beans.xml")));
+      
+      on(container).deploy(
+            deployment("default-ds",
+               NonXADataSourceDeploymentMetaData.class,
+               localDataSource()
+                  .connectionURL("jdbc:hsqldb:mem:defaultdb")
+                  .driverClass("org.jboss.ejb3.embedded.test.common.HSQLDBService")
+                  .jndiName("java:/DefaultDS")
+                  .user("sa")
+                  .password("")
+                  .getMetaData()
+            ),
+            deployment(pkg("org.jboss.ejb3.embedded.test.jpa")));
+   }
+
+   @Test
+   public void test1() throws NamingException
+   {
+      InitialContext ctx = new InitialContext();
+      PhoneBookLocal phoneBook = (PhoneBookLocal) ctx.lookup("PhoneBookBean/local");
+   }
+}

Modified: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/stateful/unit/StatefulGreeterTestCase.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/stateful/unit/StatefulGreeterTestCase.java	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/stateful/unit/StatefulGreeterTestCase.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -21,18 +21,19 @@
  */
 package org.jboss.ejb3.embedded.test.stateful.unit;
 
+import static org.jboss.ejb3.embedded.JBossEJBContainer.on;
+import static org.jboss.ejb3.embedded.dsl.PackageBuilder.pkg;
 import static org.junit.Assert.assertEquals;
 
-import java.net.URL;
+import java.io.IOException;
 import java.util.Date;
-import java.util.Properties;
 
-import javax.ejb.EJBContainer;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.ejb3.embedded.test.common.AbstractEmbeddedTestCase;
 import org.jboss.ejb3.embedded.test.stateful.StatefulGreeter;
-import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -40,33 +41,16 @@
  * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
  * @version $Revision: $
  */
-public class StatefulGreeterTestCase
+public class StatefulGreeterTestCase extends AbstractEmbeddedTestCase
 {
-   @AfterClass
-   public static void afterClass()
-   {
-      EJBContainer current = EJBContainer.getCurrentEJBContainer();
-      if(current != null)
-         current.close();
-   }
-   
    @BeforeClass
-   public static void beforeClass()
+   public static void beforeClass() throws DeploymentException, IOException
    {
-      Properties properties = new Properties();
-      String module = getURLToTestClasses();
-      properties.setProperty(EJBContainer.EMBEDDABLE_MODULES_PROPERTY, module);
-      EJBContainer.createEJBContainer(properties);
+      AbstractEmbeddedTestCase.beforeClass();
+      
+      on(container).deploy(pkg("org.jboss.ejb3.embedded.test.stateful"));
    }
    
-   private static String getURLToTestClasses()
-   {
-      String p = "org/jboss/ejb3/embedded/test";
-      URL url = Thread.currentThread().getContextClassLoader().getResource(p);
-      String s = url.toString();
-      return s.substring(0, s.length() - p.length());
-   }
-   
    @Test
    public void test1() throws NamingException
    {

Modified: projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/stateless/unit/GreeterTestCase.java
===================================================================
--- projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/stateless/unit/GreeterTestCase.java	2009-04-14 14:54:02 UTC (rev 87291)
+++ projects/ejb3/trunk/embedded/src/test/java/org/jboss/ejb3/embedded/test/stateless/unit/GreeterTestCase.java	2009-04-14 15:00:18 UTC (rev 87292)
@@ -21,22 +21,23 @@
  */
 package org.jboss.ejb3.embedded.test.stateless.unit;
 
+import static org.jboss.ejb3.embedded.JBossEJBContainer.on;
+import static org.jboss.ejb3.embedded.dsl.PackageBuilder.pkg;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import java.net.URL;
+import java.io.IOException;
 import java.util.Date;
-import java.util.Properties;
 
-import javax.ejb.EJBContainer;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.ejb3.embedded.test.common.AbstractEmbeddedTestCase;
 import org.jboss.ejb3.embedded.test.stateless.Greeter;
 import org.jboss.ejb3.embedded.test.stateless.GreeterRemote;
 import org.jboss.logging.Logger;
-import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -44,39 +45,21 @@
  * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
  * @version $Revision: $
  */
-public class GreeterTestCase
+public class GreeterTestCase extends AbstractEmbeddedTestCase
 {
-
    /**
     * Logger
     */
    private static Logger logger = Logger.getLogger(GreeterTestCase.class);
 
-   @AfterClass
-   public static void afterClass()
-   {
-      EJBContainer current = EJBContainer.getCurrentEJBContainer();
-      if (current != null)
-         current.close();
-   }
-
    @BeforeClass
-   public static void beforeClass()
+   public static void beforeClass() throws DeploymentException, IOException
    {
-      Properties properties = new Properties();
-      String module = getURLToTestClasses();
-      properties.setProperty(EJBContainer.EMBEDDABLE_MODULES_PROPERTY, module);
-      EJBContainer.createEJBContainer(properties);
+      AbstractEmbeddedTestCase.beforeClass();
+      
+      on(container).deploy(pkg("org.jboss.ejb3.embedded.test.stateless"));
    }
 
-   private static String getURLToTestClasses()
-   {
-      String p = "org/jboss/ejb3/embedded/test";
-      URL url = Thread.currentThread().getContextClassLoader().getResource(p);
-      String s = url.toString();
-      return s.substring(0, s.length() - p.length());
-   }
-
    @Test
    public void test1() throws NamingException
    {

Added: projects/ejb3/trunk/embedded/src/test/resources/META-INF/persistence.xml
===================================================================
--- projects/ejb3/trunk/embedded/src/test/resources/META-INF/persistence.xml	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/resources/META-INF/persistence.xml	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
+   version="1.0">
+
+   <persistence-unit name="tempdb">
+      <jta-data-source>java:/DefaultDS</jta-data-source>
+      <properties>
+          <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+      </properties>
+   </persistence-unit>
+</persistence>

Added: projects/ejb3/trunk/embedded/src/test/resources/explicit/ds-deployers-beans.xml
===================================================================
--- projects/ejb3/trunk/embedded/src/test/resources/explicit/ds-deployers-beans.xml	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/test/resources/explicit/ds-deployers-beans.xml	2009-04-14 15:00:18 UTC (rev 87292)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+   <bean name="NonXADataSourceDeployer" class="org.jboss.ejb3.embedded.test.common.NonXADataSourceDeployer"/>
+</deployment>
\ No newline at end of file




More information about the jboss-cvs-commits mailing list