[jboss-cvs] JBossAS SVN: r75878 - in projects/ejb3/trunk/transactions/src: test/java/org/jboss/ejb3/tx/test/metadata/unit and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 16 04:19:01 EDT 2008


Author: wolfc
Date: 2008-07-16 04:19:01 -0400 (Wed, 16 Jul 2008)
New Revision: 75878

Modified:
   projects/ejb3/trunk/transactions/src/main/java/org/jboss/ejb3/tx/metadata/ApplicationExceptionComponentMetaDataLoaderFactory.java
   projects/ejb3/trunk/transactions/src/test/java/org/jboss/ejb3/tx/test/metadata/unit/MetaDataTestCase.java
Log:
EJBTHREE-1438: fixed NPEs

Modified: projects/ejb3/trunk/transactions/src/main/java/org/jboss/ejb3/tx/metadata/ApplicationExceptionComponentMetaDataLoaderFactory.java
===================================================================
--- projects/ejb3/trunk/transactions/src/main/java/org/jboss/ejb3/tx/metadata/ApplicationExceptionComponentMetaDataLoaderFactory.java	2008-07-16 08:09:58 UTC (rev 75877)
+++ projects/ejb3/trunk/transactions/src/main/java/org/jboss/ejb3/tx/metadata/ApplicationExceptionComponentMetaDataLoaderFactory.java	2008-07-16 08:19:01 UTC (rev 75878)
@@ -27,8 +27,10 @@
 import org.jboss.ejb3.metadata.MetaDataBridge;
 import org.jboss.ejb3.metadata.plugins.loader.BridgedMetaDataLoader;
 import org.jboss.ejb3.metadata.spi.signature.ClassSignature;
+import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.spec.ApplicationExceptionMetaData;
+import org.jboss.metadata.ejb.spec.ApplicationExceptionsMetaData;
 import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
 import org.jboss.metadata.spi.scope.ScopeKey;
 import org.jboss.metadata.spi.signature.Signature;
@@ -62,6 +64,20 @@
    
    private ApplicationExceptionMetaData findApplicationException(JBossEnterpriseBeanMetaData metaData, String name)
    {
-      return metaData.getEjbJarMetaData().getAssemblyDescriptor().getApplicationExceptions().get(name);
+      return getApplicationException(getApplicationExceptions(metaData.getEjbJarMetaData().getAssemblyDescriptor()), name);
    }
+   
+   private ApplicationExceptionMetaData getApplicationException(ApplicationExceptionsMetaData applicationExceptions, String name)
+   {
+      if(applicationExceptions == null)
+         return null;
+      return applicationExceptions.get(name);
+   }
+   
+   private ApplicationExceptionsMetaData getApplicationExceptions(JBossAssemblyDescriptorMetaData assemblyDescriptor)
+   {
+      if(assemblyDescriptor == null)
+         return null;
+      return assemblyDescriptor.getApplicationExceptions();
+   }
 }

Modified: projects/ejb3/trunk/transactions/src/test/java/org/jboss/ejb3/tx/test/metadata/unit/MetaDataTestCase.java
===================================================================
--- projects/ejb3/trunk/transactions/src/test/java/org/jboss/ejb3/tx/test/metadata/unit/MetaDataTestCase.java	2008-07-16 08:09:58 UTC (rev 75877)
+++ projects/ejb3/trunk/transactions/src/test/java/org/jboss/ejb3/tx/test/metadata/unit/MetaDataTestCase.java	2008-07-16 08:19:01 UTC (rev 75878)
@@ -26,6 +26,7 @@
 
 import java.net.URL;
 
+import javax.ejb.EJBTransactionRolledbackException;
 import javax.naming.InitialContext;
 import javax.transaction.Status;
 import javax.transaction.TransactionManager;
@@ -137,4 +138,61 @@
          tm.rollback();
       }
    }
+   
+   private void testNPE(JBossSessionBeanMetaData enterpriseBean) throws Throwable
+   {
+      container = new StatefulContainer<MyStatefulBean>("Stateful Container", MyStatefulBean.class, enterpriseBean);
+      
+      MyStateful bean = container.constructProxy(MyStateful.class);
+      
+      tm.begin();
+      try
+      {
+         bean.throwAppRuntimeException();
+         fail("Should have thrown EJBTransactionRolledbackException");
+      }
+      catch(EJBTransactionRolledbackException e)
+      {
+         // good, it's not an application exception
+      }
+      finally
+      {
+         tm.rollback();
+      }   
+   }
+   
+   @Test
+   public void testNPE1() throws Throwable
+   {
+      JBossAssemblyDescriptorMetaData assemblyDescriptor = new JBossAssemblyDescriptorMetaData();
+      //assemblyDescriptor.setApplicationExceptions(applicationExceptions);
+      
+      JBossSessionBeanMetaData enterpriseBean = new JBossSessionBeanMetaData();
+      enterpriseBean.setName("MyStatefulBean");
+      
+      JBossEnterpriseBeansMetaData enterpriseBeans = new JBossEnterpriseBeansMetaData();
+      enterpriseBeans.add(enterpriseBean);
+      
+      JBoss50MetaData jarMetaData = new JBoss50MetaData();
+      jarMetaData.setAssemblyDescriptor(assemblyDescriptor);
+      jarMetaData.setEnterpriseBeans(enterpriseBeans);
+      
+      testNPE(enterpriseBean);
+   }
+   
+   @Test
+   public void testNPE2() throws Throwable
+   {
+      JBossSessionBeanMetaData enterpriseBean = new JBossSessionBeanMetaData();
+      enterpriseBean.setName("MyStatefulBean");
+      
+      JBossEnterpriseBeansMetaData enterpriseBeans = new JBossEnterpriseBeansMetaData();
+      enterpriseBeans.add(enterpriseBean);
+      
+      JBoss50MetaData jarMetaData = new JBoss50MetaData();
+      //jarMetaData.setAssemblyDescriptor(assemblyDescriptor);
+      jarMetaData.setEnterpriseBeans(enterpriseBeans);
+      
+      testNPE(enterpriseBean);
+   }
 }




More information about the jboss-cvs-commits mailing list