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);
         }
     }
 }


Reply via email to