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 2015/03/20 17:56:51 UTC

tomee git commit: trying to propagate cdi exception in DeployerEjb as it is done for webapps

Repository: tomee
Updated Branches:
  refs/heads/master 4fbe1614e -> e4536b70f


trying to propagate cdi exception in DeployerEjb as it is done for webapps


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/e4536b70
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/e4536b70
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/e4536b70

Branch: refs/heads/master
Commit: e4536b70ff0e72cd932405226e962b35ce438e28
Parents: 4fbe161
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 20 17:56:38 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 20 17:56:38 2015 +0100

----------------------------------------------------------------------
 .../apache/openejb/assembler/DeployerEjb.java   | 26 ++++++++++++---
 tck/cdi-tomee/src/test/resources/failing.xml    | 35 ++++++++++----------
 .../tomee/catalina/TomcatWebAppBuilder.java     | 15 +++++++++
 3 files changed, 54 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/e4536b70/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
index e83c383..908d14b 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
@@ -24,6 +24,7 @@ import org.apache.openejb.OpenEJBRuntimeException;
 import org.apache.openejb.UndeployException;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.DeploymentExceptionManager;
 import org.apache.openejb.config.AppModule;
 import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.DeploymentLoader;
@@ -263,13 +264,28 @@ public class DeployerEjb implements Deployer {
                 throw (ValidationException) e;
             }
 
