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/10/01 14:14:30 UTC
svn commit: r1392301 - in /openejb/trunk/openejb:
arquillian/arquillian-common/
arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/
arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/...
Author: rmannibucau
Date: Mon Oct 1 12:14:29 2012
New Revision: 1392301
URL: http://svn.apache.org/viewvc?rev=1392301&view=rev
Log:
TOMEE-439 TOMEE-440 deployer for war (deploy in tomcat mode) + starting to get rid of arquillian enricher managing ourself injections (as in standalone)
Added:
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/mockito/
- copied from r1392217, openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/mockito/
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/BeanDicovererInstaller.java
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TestClassDiscoverer.java
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AdditionalBeanDiscoverer.java
Removed:
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/mockito/
Modified:
openejb/trunk/openejb/arquillian/arquillian-common/pom.xml
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/mockito/MockitoEnricher.java
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
openejb/trunk/openejb/arquillian/arquillian-tomee-common/pom.xml
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/pom.xml
openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEExtension.java
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/pom.xml
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEEJBEnricherArchiveAppender.java
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEERemoteExtension.java
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/pom.xml
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappEJBEnricherArchiveAppender.java
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappExtension.java
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappRemoteExtension.java
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/test/resources/arquillian.xml
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
Modified: openejb/trunk/openejb/arquillian/arquillian-common/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-common/pom.xml?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-common/pom.xml (original)
+++ openejb/trunk/openejb/arquillian/arquillian-common/pom.xml Mon Oct 1 12:14:29 2012
@@ -32,6 +32,12 @@
<dependencies>
<dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-core</artifactId>
+ <version>${openejb.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.jboss.arquillian.test</groupId>
<artifactId>arquillian-test-spi</artifactId>
<version>${version.arquillian}</version>
Added: openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java?rev=1392301&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java (added)
+++ openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java Mon Oct 1 12:14:29 2012
@@ -0,0 +1,73 @@
+/**
+ * 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.
+ */
+package org.apache.openejb.arquillian.common.enrichment;
+
+import org.apache.openejb.AppContext;
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.InjectionProcessor;
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.arquillian.common.mockito.MockitoEnricher;
+import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.inject.OWBInjector;
+
+import javax.enterprise.inject.spi.Bean;
+import java.util.Set;
+
+public final class OpenEJBEnricher {
+ private OpenEJBEnricher() {
+ // no-op
+ }
+
+ public static void enrich(final Object testInstance, final AppContext ctx) {
+ if (ctx == null) { // deployment exception
+ return;
+ }
+
+ // don't rely on arquillian since this enrichment should absolutely be done before the following ones
+ new MockitoEnricher().enrich(testInstance);
+
+ final BeanManagerImpl bm = ctx.getWebBeansContext().getBeanManagerImpl();
+ if (bm.isInUse()) {
+ try {
+ final Set<Bean<?>> beans = bm.getBeans(testInstance.getClass());
+ final Bean<?> bean = bm.resolve(beans);
+ OWBInjector.inject(bm, testInstance, bm.createCreationalContext(bean));
+ } catch (Throwable t) {
+ // ignored
+ }
+ }
+
+ final BeanContext context = SystemInstance.get().getComponent(ContainerSystem.class)
+ .getBeanContext(testInstance.getClass().getName());
+ if (context != null) {
+ ThreadContext callContext = new ThreadContext(context, null, Operation.INJECTION);
+ ThreadContext oldContext = ThreadContext.enter(callContext);
+ try {
+ final InjectionProcessor processor = new InjectionProcessor<Object>(testInstance, context.getInjections(), context.getJndiContext());
+ processor.createInstance();
+ } catch (OpenEJBException e) {
+ // ignored
+ } finally {
+ ThreadContext.exit(oldContext);
+ }
+ }
+ }
+}
Modified: openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/mockito/MockitoEnricher.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/mockito/MockitoEnricher.java?rev=1392301&r1=1392217&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/mockito/MockitoEnricher.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/mockito/MockitoEnricher.java Mon Oct 1 12:14:29 2012
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.openejb.arquillian.openejb.mockito;
+package org.apache.openejb.arquillian.common.mockito;
import org.jboss.arquillian.test.spi.TestEnricher;
Modified: openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java Mon Oct 1 12:14:29 2012
@@ -84,7 +84,6 @@ public class OpenEJBDeployableContainer
// system
private Assembler assembler;
private InitialContext initialContext;
- private ContainerSystem containerSystem;
private ConfigurationFactory configurationFactory;
// suite
@@ -105,10 +104,6 @@ public class OpenEJBDeployableContainer
private InstanceProducer<HttpSession> sessionProducer;
@Inject
- @ContainerScoped
- private InstanceProducer<ContainerSystem> containerSystemProducer;
-
- @Inject
@SuiteScoped
private InstanceProducer<ClassLoader> classLoader;
@@ -166,8 +161,6 @@ public class OpenEJBDeployableContainer
}
assembler = SystemInstance.get().getComponent(Assembler.class);
- containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
- containerSystemProducer.set(containerSystem);
configurationFactory = new ConfigurationFactory();
}
Modified: openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java Mon Oct 1 12:14:29 2012
@@ -16,62 +16,21 @@
*/
package org.apache.openejb.arquillian.openejb;
-import java.lang.reflect.Method;
-import java.util.Set;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
import org.apache.openejb.AppContext;
-import org.apache.openejb.BeanContext;
-import org.apache.openejb.InjectionProcessor;
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.arquillian.openejb.mockito.MockitoEnricher;
-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.apache.openejb.arquillian.common.enrichment.OpenEJBEnricher;
import org.jboss.arquillian.core.api.Instance;
import org.jboss.arquillian.core.api.annotation.Inject;
import org.jboss.arquillian.test.spi.TestEnricher;
+import java.lang.reflect.Method;
+
public class OpenEJBInjectionEnricher implements TestEnricher {
@Inject
private Instance<AppContext> appContext;
- @Inject
- private Instance<ContainerSystem> containerSystem;
-
@Override
public void enrich(final Object testInstance) {
- final AppContext ctx = appContext.get();
- if (ctx == null) { // deployment exception
- return;
- }
-
- // don't rely on arquillian since this enrichment should absolutely be done before the following ones
- new MockitoEnricher().enrich(testInstance);
-
- final BeanManager bm = ctx.getWebBeansContext().getBeanManagerImpl();
- try {
- final Set<Bean<?>> beans = bm.getBeans(testInstance.getClass());
- final Bean<?> bean = bm.resolve(beans);
- OWBInjector.inject(bm, testInstance, bm.createCreationalContext(bean));
- } catch (Throwable t) {
- // ignored
- }
-
- final BeanContext context = containerSystem.get().getBeanContext(testInstance.getClass().getName());
- if (context != null) {
- ThreadContext callContext = new ThreadContext(context, null, Operation.INJECTION);
- ThreadContext oldContext = ThreadContext.enter(callContext);
- try {
- final InjectionProcessor processor = new InjectionProcessor<Object>(testInstance, context.getInjections(), context.getJndiContext());
- processor.createInstance();
- } catch (OpenEJBException e) {
- // ignored
- } finally {
- ThreadContext.exit(oldContext);
- }
- }
+ OpenEJBEnricher.enrich(testInstance, appContext.get());
}
@Override
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-common/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/pom.xml?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-common/pom.xml (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-common/pom.xml Mon Oct 1 12:14:29 2012
@@ -30,6 +30,11 @@
<name>OpenEJB :: Arquillian Adaptors Parent :: TomEE Common</name>
<dependencies>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>arquillian-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
@@ -45,12 +50,6 @@
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
<version>${javaee-api.version}</version>
@@ -64,6 +63,24 @@
</dependency>
<dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-finder-shaded</artifactId>
+ <version>3.11</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-jee</artifactId>
+ <version>${openejb.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-core</artifactId>
<version>${openejb.version}</version>
Added: openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/BeanDicovererInstaller.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/BeanDicovererInstaller.java?rev=1392301&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/BeanDicovererInstaller.java (added)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/BeanDicovererInstaller.java Mon Oct 1 12:14:29 2012
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package org.apache.openejb.arquillian.common;
+
+import org.apache.openejb.config.AdditionalBeanDiscoverer;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
+import org.apache.openejb.observer.event.ObserverAdded;
+
+public class BeanDicovererInstaller {
+ public void install(@Observes final ObserverAdded added) {
+ if (added.getObserver() == this) {
+ SystemInstance.get().setComponent(AdditionalBeanDiscoverer.class, new TestClassDiscoverer());
+ }
+ }
+}
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java Mon Oct 1 12:14:29 2012
@@ -21,6 +21,11 @@ import org.apache.openejb.loader.SystemI
import org.apache.openejb.util.JarExtractor;
import org.apache.tomee.util.QuickServerXmlParser;
import org.jboss.arquillian.container.spi.client.container.LifecycleException;
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.exporter.ZipExporter;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
import java.io.BufferedReader;
import java.io.File;
@@ -48,6 +53,7 @@ import java.util.logging.Logger;
*/
public class Setup {
private static final Logger LOGGER = Logger.getLogger(Setup.class.getName()); // JUL is used by arquillian so that's fine
+ public static final String TOMEE_BEAN_DISCOVERER_JAR = "lib/arquillian-tomee-bean-discoverer.jar";
public static void exportProperties(final File openejbHome, final TomEEConfiguration c) {
System.setProperty("java.naming.provider.url", "http://" + c.getHost() + ":" + c.getHttpPort() + "/tomee/ejb");
@@ -319,6 +325,19 @@ public class Setup {
return f.getAbsolutePath().substring(base.getAbsolutePath().length() + 1);
}
+ public static void installArquillianBeanDiscoverer(final File home) {
+ final File destination = new File(home, TOMEE_BEAN_DISCOVERER_JAR);
+ ShrinkWrap.create(JavaArchive.class, destination.getName())
+ .addClasses(BeanDicovererInstaller.class, TestClassDiscoverer.class)
+ .addAsManifestResource(new StringAsset(BeanDicovererInstaller.class.getName()), ArchivePaths.create("org.apache.openejb.extension"))
+ .as(ZipExporter.class).exportTo(destination, false);
+ }
+
+ public static void removeArquillianBeanDiscoverer(final File home) {
+ final File destination = new File(home, TOMEE_BEAN_DISCOVERER_JAR);
+ Files.delete(destination);
+ }
+
private static class TrueFileFilter implements FileFilter {
private static TrueFileFilter INSTANCE = null;
Added: openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TestClassDiscoverer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TestClassDiscoverer.java?rev=1392301&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TestClassDiscoverer.java (added)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TestClassDiscoverer.java Mon Oct 1 12:14:29 2012
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+package org.apache.openejb.arquillian.common;
+
+import org.apache.openejb.config.AdditionalBeanDiscoverer;
+import org.apache.openejb.config.AppModule;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.ManagedBean;
+import org.apache.openejb.jee.TransactionType;
+import org.apache.openejb.jee.oejb3.EjbDeployment;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class TestClassDiscoverer implements AdditionalBeanDiscoverer {
+ @Override
+ public AppModule discover(final AppModule module) {
+ final String name = findTestName(module.getFile(), module.getClassLoader());
+ if (name == null) {
+ return module;
+ }
+
+ final EjbJar ejbJar = new EjbJar();
+ final OpenejbJar openejbJar = new OpenejbJar();
+ final ManagedBean bean = ejbJar.addEnterpriseBean(new ManagedBean(name, name, true));
+ bean.setTransactionType(TransactionType.BEAN);
+ final EjbDeployment ejbDeployment = openejbJar.addEjbDeployment(bean);
+ ejbDeployment.setDeploymentId(name);
+ module.getEjbModules().add(new EjbModule(ejbJar, openejbJar));
+ return module;
+ }
+
+ private String findTestName(final File folder, final ClassLoader classLoader) {
+ InputStream is = null;
+
+ File dir = folder;
+
+ if (dir != null && (dir.getName().endsWith(".war") || dir.getName().endsWith(".ear"))) {
+ final File unpacked = new File(dir.getParentFile(), dir.getName().substring(0, dir.getName().length() - 4));
+ if (unpacked.exists()) {
+ dir = unpacked;
+ }
+ }
+
+ if (dir != null && dir.isDirectory()) {
+ final File info = new File(dir, "arquillian-tomee-info.txt");
+ if (info.exists()) {
+ try {
+ is = new FileInputStream(info);
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ if (is == null) {
+ is = classLoader.getResourceAsStream("/arquillian-tomee-info.txt");
+ }
+
+ if (is != null) {
+ try {
+ return org.apache.openejb.loader.IO.slurp(is);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ org.apache.openejb.loader.IO.close(is);
+ }
+ }
+ return null;
+ }
+}
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java Mon Oct 1 12:14:29 2012
@@ -31,7 +31,13 @@ import org.jboss.arquillian.container.sp
import org.jboss.arquillian.container.spi.client.protocol.metadata.HTTPContext;
import org.jboss.arquillian.container.spi.client.protocol.metadata.ProtocolMetaData;
import org.jboss.arquillian.container.spi.client.protocol.metadata.Servlet;
+import org.jboss.arquillian.core.api.Instance;
+import org.jboss.arquillian.core.api.annotation.Inject;
+import org.jboss.arquillian.test.spi.TestClass;
import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.Assignable;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.exporter.ZipExporter;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.descriptor.api.Descriptor;
@@ -58,6 +64,9 @@ public abstract class TomEEContainer<Con
protected Map<String, DeployedApp> moduleIds = new HashMap<String, DeployedApp>();
private final Options options;
+ @Inject
+ private Instance<TestClass> testClass;
+
protected TomEEContainer() {
this.options = new Options(System.getProperties());
}
@@ -268,7 +277,7 @@ public abstract class TomEEContainer<Con
LOGGER.warning("can't create " + file.getParent());
}
- archive.as(ZipExporter.class).exportTo(file, true);
+ archiveWithTestInfo(archive).as(ZipExporter.class).exportTo(file, true);
final String fileName = file.getName();
if (fileName.endsWith(".war")) { // ??
@@ -315,6 +324,10 @@ public abstract class TomEEContainer<Con
}
}
+ protected Assignable archiveWithTestInfo(final Archive<?> archive) {
+ return archive.add(new StringAsset(testClass.get().getJavaClass().getName()), ArchivePaths.create("arquillian-tomee-info.txt"));
+ }
+
protected Deployer deployer() throws NamingException {
return lookupDeployerWithRetry(5);
}
Added: openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java?rev=1392301&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java (added)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java Mon Oct 1 12:14:29 2012
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openejb.arquillian.common;
+
+import org.apache.openejb.AppContext;
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.arquillian.common.enrichment.OpenEJBEnricher;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+import org.jboss.arquillian.test.spi.TestEnricher;
+
+import java.lang.reflect.Method;
+
+public class TomEEInjectionEnricher implements TestEnricher {
+ @Override
+ public void enrich(final Object o) {
+ OpenEJBEnricher.enrich(o, getAppContext(o.getClass().getName()));
+ }
+
+ private AppContext getAppContext(final String className) {
+ final BeanContext context = SystemInstance.get().getComponent(ContainerSystem.class).getBeanContext(className);
+ if (context == null) {
+ return null;
+ }
+ return context.getModuleContext().getAppContext();
+ }
+
+ @Override
+ public Object[] resolve(final Method method) {
+ return new Object[method.getParameterTypes().length];
+ }
+}
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/pom.xml?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/pom.xml (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/pom.xml Mon Oct 1 12:14:29 2012
@@ -80,25 +80,6 @@
<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-javaee</artifactId>
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java Mon Oct 1 12:14:29 2012
@@ -16,10 +16,12 @@
*/
package org.apache.openejb.arquillian.embedded;
-import org.apache.openejb.AppContext;
import org.apache.openejb.arquillian.common.Files;
+import org.apache.openejb.arquillian.common.TestClassDiscoverer;
import org.apache.openejb.arquillian.common.TomEEContainer;
import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.config.AdditionalBeanDiscoverer;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.tomee.embedded.Configuration;
import org.apache.tomee.embedded.Container;
import org.jboss.arquillian.container.spi.client.container.DeploymentException;
@@ -28,29 +30,15 @@ import org.jboss.arquillian.container.sp
import org.jboss.arquillian.container.spi.client.protocol.metadata.HTTPContext;
import org.jboss.arquillian.container.spi.client.protocol.metadata.ProtocolMetaData;
import org.jboss.arquillian.container.spi.client.protocol.metadata.Servlet;
-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 javax.enterprise.inject.spi.BeanManager;
-import javax.naming.Context;
import java.io.File;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class EmbeddedTomEEContainer extends TomEEContainer<EmbeddedTomEEConfiguration> {
- @Inject
- @ContainerScoped
- private InstanceProducer<Context> contextInstance;
-
- @Inject
- @DeploymentScoped
- private InstanceProducer<BeanManager> beanManagerInstance;
-
private static final Map<Archive<?>, File> ARCHIVES = new ConcurrentHashMap<Archive<?>, File>();
private Container container;
@@ -86,7 +74,7 @@ public class EmbeddedTomEEContainer exte
public void start() throws LifecycleException {
try {
container.start();
- contextInstance.set(container.getJndiContext());
+ SystemInstance.get().setComponent(AdditionalBeanDiscoverer.class, new TestClassDiscoverer());
} catch (Exception e) {
e.printStackTrace();
throw new LifecycleException("Something went wrong", e);
@@ -114,9 +102,9 @@ public class EmbeddedTomEEContainer exte
final String name = archive.getName();
final File file = new File(tempDir, name);
ARCHIVES.put(archive, file);
- archive.as(ZipExporter.class).exportTo(file, true);
+ archiveWithTestInfo(archive).as(ZipExporter.class).exportTo(file, true);
- final AppContext appContext = container.deploy(name, file);
+ container.deploy(name, file);
final AppInfo info = container.getInfo(name);
final String context = getArchiveNameWithoutExtension(archive);
@@ -124,7 +112,6 @@ public class EmbeddedTomEEContainer exte
httpContext.add(new Servlet("ArquillianServletRunner", "/" + context));
addServlets(httpContext, info);
- beanManagerInstance.set(appContext.getBeanManager());
return new ProtocolMetaData().addContext(httpContext);
} catch (Exception e) {
e.printStackTrace();
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEExtension.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEExtension.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEExtension.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEExtension.java Mon Oct 1 12:14:29 2012
@@ -18,11 +18,13 @@
package org.apache.openejb.arquillian.embedded;
import org.apache.openejb.arquillian.common.ArquillianUtil;
+import org.apache.openejb.arquillian.common.TomEEInjectionEnricher;
import org.apache.openejb.arquillian.common.deployment.DeploymentExceptionObserver;
import org.apache.openejb.arquillian.common.deployment.DeploymentExceptionProvider;
import org.apache.openejb.arquillian.transaction.OpenEJBTransactionProvider;
import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
import org.jboss.arquillian.core.spi.LoadableExtension;
+import org.jboss.arquillian.test.spi.TestEnricher;
import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider;
import org.jboss.arquillian.transaction.impl.client.TransactionExtension;
import org.jboss.arquillian.transaction.impl.container.TransactionRemoteExtension;
@@ -36,6 +38,7 @@ public class EmbeddedTomEEExtension impl
if (ArquillianUtil.isCurrentAdapter(ADAPTER)) {
builder.service(DeployableContainer.class, EmbeddedTomEEContainer.class)
.observer(DeploymentExceptionObserver.class)
+ .service(TestEnricher.class, TomEEInjectionEnricher.class)
.service(TransactionProvider.class, OpenEJBTransactionProvider.class)
.service(ResourceProvider.class, DeploymentExceptionProvider.class);
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-remote/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/pom.xml?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-remote/pom.xml (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-remote/pom.xml Mon Oct 1 12:14:29 2012
@@ -49,24 +49,6 @@
</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.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<version>${version.arquillian}</version>
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java Mon Oct 1 12:14:29 2012
@@ -41,6 +41,7 @@ public class RemoteTomEEContainer extend
private RemoteServer container;
private boolean shutdown = false;
+ private File openejbHome;
@Override
public void start() throws LifecycleException {
@@ -114,7 +115,7 @@ public class RemoteTomEEContainer extend
Files.readable(workingDirectory);
Files.writable(workingDirectory);
- File openejbHome = Setup.findHome(workingDirectory);
+ openejbHome = Setup.findHome(workingDirectory);
if (openejbHome == null) {
openejbHome = Setup.downloadAndUnpack(workingDirectory, configuration.getArtifactName());
@@ -134,6 +135,7 @@ public class RemoteTomEEContainer extend
Setup.synchronizeFolder(openejbHome, configuration.getLib(), "lib");
Setup.exportProperties(openejbHome, configuration);
+ Setup.installArquillianBeanDiscoverer(openejbHome);
if (configuration.isRemoveUnusedWebapps()) {
Setup.removeUselessWebapps(openejbHome);
@@ -151,6 +153,7 @@ public class RemoteTomEEContainer extend
public void stop() throws LifecycleException {
// only stop the container if we started it
if (shutdown) {
+ Setup.removeArquillianBeanDiscoverer(openejbHome);
container.stop();
}
}
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEEJBEnricherArchiveAppender.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEEJBEnricherArchiveAppender.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEEJBEnricherArchiveAppender.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEEJBEnricherArchiveAppender.java Mon Oct 1 12:14:29 2012
@@ -17,13 +17,14 @@
package org.apache.tomee.arquillian.remote;
+import org.apache.openejb.arquillian.common.TomEEInjectionEnricher;
+import org.apache.openejb.arquillian.common.enrichment.OpenEJBEnricher;
+import org.apache.openejb.arquillian.common.mockito.MockitoEnricher;
import org.apache.openejb.arquillian.transaction.OpenEJBTransactionProvider;
import org.jboss.arquillian.container.test.spi.RemoteLoadableExtension;
import org.jboss.arquillian.container.test.spi.client.deployment.AuxiliaryArchiveAppender;
import org.jboss.shrinkwrap.api.Archive;
-import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
public class RemoteTomEEEJBEnricherArchiveAppender implements AuxiliaryArchiveAppender {
@@ -31,6 +32,7 @@ public class RemoteTomEEEJBEnricherArchi
public Archive<?> createAuxiliaryArchive() {
return ShrinkWrap.create(JavaArchive.class, "arquillian-tomee-archive-appender.jar")
.addClasses(RemoteTomEEObserver.class, RemoteTomEERemoteExtension.class, OpenEJBTransactionProvider.class)
+ .addClasses(OpenEJBEnricher.class, TomEEInjectionEnricher.class, MockitoEnricher.class)
.addAsServiceProvider(RemoteLoadableExtension.class, RemoteTomEERemoteExtension.class);
}
}
\ No newline at end of file
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEERemoteExtension.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEERemoteExtension.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEERemoteExtension.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEERemoteExtension.java Mon Oct 1 12:14:29 2012
@@ -17,8 +17,10 @@
package org.apache.tomee.arquillian.remote;
+import org.apache.openejb.arquillian.common.TomEEInjectionEnricher;
import org.apache.openejb.arquillian.transaction.OpenEJBTransactionProvider;
import org.jboss.arquillian.container.test.spi.RemoteLoadableExtension;
+import org.jboss.arquillian.test.spi.TestEnricher;
import org.jboss.arquillian.transaction.spi.provider.TransactionProvider;
public class RemoteTomEERemoteExtension implements RemoteLoadableExtension {
@@ -26,6 +28,7 @@ public class RemoteTomEERemoteExtension
@Override
public void register(ExtensionBuilder builder) {
builder.observer(RemoteTomEEObserver.class)
+ .service(TestEnricher.class, TomEEInjectionEnricher.class)
.service(TransactionProvider.class, OpenEJBTransactionProvider.class);
}
}
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/pom.xml?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/pom.xml (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/pom.xml Mon Oct 1 12:14:29 2012
@@ -49,24 +49,6 @@
</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.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>${tomcat.version}</version>
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java Mon Oct 1 12:14:29 2012
@@ -44,6 +44,7 @@ public class TomEEWebappContainer extend
private RemoteServer container;
private boolean shutdown = false;
+ private File openejbHome;
@Override
public void start() throws LifecycleException {
@@ -74,7 +75,7 @@ public class TomEEWebappContainer extend
Files.readable(workingDirectory);
Files.writable(workingDirectory);
- File openejbHome = Setup.findHome(workingDirectory);
+ openejbHome = Setup.findHome(workingDirectory);
if (openejbHome == null) {
@@ -124,6 +125,8 @@ public class TomEEWebappContainer extend
}
}
+ Setup.installArquillianBeanDiscoverer(openejbHome);
+
container = new RemoteServer();
container.start();
} catch (Exception e) {
@@ -177,6 +180,7 @@ public class TomEEWebappContainer extend
public void stop() throws LifecycleException {
// only stop the container if we started it
if (shutdown) {
+ Setup.removeArquillianBeanDiscoverer(openejbHome);
container.stop();
}
}
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappEJBEnricherArchiveAppender.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappEJBEnricherArchiveAppender.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappEJBEnricherArchiveAppender.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappEJBEnricherArchiveAppender.java Mon Oct 1 12:14:29 2012
@@ -17,13 +17,14 @@
package org.apache.tomee.arquillian.webapp;
+import org.apache.openejb.arquillian.common.TomEEInjectionEnricher;
+import org.apache.openejb.arquillian.common.enrichment.OpenEJBEnricher;
+import org.apache.openejb.arquillian.common.mockito.MockitoEnricher;
import org.apache.openejb.arquillian.transaction.OpenEJBTransactionProvider;
import org.jboss.arquillian.container.test.spi.RemoteLoadableExtension;
import org.jboss.arquillian.container.test.spi.client.deployment.AuxiliaryArchiveAppender;
import org.jboss.shrinkwrap.api.Archive;
-import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
public class TomEEWebappEJBEnricherArchiveAppender implements AuxiliaryArchiveAppender {
@@ -31,6 +32,7 @@ public class TomEEWebappEJBEnricherArchi
public Archive<?> createAuxiliaryArchive() {
return ShrinkWrap.create(JavaArchive.class, "arquillian-tomee-archive-appender.jar")
.addClasses(TomEEWebappObserver.class, TomEEWebappRemoteExtension.class, OpenEJBTransactionProvider.class)
+ .addClasses(OpenEJBEnricher.class, TomEEInjectionEnricher.class, MockitoEnricher.class)
.addAsServiceProvider(RemoteLoadableExtension.class, TomEEWebappRemoteExtension.class);
}
}
\ No newline at end of file
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappExtension.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappExtension.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappExtension.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappExtension.java Mon Oct 1 12:14:29 2012
@@ -18,11 +18,13 @@
package org.apache.tomee.arquillian.webapp;
import org.apache.openejb.arquillian.common.ArquillianUtil;
+import org.apache.openejb.arquillian.common.TomEEInjectionEnricher;
import org.apache.openejb.arquillian.common.deployment.DeploymentExceptionObserver;
import org.apache.openejb.arquillian.common.deployment.DeploymentExceptionProvider;
import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
import org.jboss.arquillian.container.test.spi.client.deployment.AuxiliaryArchiveAppender;
import org.jboss.arquillian.core.spi.LoadableExtension;
+import org.jboss.arquillian.test.spi.TestEnricher;
import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider;
public class TomEEWebappExtension implements LoadableExtension {
@@ -34,6 +36,7 @@ public class TomEEWebappExtension implem
builder.service(DeployableContainer.class, TomEEWebappContainer.class)
.service(AuxiliaryArchiveAppender.class, TomEEWebappEJBEnricherArchiveAppender.class)
.observer(DeploymentExceptionObserver.class)
+ .service(TestEnricher.class, TomEEInjectionEnricher.class)
.service(ResourceProvider.class, DeploymentExceptionProvider.class);
}
}
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappRemoteExtension.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappRemoteExtension.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappRemoteExtension.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappRemoteExtension.java Mon Oct 1 12:14:29 2012
@@ -17,8 +17,10 @@
package org.apache.tomee.arquillian.webapp;
+import org.apache.openejb.arquillian.common.TomEEInjectionEnricher;
import org.apache.openejb.arquillian.transaction.OpenEJBTransactionProvider;
import org.jboss.arquillian.container.test.spi.RemoteLoadableExtension;
+import org.jboss.arquillian.test.spi.TestEnricher;
import org.jboss.arquillian.transaction.spi.provider.TransactionProvider;
public class TomEEWebappRemoteExtension implements RemoteLoadableExtension {
@@ -26,6 +28,7 @@ public class TomEEWebappRemoteExtension
@Override
public void register(ExtensionBuilder builder) {
builder.observer(TomEEWebappObserver.class)
+ .service(TestEnricher.class, TomEEInjectionEnricher.class)
.service(TransactionProvider.class, OpenEJBTransactionProvider.class);
}
}
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/test/resources/arquillian.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/test/resources/arquillian.xml?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/test/resources/arquillian.xml (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/test/resources/arquillian.xml Mon Oct 1 12:14:29 2012
@@ -28,7 +28,7 @@
<property name="httpPort">-1</property>
<property name="ajpPort">-1</property>
<property name="stopPort">-1</property>
- <property name="tomcatVersion">7.0.27</property>
+ <property name="tomcatVersion">7.0.30</property>
<property name="version">${tomee.version}</property>
<property name="dir">target/apache-tomee-remote</property>
<property name="appWorkingDir">target/arquillian-test-working-dir</property>
Added: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AdditionalBeanDiscoverer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AdditionalBeanDiscoverer.java?rev=1392301&view=auto
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AdditionalBeanDiscoverer.java (added)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AdditionalBeanDiscoverer.java Mon Oct 1 12:14:29 2012
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+package org.apache.openejb.config;
+
+public interface AdditionalBeanDiscoverer {
+ AppModule discover(AppModule module);
+}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Mon Oct 1 12:14:29 2012
@@ -438,6 +438,10 @@ public class AnnotationDeployer implemen
removeModule();
}
}
+ final AdditionalBeanDiscoverer discoverer = SystemInstance.get().getComponent(AdditionalBeanDiscoverer.class);
+ if (discoverer != null) {
+ appModule = discoverer.discover(appModule);
+ }
return appModule;
}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java Mon Oct 1 12:14:29 2012
@@ -414,6 +414,7 @@ public class RemoteServer {
}
public void stop() {
+ Thread processKiller = null;
if (!serverHasAlreadyBeenStarted) {
try {
if (verbose) {
@@ -434,11 +435,21 @@ public class RemoteServer {
}
if (server != null) {
+ processKiller = new ProcessKillerThread(server);
+ processKiller.start();
server.waitFor();
+ processKiller.interrupt();
server = null;
}
} catch (Exception e) {
- e.printStackTrace();
+ e.printStackTrace(System.err);
+ if (processKiller != null) {
+ try {
+ processKiller.join();
+ } catch (InterruptedException e1) {
+ processKiller.interrupt();
+ }
+ }
}
}
}
@@ -479,4 +490,31 @@ public class RemoteServer {
return true;
}
+
+ public static class ProcessKillerThread extends Thread {
+ private final Process process;
+
+ public ProcessKillerThread(final Process server) {
+ process = server;
+ }
+
+ @Override
+ public void run() {
+ try {
+ Thread.sleep(5000); // TODO: configure it
+ process.exitValue();
+ } catch (IllegalThreadStateException itse) {
+ // not yet terminated, kill
+ System.err.println("Killing process " + process + " because after 5mn it is still running");
+ process.destroy();
+ try {
+ process.waitFor();
+ } catch (InterruptedException e) {
+ // no-op
+ }
+ } catch (InterruptedException e) {
+ // no-op
+ }
+ }
+ }
}
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Mon Oct 1 12:14:29 2012
@@ -409,9 +409,18 @@ public class TomcatWebAppBuilder impleme
standardContext.setDocBase(webApp.path);
}
if (standardContext.getDocBase() != null && standardContext.getDocBase().endsWith(".war")) {
+ DeploymentLoader.unpack(new File(standardContext.getDocBase()));
+ if (standardContext.getPath().endsWith(".war")) {
+ standardContext.setPath(removeFirstSlashAndWar("/" + standardContext.getPath()));
+ webApp.contextRoot = standardContext.getPath();
+ }
standardContext.setDocBase(standardContext.getDocBase().substring(0, standardContext.getDocBase().length() - 4));
}
+ if (getContextInfo(webApp.host, webApp.contextRoot) != null) { // possible because of the previous renaming
+ continue;
+ }
+
// add classloader which is an URLClassLoader created by openejb
// {@see Assembler}
//
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java?rev=1392301&r1=1392300&r2=1392301&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java Mon Oct 1 12:14:29 2012
@@ -17,6 +17,7 @@
*/
package org.apache.tomee.catalina.deployment;
+import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.assembler.WebAppDeployer;
import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.WebAppBuilder;
@@ -34,7 +35,7 @@ public class TomcatWebappDeployer implem
try {
tomcatWebAppBuilder.deployWebApps(fakeInfo(file, context), null);
} catch (Exception e) {
- throw new TomEERuntimeException(e);
+ throw new OpenEJBRuntimeException(e);
}
return tomcatWebAppBuilder.standaAloneWebAppInfo(file.getAbsolutePath());
}