Author: rmannibucau
Date: Tue Aug 7 13:10:14 2012
New Revision: 1370237
URL: http://svn.apache.org/viewvc?rev=1370237&view=rev
Log:
TOMEE-351 ability to get deployment exceptions in test
Added:
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionObserver.java
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionProvider.java
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/src/test/java/org/apache/openejb/arquillian/tests/deployment/
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/src/test/java/org/apache/openejb/arquillian/tests/deployment/exception/
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/src/test/java/org/apache/openejb/arquillian/tests/deployment/exception/DeploymentExceptionErrorTest.java
Modified:
openejb/trunk/openejb/arquillian/arquillian-common/pom.xml
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.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/OpenEJBExtension.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-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEExtension.java
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEExtension.java
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappExtension.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=1370237&r1=1370236&r2=1370237&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-common/pom.xml (original)
+++ openejb/trunk/openejb/arquillian/arquillian-common/pom.xml Tue Aug 7
13:10:14 2012
@@ -29,4 +29,17 @@
<packaging>jar</packaging>
<name>OpenEJB :: Arquillian Adaptors Parent :: Common</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.arquillian.test</groupId>
+ <artifactId>arquillian-test-spi</artifactId>
+ <version>${version.arquillian}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.arquillian.container</groupId>
+ <artifactId>arquillian-container-spi</artifactId>
+ <version>${version.arquillian}</version>
+ </dependency>
+ </dependencies>
</project>
Added:
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionObserver.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionObserver.java?rev=1370237&view=auto
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionObserver.java
(added)
+++
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionObserver.java
Tue Aug 7 13:10:14 2012
@@ -0,0 +1,57 @@
+package org.apache.openejb.arquillian.common.deployment;
+
+import org.jboss.arquillian.container.spi.event.DeployDeployment;
+import org.jboss.arquillian.core.api.annotation.Observes;
+import org.jboss.arquillian.core.spi.EventContext;
+import org.jboss.arquillian.test.spi.event.suite.AfterClass;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+public class DeploymentExceptionObserver {
+ private static final Map<Class<?>, Exception> EXCEPTIONS = new
HashMap<Class<?>, Exception>();
+ private static final Map<Class<?>, Exception> PARENT_EXCEPTIONS = new
HashMap<Class<?>, Exception>();
+
+ public void observes(@Observes final EventContext<DeployDeployment> dd)
throws Exception {
+ try {
+ dd.proceed();
+ } catch (Exception t) {
+ if (t == null) {
+ EXCEPTIONS.put(NullPointerException.class, new
NullPointerException());
+ } else {
+ EXCEPTIONS.put(t.getClass(), t);
+ Throwable current = t.getCause();
+ while (current != null) {
+ if (current instanceof Exception) {
+ PARENT_EXCEPTIONS.put(current.getClass(), (Exception)
current);
+ }
+ if (current.getCause() != current) {
+ current = current.getCause();
+ }
+ }
+ }
+ throw t;
+ }
+ }
+
+ public static Exception getExceptions(final Class<?> clazz) {
+ final Exception ex = EXCEPTIONS.get(clazz);
+ if (ex != null) {
+ return ex;
+ }
+ return PARENT_EXCEPTIONS.get(clazz);
+ }
+
+ public static Set<Class<?>> availableExceptionTypes() {
+ final Set<Class<?>> set = new HashSet<Class<?>>(EXCEPTIONS.keySet());
+ set.addAll(PARENT_EXCEPTIONS.keySet());
+ return set;
+ }
+
+ public void cleanUp(@Observes final EventContext<AfterClass> event) throws
Exception {
+ EXCEPTIONS.clear();
+ PARENT_EXCEPTIONS.clear();
+ }
+}
Added:
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionProvider.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionProvider.java?rev=1370237&view=auto
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionProvider.java
(added)
+++
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionProvider.java
Tue Aug 7 13:10:14 2012
@@ -0,0 +1,25 @@
+package org.apache.openejb.arquillian.common.deployment;
+
+import org.jboss.arquillian.test.api.ArquillianResource;
+import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider;
+
+import java.lang.annotation.Annotation;
+
+public class DeploymentExceptionProvider implements ResourceProvider {
+ private Class<?> lastType;
+
+ @Override
+ public boolean canProvide(final Class<?> type) {
+ if
(DeploymentExceptionObserver.availableExceptionTypes().contains(type)) {
+ lastType = type;
+ return true;
+ }
+ lastType = null;
+ return false;
+ }
+
+ @Override
+ public Object lookup(final ArquillianResource resource, final
Annotation... qualifiers) {
+ return DeploymentExceptionObserver.getExceptions(lastType);
+ }
+}
Modified:
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java?rev=1370237&r1=1370236&r2=1370237&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
Tue Aug 7 13:10:14 2012
@@ -16,20 +16,6 @@
*/
package org.apache.openejb.arquillian.openejb;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.config.AppModule;
@@ -61,7 +47,26 @@ import org.jboss.shrinkwrap.api.asset.Ur
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.impl.base.filter.IncludeRegExpPaths;
-public class OpenEJBArchiveProcessor implements ApplicationArchiveProcessor {
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+// doesn't implement ApplicationArchiveProcessor anymore since in some cases
+// (with some observers set for instance)
+// it is not called before the deployment itself
+// so it is like if it was skipped
+public class OpenEJBArchiveProcessor {
private static final Logger LOGGER =
Logger.getLogger(OpenEJBArchiveProcessor.class.getName());
private static final String META_INF = "META-INF/";
@@ -75,12 +80,7 @@ public class OpenEJBArchiveProcessor imp
private static final String ENV_ENTRIES_PROPERTIES =
"env-entries.properties";
public static final String WEB_INF_CLASSES = "/WEB-INF/classes/";
- @Inject
- @SuiteScoped
- private InstanceProducer<AppModule> module;
-
- @Override
- public void process(final Archive<?> archive, final TestClass testClass) {
+ public static AppModule createModule(final Archive<?> archive, final
TestClass testClass) {
final Class<?> javaClass = testClass.getJavaClass();
final AppModule appModule = new AppModule(javaClass.getClassLoader(),
archive.getName());
@@ -205,11 +205,10 @@ public class OpenEJBArchiveProcessor imp
}
}
- // export it to be usable in the container
- module.set(appModule);
+ return appModule;
}
- private <T> T get(Class<T> fileClass, String attr, Asset asset) {
+ private static <T> T get(Class<T> fileClass, String attr, Asset asset) {
try {
final Field field = asset.getClass().getDeclaredField(attr);
field.setAccessible(true);
@@ -219,7 +218,7 @@ public class OpenEJBArchiveProcessor imp
}
}
- private org.apache.xbean.finder.archive.Archive finderArchive(final
Archive<?> archive, final ClassLoader cl, final Collection<URL>
additionalPaths) {
+ private static org.apache.xbean.finder.archive.Archive finderArchive(final
Archive<?> archive, final ClassLoader cl, final Collection<URL>
additionalPaths) {
final List<Class<?>> classes = new ArrayList<Class<?>>();
final Map<ArchivePath, Node> content = archive.getContent(new
IncludeRegExpPaths(".*.class"));
for (Map.Entry<ArchivePath, Node> node : content.entrySet()) {
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=1370237&r1=1370236&r2=1370237&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
Tue Aug 7 13:10:14 2012
@@ -16,15 +16,6 @@
*/
package org.apache.openejb.arquillian.openejb;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.util.Map;
-import java.util.Properties;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpSession;
import org.apache.openejb.AppContext;
import org.apache.openejb.OpenEJB;
import org.apache.openejb.OpenEJBRuntimeException;
@@ -51,10 +42,21 @@ import org.jboss.arquillian.container.sp
import org.jboss.arquillian.core.api.Instance;
import org.jboss.arquillian.core.api.InstanceProducer;
import org.jboss.arquillian.core.api.annotation.Inject;
+import org.jboss.arquillian.test.spi.TestClass;
import org.jboss.arquillian.test.spi.annotation.SuiteScoped;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.descriptor.api.Descriptor;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.Map;
+import java.util.Properties;
+
import static org.apache.openejb.cdi.ScopeHelper.startContexts;
import static org.apache.openejb.cdi.ScopeHelper.stopContexts;
@@ -109,9 +111,6 @@ public class OpenEJBDeployableContainer
private InstanceProducer<ClassLoader> classLoader;
@Inject
- private Instance<AppModule> module;
-
- @Inject
private Instance<ServletContext> servletContext;
@Inject
@@ -123,6 +122,9 @@ public class OpenEJBDeployableContainer
@Inject
private Instance<AppContext> appContext;
+ @Inject
+ private Instance<TestClass> testClass;
+
@Override
public Class<OpenEJBConfiguration> getConfigurationClass() {
return OpenEJBConfiguration.class;
@@ -166,7 +168,8 @@ public class OpenEJBDeployableContainer
@Override
public ProtocolMetaData deploy(final Archive<?> archive) throws
DeploymentException {
try {
- final AppInfo appInfo =
configurationFactory.configureApplication(module.get());
+ final AppModule module =
OpenEJBArchiveProcessor.createModule(archive, testClass.get());
+ final AppInfo appInfo =
configurationFactory.configureApplication(module);
final AppContext appCtx = assembler.createApplication(appInfo);
final ServletContext appServletContext = new MockServletContext();
Modified:
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBExtension.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBExtension.java?rev=1370237&r1=1370236&r2=1370237&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBExtension.java
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBExtension.java
Tue Aug 7 13:10:14 2012
@@ -21,12 +21,15 @@ import java.util.logging.Handler;
import java.util.logging.LogManager;
import java.util.logging.Logger;
import org.apache.openejb.arquillian.common.ArquillianUtil;
+import
org.apache.openejb.arquillian.common.deployment.DeploymentExceptionObserver;
+import
org.apache.openejb.arquillian.common.deployment.DeploymentExceptionProvider;
import org.apache.openejb.util.JuliLogStreamFactory;
import org.apache.openejb.util.LogCategory;
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;
+import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider;
public class OpenEJBExtension implements LoadableExtension {
private static final String OPENEJB_ADAPTER_NAME = "openejb";
@@ -61,7 +64,9 @@ public class OpenEJBExtension implements
extensionBuilder.service(DeployableContainer.class,
OpenEJBDeployableContainer.class)
.service(TestEnricher.class, OpenEJBInjectionEnricher.class)
.service(ApplicationArchiveProcessor.class,
OpenEJBArchiveProcessor.class)
- .observer(TestObserver.class);
+ .observer(TestObserver.class)
+ .observer(DeploymentExceptionObserver.class)
+ .service(ResourceProvider.class,
DeploymentExceptionProvider.class);
}
}
}
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=1370237&r1=1370236&r2=1370237&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
Tue Aug 7 13:10:14 2012
@@ -42,6 +42,10 @@ public class OpenEJBInjectionEnricher im
@Override
public void enrich(final Object testInstance) {
final AppContext ctx = appContext.get();
+ if (ctx == null) { // deployment exception
+ return;
+ }
+
final BeanManager bm = ctx.getWebBeansContext().getBeanManagerImpl();
try {
final Set<Bean<?>> beans = bm.getBeans(testInstance.getClass());
Added:
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java?rev=1370237&view=auto
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java
(added)
+++
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java
Tue Aug 7 13:10:14 2012
@@ -0,0 +1,49 @@
+package org.apache.openejb.arquillian.openejb;
+
+import org.apache.openejb.OpenEJBException;
+import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.jboss.arquillian.container.spi.client.container.DeploymentException;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.ShouldThrowException;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.test.api.ArquillianResource;
+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.WebArchive;
+import org.jboss.shrinkwrap.descriptor.api.Descriptors;
+import org.jboss.shrinkwrap.descriptor.api.beans10.BeansDescriptor;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.assertNotNull;
+
+@RunWith(Arquillian.class)
+public class ExceptionInjectionTest {
+ @ArquillianResource
+ private DeploymentException de;
+
+ @ArquillianResource
+ private WebBeansConfigurationException owbException;
+
+ @ArquillianResource
+ private OpenEJBException oejbException;
+
+ @Deployment(testable = false)
+ @ShouldThrowException(DeploymentException.class)
+ public static WebArchive war() {
+ return ShrinkWrap.create(WebArchive.class)
+ .addAsWebInfResource(new
StringAsset(Descriptors.create(BeansDescriptor.class)
+ .createInterceptors()
+ .clazz("i.dont.exist.so.i.ll.make.the.deployment.fail")
+ .up()
+ .exportAsString()), ArchivePaths.create("beans.xml"));
+ }
+
+ @Test
+ public void checkSomeExceptionsOfTheHierarchy() {
+ assertNotNull(de);
+ assertNotNull(owbException);
+ assertNotNull(oejbException);
+ }
+}
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=1370237&r1=1370236&r2=1370237&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
Tue Aug 7 13:10:14 2012
@@ -18,15 +18,20 @@
package org.apache.openejb.arquillian.embedded;
import org.apache.openejb.arquillian.common.ArquillianUtil;
+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.core.spi.LoadableExtension;
+import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider;
public class EmbeddedTomEEExtension implements LoadableExtension {
private static final String ADAPTER = "tomee-embedded";
@Override public void register(ExtensionBuilder builder) {
if (ArquillianUtil.isCurrentAdapter(ADAPTER)) {
- builder.service(DeployableContainer.class,
EmbeddedTomEEContainer.class);
+ builder.service(DeployableContainer.class,
EmbeddedTomEEContainer.class)
+ .observer(DeploymentExceptionObserver.class)
+ .service(ResourceProvider.class,
DeploymentExceptionProvider.class);
}
}
}
Modified:
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEExtension.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEExtension.java?rev=1370237&r1=1370236&r2=1370237&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEExtension.java
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEExtension.java
Tue Aug 7 13:10:14 2012
@@ -18,9 +18,12 @@
package org.apache.tomee.arquillian.remote;
import org.apache.openejb.arquillian.common.ArquillianUtil;
+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.enricher.resource.ResourceProvider;
public class RemoteTomEEExtension implements LoadableExtension {
private static final String ADAPTER = "tomee-remote";
@@ -28,7 +31,9 @@ public class RemoteTomEEExtension implem
@Override public void register(ExtensionBuilder builder) {
if (ArquillianUtil.isCurrentAdapter(ADAPTER)) {
builder.service(DeployableContainer.class,
RemoteTomEEContainer.class)
- .service(AuxiliaryArchiveAppender.class,
RemoteTomEEEJBEnricherArchiveAppender.class);
+ .service(AuxiliaryArchiveAppender.class,
RemoteTomEEEJBEnricherArchiveAppender.class)
+ .observer(DeploymentExceptionObserver.class)
+ .service(ResourceProvider.class,
DeploymentExceptionProvider.class);
}
}
}
Added:
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/src/test/java/org/apache/openejb/arquillian/tests/deployment/exception/DeploymentExceptionErrorTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-tests/src/test/java/org/apache/openejb/arquillian/tests/deployment/exception/DeploymentExceptionErrorTest.java?rev=1370237&view=auto
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/src/test/java/org/apache/openejb/arquillian/tests/deployment/exception/DeploymentExceptionErrorTest.java
(added)
+++
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/src/test/java/org/apache/openejb/arquillian/tests/deployment/exception/DeploymentExceptionErrorTest.java
Tue Aug 7 13:10:14 2012
@@ -0,0 +1,49 @@
+package org.apache.openejb.arquillian.tests.deployment.exception;
+
+import org.apache.openejb.OpenEJBException;
+import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.jboss.arquillian.container.spi.client.container.DeploymentException;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.ShouldThrowException;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.test.api.ArquillianResource;
+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.WebArchive;
+import org.jboss.shrinkwrap.descriptor.api.Descriptors;
+import org.jboss.shrinkwrap.descriptor.api.beans10.BeansDescriptor;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.assertNotNull;
+
+@RunWith(Arquillian.class)
+public class DeploymentExceptionErrorTest {
+ @ArquillianResource
+ private DeploymentException de;
+
+ @ArquillianResource
+ private WebBeansConfigurationException owbException;
+
+ @ArquillianResource
+ private OpenEJBException oejbException;
+
+ @Deployment(testable = false)
+ @ShouldThrowException(DeploymentException.class)
+ public static WebArchive war() {
+ return ShrinkWrap.create(WebArchive.class)
+ .addAsWebInfResource(new
StringAsset(Descriptors.create(BeansDescriptor.class)
+ .createInterceptors()
+
.clazz("i.dont.exist.so.i.ll.make.the.deployment.fail")
+ .up()
+ .exportAsString()),
ArchivePaths.create("beans.xml"));
+ }
+
+ @Test
+ public void checkSomeExceptionsOfTheHierarchy() {
+ assertNotNull(de);
+ assertNotNull(owbException);
+ assertNotNull(oejbException);
+ }
+}
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=1370237&r1=1370236&r2=1370237&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
Tue Aug 7 13:10:14 2012
@@ -18,9 +18,12 @@
package org.apache.tomee.arquillian.webapp;
import org.apache.openejb.arquillian.common.ArquillianUtil;
+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.enricher.resource.ResourceProvider;
public class TomEEWebappExtension implements LoadableExtension {
private static final String ADAPTER = "tomee-webapp";
@@ -29,7 +32,9 @@ public class TomEEWebappExtension implem
public void register(ExtensionBuilder builder) {
if (ArquillianUtil.isCurrentAdapter(ADAPTER)) {
builder.service(DeployableContainer.class,
TomEEWebappContainer.class)
- .service(AuxiliaryArchiveAppender.class,
TomEEWebappEJBEnricherArchiveAppender.class);
+ .service(AuxiliaryArchiveAppender.class,
TomEEWebappEJBEnricherArchiveAppender.class)
+ .observer(DeploymentExceptionObserver.class)
+ .service(ResourceProvider.class,
DeploymentExceptionProvider.class);
}
}
}