-            if (e instanceof OpenEJBException) {
-                if (e.getCause() instanceof ValidationException) {
-                    throw (ValidationException) e.getCause();
+            final Throwable ex;
+            final DeploymentExceptionManager dem = SystemInstance.get().getComponent(DeploymentExceptionManager.class);
+            if (dem != null) {
+                if (dem.hasDeploymentFailed()) {
+                    ex = dem.getLastException();
+                } else {
+                    ex = e;
                 }
-                throw (OpenEJBException) e;
+                if (appInfo != null) {
+                    dem.clearLastException(appInfo);
+                }
+            } else {
+                ex = e;
             }
-            throw new OpenEJBException(e);
+
+            if (ex instanceof OpenEJBException) {
+                if (ex.getCause() instanceof ValidationException) {
+                    throw (ValidationException) ex.getCause();
+                }
+                throw (OpenEJBException) ex;
+            }
+            throw new OpenEJBException(ex);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/e4536b70/tck/cdi-tomee/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-tomee/src/test/resources/failing.xml b/tck/cdi-tomee/src/test/resources/failing.xml
index 18bcd2f..ccad1ed 100644
--- a/tck/cdi-tomee/src/test/resources/failing.xml
+++ b/tck/cdi-tomee/src/test/resources/failing.xml
@@ -24,23 +24,24 @@
   <test name="CDI TCK">
     <classes>
       <!--
-  ConversationFilterTest>Arquillian.run:164->testConversationBusy:133 expected [BusyConversationException] but found [500]
-  EnterpriseBeanDiscoveryTest>Arquillian.run:164->testExplicitBeanArchiveEmptyDescriptor:133->assertDiscoveredAndAvailable:172 expected [true] but found [false]
-  EnterpriseBeanDiscoveryTest>Arquillian.run:164->testExplicitBeanArchiveLegacyDescriptor:140->assertDiscoveredAndAvailable:172 expected [true] but found [false]
-  EnterpriseBeanDiscoveryTest>Arquillian.run:164->testExplicitBeanArchiveModeAll:126->assertDiscoveredAndAvailable:172 expected [true] but found [false]
-  EnterpriseBeanDiscoveryTest>Arquillian.run:164->testImplicitBeanArchiveModeAnnotated:154->assertDiscoveredAndAvailable:172 expected [true] but found [false]
-  EnterpriseBeanDiscoveryTest>Arquillian.run:164->testImplicitBeanArchiveNoDescriptor:147->assertDiscoveredAndAvailable:170->AbstractTest.getContextualReference:157 » UnsatisfiedResolution
-  EnterpriseBeanDiscoveryTest>Arquillian.run:164->testNoBeanArchiveModeNone:160->assertNotDiscoveredAndNotAvailable:178 expected [true] but found [false]
-  InstalledLibraryWarTest>Arquillian.arquillianBeforeClass:109 » Deployment Unab...
-  ResourceDefinitionWithDifferentTypeTest>Arquillian.arquillianBeforeClass:109 » Runtime
-  ResourceDefinitionWithDifferentTypeTest>Arquillian.arquillianBeforeClass:109 » Runtime
-  ResourceDefinitionWithDifferentTypeTest>Arquillian.arquillianBeforeClass:109 » Runtime
-  InterModuleELResolutionTest>Arquillian.run:164->testEnabledManagedBeanAvailableForELResolution:62 » PropertyNotFound
-  DisabledProducerFieldInjectionNotAvailableTest>Arquillian.arquillianBeforeClass:109 » Runtime
-  DisabledProducerMethodInjectionNotAvailableTest>Arquillian.arquillianBeforeClass:109 » Runtime
-  DisabledSessionBeanInjectionNotAvailableTest>Arquillian.arquillianBeforeClass:109 » Runtime
-  -->
-      <class name="org.jboss.cdi.tck.tests.extensions.lifecycle.bbd.DeploymentTest" />
+      ConversationFilterTest>Arquillian.run:164->testConversationBusy:133 expected [BusyConversationException] but found [500]
+      EnterpriseBeanDiscoveryTest>Arquillian.run:164->testExplicitBeanArchiveEmptyDescriptor:133->assertDiscoveredAndAvailable:172 expected [true] but found [false]
+      EnterpriseBeanDiscoveryTest>Arquillian.run:164->testExplicitBeanArchiveLegacyDescriptor:140->assertDiscoveredAndAvailable:172 expected [true] but found [false]
+      EnterpriseBeanDiscoveryTest>Arquillian.run:164->testExplicitBeanArchiveModeAll:126->assertDiscoveredAndAvailable:172 expected [true] but found [false]
+      EnterpriseBeanDiscoveryTest>Arquillian.run:164->testImplicitBeanArchiveModeAnnotated:154->assertDiscoveredAndAvailable:172 expected [true] but found [false]
+      EnterpriseBeanDiscoveryTest>Arquillian.run:164->testImplicitBeanArchiveNoDescriptor:147->assertDiscoveredAndAvailable:170->AbstractTest.getContextualReference:157 » UnsatisfiedResolution
+      EnterpriseBeanDiscoveryTest>Arquillian.run:164->testNoBeanArchiveModeNone:160->assertNotDiscoveredAndNotAvailable:178 expected [true] but found [false]
+      MultiWebModuleWithExtensionTest>Arquillian.run:164 » IllegalState Error launch...
+      InstalledLibraryWarTest>Arquillian.arquillianBeforeClass:109 » Deployment Unab...
+      DeploymentTest>Arquillian.arquillianBeforeClass:109 » Deployment Unable to dep...
+      ResourceDefinitionWithDifferentTypeTest>Arquillian.arquillianBeforeClass:109 » Runtime
+      ResourceDefinitionWithDifferentTypeTest>Arquillian.arquillianBeforeClass:109 » Runtime
+      ResourceDefinitionWithDifferentTypeTest>Arquillian.arquillianBeforeClass:109 » Runtime
+      InterModuleELResolutionTest>Arquillian.run:164->testEnabledManagedBeanAvailableForELResolution:62 » PropertyNotFound
+      DisabledProducerMethodInjectionNotAvailableTest>Arquillian.arquillianBeforeClass:109 » Runtime
+      DisabledSessionBeanInjectionNotAvailableTest>Arquillian.arquillianBeforeClass:109 » Runtime
+      -->
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.broken.DisabledProducerFieldInjectionNotAvailableTest" />
     </classes>
   </test>
 </suite>

http://git-wip-us.apache.org/repos/asf/tomee/blob/e4536b70/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
index a5dd170..3052617 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
@@ -1297,6 +1297,12 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
                     OpenEJBLifecycle.CURRENT_APP_INFO.set(contextInfo.appInfo);
                     try {
                         new CdiBuilder().build(contextInfo.appInfo, appContext, beanContexts, webContext);
+                    } catch (final Exception e) {
+                        final DeploymentExceptionManager dem = SystemInstance.get().getComponent(DeploymentExceptionManager.class);
+                        if (dem != null) {
+                            dem.saveDeploymentException(contextInfo.appInfo, e);
+                        }
+                        throw e;
                     } finally {
                         OpenEJBLifecycle.CURRENT_APP_INFO.remove();
                     }
@@ -1318,6 +1324,15 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
 
             } catch (final Exception e) {
                 logger.error("Error merging Java EE JNDI entries in to war " + standardContext.getPath() + ": Exception: " + e.getMessage(), e);
+                if (System.getProperty(TOMEE_EAT_EXCEPTION_PROP) == null) {
+                    final DeploymentExceptionManager dem = SystemInstance.get().getComponent(DeploymentExceptionManager.class);
+                    if (dem != null && dem.getDeploymentException(contextInfo.appInfo) != null) {
+                        if (RuntimeException.class.isInstance(e)) {
+                            throw RuntimeException.class.cast(e);
+                        }
+                        throw new TomEERuntimeException(e);
+                    }
+                }
             }
 
             final JspFactory factory = JspFactory.getDefaultFactory();