[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