[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