You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/04/26 01:10:50 UTC
svn commit: r1330596 - in /openejb/trunk/openejb: arquillian-tomee/
arquillian-tomee/arquillian-openejb-container/
arquillian-tomee/arquillian-openejb-container/src/
arquillian-tomee/arquillian-openejb-container/src/main/
arquillian-tomee/arquillian-op...
Author: rmannibucau
Date: Wed Apr 25 23:10:49 2012
New Revision: 1330596
URL: http://svn.apache.org/viewvc?rev=1330596&view=rev
Log:
adding arquillian-openejb-container
Added:
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/pom.xml
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBConfiguration.java
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBExtension.java
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/resources/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/resources/META-INF/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/resources/META-INF/services/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/resources/
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/resources/arquillian.xml
Modified:
openejb/trunk/openejb/arquillian-tomee/arquillian-tomee-embedded/pom.xml
openejb/trunk/openejb/arquillian-tomee/pom.xml
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
Added: openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/pom.xml?rev=1330596&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/pom.xml (added)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/pom.xml Wed Apr 25 23:10:49 2012
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>arquillian-tomee</artifactId>
+ <groupId>org.apache.openejb</groupId>
+ <version>1.0.0-beta-3-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>arquillian-openejb-container</artifactId>
+ <name>OpenEJB :: TomEE Arquillian Adaptor :: OpenEJB Container</name> <!-- TODO: rename parent to be arquillian-parent -->
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-core</artifactId>
+ <version>${version.openejb}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.arquillian.container</groupId>
+ <artifactId>arquillian-container-spi</artifactId>
+ <version>${version.arquillian}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.arquillian.container</groupId>
+ <artifactId>arquillian-container-test-spi</artifactId>
+ <version>${version.arquillian}</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.jboss.arquillian.junit</groupId>
+ <artifactId>arquillian-junit-container</artifactId>
+ <version>${version.arquillian}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.arquillian.testenricher</groupId>
+ <artifactId>arquillian-testenricher-cdi</artifactId>
+ <version>${version.arquillian}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.arquillian.testenricher</groupId>
+ <artifactId>arquillian-testenricher-resource</artifactId>
+ <version>${version.arquillian}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.arquillian.testenricher</groupId>
+ <artifactId>arquillian-testenricher-ejb</artifactId>
+ <version>${version.arquillian}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.shrinkwrap.descriptors</groupId>
+ <artifactId>shrinkwrap-descriptors-impl</artifactId>
+ <version>${version.shrinkwrap.descriptor}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.shrinkwrap.descriptors</groupId>
+ <artifactId>shrinkwrap-descriptors-api</artifactId>
+ <version>${version.shrinkwrap.descriptor}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${javaee-api.version}</version>
+ </dependency>
+ </dependencies>
+</project>
Added: openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java?rev=1330596&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java (added)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java Wed Apr 25 23:10:49 2012
@@ -0,0 +1,92 @@
+package org.apache.openejb.arquillian.openejb;
+
+import java.io.IOException;
+import org.apache.openejb.loader.IO;
+import org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor;
+import org.jboss.arquillian.test.spi.TestClass;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ArchivePath;
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.Node;
+import org.jboss.shrinkwrap.api.asset.Asset;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+
+public class OpenEJBArchiveProcessor implements ApplicationArchiveProcessor {
+ private static final String EJB_JAR_XML = "ejb-jar.xml";
+ private static final String WEB_INF = "/WEB-INF";
+ private static final String META_INF = "/META-INF";
+
+ @Override
+ public void process(final Archive<?> archive, final TestClass testClass) {
+ final ArchivePath path = ArchivePaths.create(EJB_JAR_XML);
+ final Asset newAsset;
+ if (archive.contains(ArchivePaths.create(path.get()))) {
+ final Node node = archive.get(path);
+ final Asset asset = node.getAsset();
+ newAsset = enhancedAsset(asset, testClass.getJavaClass());
+ } else {
+ newAsset = new StringAsset(ejbJar(testClass.getJavaClass()));
+ }
+
+
+ if (archive instanceof WebArchive) {
+ archive.delete(WEB_INF + path.get());
+ ((WebArchive) archive).addAsWebInfResource(newAsset, path);
+ } else if (archive instanceof JavaArchive) {
+ archive.delete(META_INF + path.get());
+ ((JavaArchive) archive).addAsManifestResource(newAsset, path);
+ }
+ }
+
+ private Asset enhancedAsset(Asset asset, Class<?> javaClass) {
+ if (asset instanceof EmptyAsset) {
+ return new StringAsset(ejbJar(javaClass));
+ } else {
+ String content;
+ try {
+ content = IO.slurp(asset.openStream());
+ } catch (IOException e) {
+ content = "";
+ }
+
+ if (content == null || content.isEmpty()) {
+ return new StringAsset(ejbJar(javaClass));
+ } else if (content.contains("<enterprise-beans>")) {
+ content = content.replace("<enterprise-beans>", "<enterprise-beans>\n" + managedBeanBlock(javaClass));
+ return new StringAsset(content);
+ } else if (content.contains("<ejb-jar>")) {
+ content = content.replace("<ejb-jar>", "<ejb-jar>\n" + enterpriseBean(javaClass));
+ return new StringAsset(content);
+ }
+ return asset; // shouldn't happen
+ }
+ }
+
+ private String enterpriseBean(final Class<?> clazz) {
+ return " <enterprise-beans>\n" +
+ managedBeanBlock(clazz) +
+ " </enterprise-beans>\n";
+ }
+
+ private String ejbJar(final Class<?> clazz) {
+ return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n" +
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n" +
+ " xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n" +
+ " version=\"3.0\">\n" +
+ enterpriseBean(clazz) +
+ "</ejb-jar>\n";
+ }
+
+ private String managedBeanBlock(final Class<?> clazz) {
+ return " <session>\n" +
+ " <ejb-name>" + clazz.getSimpleName() + "</ejb-name>\n" +
+ " <ejb-class>" + clazz.getName() + "</ejb-class>\n" +
+ " <session-type>Managed</session-type>\n" +
+ " <transaction-type>Bean</transaction-type>\n" +
+ " </session>\n";
+ }
+}
Added: openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBConfiguration.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBConfiguration.java?rev=1330596&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBConfiguration.java (added)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBConfiguration.java Wed Apr 25 23:10:49 2012
@@ -0,0 +1,11 @@
+package org.apache.openejb.arquillian.openejb;
+
+import org.jboss.arquillian.container.spi.ConfigurationException;
+import org.jboss.arquillian.container.spi.client.container.ContainerConfiguration;
+
+public class OpenEJBConfiguration implements ContainerConfiguration {
+ @Override
+ public void validate() throws ConfigurationException {
+ // no-op
+ }
+}
Added: openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java?rev=1330596&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java (added)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java Wed Apr 25 23:10:49 2012
@@ -0,0 +1,137 @@
+package org.apache.openejb.arquillian.openejb;
+
+import java.io.File;
+import java.util.Properties;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import org.apache.openejb.AppContext;
+import org.apache.openejb.OpenEJB;
+import org.apache.openejb.assembler.DeployerEjb;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.config.DeploymentFilterable;
+import org.apache.openejb.core.LocalInitialContext;
+import org.apache.openejb.core.LocalInitialContextFactory;
+import org.apache.openejb.loader.Files;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
+import org.jboss.arquillian.container.spi.client.container.DeploymentException;
+import org.jboss.arquillian.container.spi.client.container.LifecycleException;
+import org.jboss.arquillian.container.spi.client.protocol.ProtocolDescription;
+import org.jboss.arquillian.container.spi.client.protocol.metadata.ProtocolMetaData;
+import org.jboss.arquillian.container.spi.context.annotation.ContainerScoped;
+import org.jboss.arquillian.container.spi.context.annotation.DeploymentScoped;
+import org.jboss.arquillian.core.api.InstanceProducer;
+import org.jboss.arquillian.core.api.annotation.Inject;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.exporter.ZipExporter;
+import org.jboss.shrinkwrap.descriptor.api.Descriptor;
+
+public class OpenEJBDeployableContainer implements DeployableContainer<OpenEJBConfiguration> {
+ private static final String DEPLOYMENT_SUB_DIR = "/arquillian-openejb-working-dir";
+ private static final Properties PROPERTIES = new Properties();
+
+ static {
+ PROPERTIES.setProperty(Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
+ PROPERTIES.setProperty(LocalInitialContext.ON_CLOSE, LocalInitialContext.Close.DESTROY.name());
+ PROPERTIES.setProperty(DeploymentFilterable.DEPLOYMENTS_CLASSPATH_PROPERTY, "false");
+ }
+
+ private InitialContext initialContext;
+ private DeployerEjb deployer;
+ private File baseDeploymentDir;
+ private File archiveFile;
+ private ContainerSystem containerSystem;
+
+
+ @Inject
+ @DeploymentScoped
+ private InstanceProducer<AppContext> appContextProducer;
+
+ @Inject
+ @ContainerScoped
+ private InstanceProducer<ContainerSystem> containerSystemProducer;
+
+ @Override
+ public Class<OpenEJBConfiguration> getConfigurationClass() {
+ return OpenEJBConfiguration.class;
+ }
+
+ @Override
+ public void setup(final OpenEJBConfiguration openEJBConfiguration) {
+ // no-op
+ }
+
+ @Override
+ public void start() throws LifecycleException {
+ try {
+ initialContext = new InitialContext(PROPERTIES);
+ } catch (NamingException e) {
+ throw new LifecycleException("can't start the OpenEJB container", e);
+ }
+
+ deployer = new DeployerEjb();
+ baseDeploymentDir = new File(System.getProperty("java.io.tmpdir") + DEPLOYMENT_SUB_DIR);
+ containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
+ containerSystemProducer.set(containerSystem);
+ }
+
+ @Override
+ public ProtocolMetaData deploy(final Archive<?> archive) throws DeploymentException {
+ int i = 0;
+ do {
+ archiveFile = new File(baseDeploymentDir, i++ + "/" + archive.getName());
+ } while (archiveFile.exists());
+ Files.mkdirs(archiveFile.getParentFile());
+ archive.as(ZipExporter.class).exportTo(archiveFile, true);
+
+ try {
+ final AppInfo info = deployer.deploy(archiveFile.getCanonicalPath());
+ final AppContext appCtx = containerSystem.getAppContext(info.appId);
+ appContextProducer.set(appCtx);
+ } catch (Exception e) {
+ throw new DeploymentException("can't deploy " + archive.getName(), e);
+ }
+ return new ProtocolMetaData();
+ }
+
+ @Override
+ public void undeploy(final Archive<?> archive) throws DeploymentException {
+ try {
+ deployer.undeploy(archiveFile.getCanonicalPath());
+ Files.delete(archiveFile);
+ } catch (Exception e) {
+ throw new DeploymentException("can't undeploy " + archive.getName(), e);
+ }
+ }
+
+ @Override
+ public void stop() throws LifecycleException {
+ try {
+ if (initialContext != null) {
+ initialContext.close();
+ }
+ } catch (NamingException e) {
+ throw new LifecycleException("can't close the OpenEJB container", e);
+ } finally {
+ OpenEJB.destroy();
+ Files.delete(baseDeploymentDir);
+ }
+ }
+
+ @Override
+ public ProtocolDescription getDefaultProtocol() {
+ return new ProtocolDescription("Local");
+ }
+
+ @Override
+ public void deploy(Descriptor descriptor) throws DeploymentException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void undeploy(Descriptor descriptor) throws DeploymentException {
+ throw new UnsupportedOperationException();
+ }
+}
Added: openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBExtension.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBExtension.java?rev=1330596&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBExtension.java (added)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBExtension.java Wed Apr 25 23:10:49 2012
@@ -0,0 +1,15 @@
+package org.apache.openejb.arquillian.openejb;
+
+import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
+import org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor;
+import org.jboss.arquillian.core.spi.LoadableExtension;
+import org.jboss.arquillian.test.spi.TestEnricher;
+
+public class OpenEJBExtension implements LoadableExtension {
+ @Override
+ public void register(final ExtensionBuilder extensionBuilder) {
+ extensionBuilder.service(DeployableContainer.class, OpenEJBDeployableContainer.class)
+ .service(TestEnricher.class, OpenEJBInjectionEnricher.class)
+ .service(ApplicationArchiveProcessor.class, OpenEJBArchiveProcessor.class);
+ }
+}
Added: openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java?rev=1330596&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java (added)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java Wed Apr 25 23:10:49 2012
@@ -0,0 +1,55 @@
+package org.apache.openejb.arquillian.openejb;
+
+import java.lang.reflect.Method;
+import org.apache.openejb.AppContext;
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.InjectionProcessor;
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.spi.ContainerSystem;
+import org.apache.webbeans.inject.OWBInjector;
+import org.jboss.arquillian.container.spi.context.annotation.ContainerScoped;
+import org.jboss.arquillian.container.spi.context.annotation.DeploymentScoped;
+import org.jboss.arquillian.core.api.Instance;
+import org.jboss.arquillian.core.api.annotation.Inject;
+import org.jboss.arquillian.test.spi.TestEnricher;
+
+public class OpenEJBInjectionEnricher implements TestEnricher {
+ @Inject
+ @DeploymentScoped
+ private Instance<AppContext> appContext;
+
+ @Inject
+ @ContainerScoped
+ private Instance<ContainerSystem> containerSystem;
+
+ @Override
+ public void enrich(final Object testInstance) {
+ try {
+ OWBInjector beanInjector = new OWBInjector(appContext.get().getWebBeansContext());
+ beanInjector.inject(testInstance);
+ } catch (Throwable t) {
+ // ignored
+ }
+
+ final BeanContext context = containerSystem.get().getBeanContext(testInstance.getClass().getSimpleName());
+ if (context != null) {
+ ThreadContext callContext = new ThreadContext(context, null, Operation.INJECTION);
+ ThreadContext oldContext = ThreadContext.enter(callContext);
+ try {
+ final InjectionProcessor processor = new InjectionProcessor(testInstance, context.getInjections(), context.getJndiContext());
+ processor.createInstance();
+ } catch (OpenEJBException e) {
+ // ignored
+ } finally {
+ ThreadContext.exit(oldContext);
+ }
+ }
+ }
+
+ @Override
+ public Object[] resolve(final Method method) {
+ return new Object[method.getParameterTypes().length];
+ }
+}
Added: openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension?rev=1330596&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension (added)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension Wed Apr 25 23:10:49 2012
@@ -0,0 +1 @@
+org.apache.openejb.arquillian.openejb.OpenEJBExtension
Added: openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java?rev=1330596&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java (added)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java Wed Apr 25 23:10:49 2012
@@ -0,0 +1,59 @@
+package org.apache.openejb.arquillian.openejb;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.Singleton;
+import javax.inject.Inject;
+import javax.sql.DataSource;
+import org.apache.openejb.loader.SystemInstance;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+@RunWith(Arquillian.class)
+public class SimpleArquillianStandaloneTest {
+ @Inject
+ private ABean bean;
+
+ @Inject
+ private AnEJB ejbFromCdiAnnotation;
+
+ @EJB
+ private AnEJB ejbFromEjbAnnotation;
+
+ @Resource
+ private DataSource defaultDs;
+
+ @Deployment
+ public static JavaArchive archive() {
+ return ShrinkWrap.create(JavaArchive.class, SimpleArquillianStandaloneTest.class.getSimpleName().concat(".jar"))
+ .addClass(ABean.class)
+ .addAsManifestResource(EmptyAsset.INSTANCE, ArchivePaths.create("ejb-jar.xml"))
+ .addAsManifestResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"));
+ }
+
+ @Test
+ public void checkItIsStarted() {
+ assertTrue(SystemInstance.isInitialized());
+ }
+
+ @Test
+ public void checkInjection() {
+ assertNotNull(bean);
+ assertNotNull(ejbFromCdiAnnotation);
+ assertNotNull(ejbFromEjbAnnotation);
+ assertNotNull(defaultDs);
+ }
+
+ public static class ABean {}
+
+ @Singleton public static class AnEJB {}
+}
Added: openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/resources/arquillian.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/resources/arquillian.xml?rev=1330596&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/resources/arquillian.xml (added)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/resources/arquillian.xml Wed Apr 25 23:10:49 2012
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<arquillian
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd" />
Modified: openejb/trunk/openejb/arquillian-tomee/arquillian-tomee-embedded/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-tomee-embedded/pom.xml?rev=1330596&r1=1330595&r2=1330596&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-tomee-embedded/pom.xml (original)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-tomee-embedded/pom.xml Wed Apr 25 23:10:49 2012
@@ -109,7 +109,7 @@
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
- <version>6.0-1</version>
+ <version>${javaee-api.version}</version>
<type>jar</type>
</dependency>
Modified: openejb/trunk/openejb/arquillian-tomee/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/pom.xml?rev=1330596&r1=1330595&r2=1330596&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/pom.xml (original)
+++ openejb/trunk/openejb/arquillian-tomee/pom.xml Wed Apr 25 23:10:49 2012
@@ -48,5 +48,6 @@
<module>arquillian-tomee-tests</module>
<module>arquillian-tomee-moviefun-example</module>
<module>ziplock</module>
+ <module>arquillian-openejb-container</module>
</modules>
</project>
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java?rev=1330596&r1=1330595&r2=1330596&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java Wed Apr 25 23:10:49 2012
@@ -223,7 +223,7 @@ public class DeployerEjb implements Depl
config = null;
}
if (config == null || !config.getParentFile().exists()) {
- LOGGER.error("can't save the added app because the conf folder doesn't exist, it will not be present next time you'll start");
+ LOGGER.info("can't save the added app because the conf folder doesn't exist, it will not be present next time you'll start");
return;
}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java?rev=1330596&r1=1330595&r2=1330596&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java Wed Apr 25 23:10:49 2012
@@ -564,7 +564,11 @@ public class EjbJarInfoBuilder {
} else if (s.getSessionType() == SessionType.MANAGED) {
bean = new ManagedBeanInfo();
ManagedBeanInfo managed = ((ManagedBeanInfo) bean);
- managed.hidden = ((ManagedBean) s).isHidden();
+ if (s instanceof ManagedBean) { // this way we support managed beans in ejb-jar.xml (not in the spec but can be useful)
+ managed.hidden = ((ManagedBean) s).isHidden();
+ } else {
+ managed.hidden = true;
+ }
copyCallbacks(s.getPostActivate(), managed.postActivate);
copyCallbacks(s.getPrePassivate(), managed.prePassivate);