[jboss-cvs] JBossAS SVN: r102475 - in projects/metadata/ejb/trunk/src: main/java/org/jboss/metadata/ejb/spec and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Mar 16 14:20:45 EDT 2010
Author: jaikiran
Date: 2010-03-16 14:20:44 -0400 (Tue, 16 Mar 2010)
New Revision: 102475
Modified:
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java
projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/concurrency/CMCSingletonBean.java
projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/concurrency/unit/ConcurrencyManagementTestCase.java
Log:
JBMETA-263 Fixed the SessionBean31MetaData and JBosssessionbean31MetaData to return modifiable map of concurrent methods
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java 2010-03-16 18:14:56 UTC (rev 102474)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java 2010-03-16 18:20:44 UTC (rev 102475)
@@ -199,7 +199,7 @@
{
if (this.concurrentMethods == null)
{
- return Collections.EMPTY_MAP;
+ this.concurrentMethods = new HashMap<NamedMethodMetaData, ConcurrentMethodMetaData>();
}
return this.concurrentMethods;
}
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java 2010-03-16 18:14:56 UTC (rev 102474)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java 2010-03-16 18:20:44 UTC (rev 102475)
@@ -212,7 +212,7 @@
{
if (this.concurrentMethods == null)
{
- return Collections.EMPTY_MAP;
+ this.concurrentMethods = new HashMap<NamedMethodMetaData, ConcurrentMethodMetaData>();
}
return this.concurrentMethods;
}
Modified: projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/concurrency/CMCSingletonBean.java
===================================================================
--- projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/concurrency/CMCSingletonBean.java 2010-03-16 18:14:56 UTC (rev 102474)
+++ projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/concurrency/CMCSingletonBean.java 2010-03-16 18:20:44 UTC (rev 102475)
@@ -23,6 +23,8 @@
import javax.ejb.ConcurrencyManagement;
import javax.ejb.ConcurrencyManagementType;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
import javax.ejb.Singleton;
/**
@@ -36,4 +38,20 @@
public class CMCSingletonBean
{
+ @Lock (LockType.READ)
+ public void readLockMethod(String arg1)
+ {
+ // do nothing
+ }
+
+ @Lock (LockType.WRITE)
+ public long writeLockMethod()
+ {
+ return 0;
+ }
+
+ public void defaultLockMethod(int i)
+ {
+ // do nothing
+ }
}
Modified: projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/concurrency/unit/ConcurrencyManagementTestCase.java
===================================================================
--- projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/concurrency/unit/ConcurrencyManagementTestCase.java 2010-03-16 18:14:56 UTC (rev 102474)
+++ projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/concurrency/unit/ConcurrencyManagementTestCase.java 2010-03-16 18:20:44 UTC (rev 102475)
@@ -27,6 +27,7 @@
import static org.junit.Assert.assertTrue;
import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Method;
import java.net.URL;
import java.util.Collection;
import java.util.Map;
@@ -256,6 +257,88 @@
}
/**
+ * Test that the {@link Lock} annotation specified on a method is processed
+ * correctly
+ *
+ * @throws Exception
+ */
+ @Test
+ @ScanPackage("org.jboss.metadata.ejb.test.concurrency")
+ public void testLockManagementAnnotationProcessingForSpecificMethod() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBossMetaData metaData = creator.create(classes);
+ assertNotNull("Metadata created for singleton bean was null", metaData);
+
+ JBossEnterpriseBeanMetaData enterpriseBean = metaData.getEnterpriseBean(CMCSingletonBean.class.getSimpleName());
+ this.assertSessionBean(enterpriseBean);
+ JBossSessionBean31MetaData sessionBean = (JBossSessionBean31MetaData) enterpriseBean;
+
+ Method readMethod = CMCSingletonBean.class.getDeclaredMethod("readLockMethod", new Class<?>[]
+ {String.class});
+ this.assertLockTypeOnMethod(sessionBean, readMethod, LockType.READ);
+
+ Method writeMethod = CMCSingletonBean.class.getDeclaredMethod("writeLockMethod", new Class<?>[]
+ {});
+ this.assertLockTypeOnMethod(sessionBean, writeMethod, LockType.WRITE);
+
+ Method defaultLockMethod = CMCSingletonBean.class.getDeclaredMethod("defaultLockMethod", new Class<?>[]
+ {int.class});
+ this.assertNullConcurrentMethodMetaData(sessionBean, defaultLockMethod);
+
+ }
+
+ /**
+ * Assert that the lock type on the corresponding method on the session bean is equal to the
+ * passed locktype
+ * @param sessionBean
+ * @param method
+ * @param lockType
+ */
+ private void assertLockTypeOnMethod(JBossSessionBean31MetaData sessionBean, Method method, LockType lockType)
+ {
+ NamedMethodMetaData readMethodMetaData = new NamedMethodMetaData();
+ readMethodMetaData.setName(method.getName());
+ if (method.getParameterTypes() != null)
+ {
+ MethodParametersMetaData methodParamsMetaData = new MethodParametersMetaData();
+ for (Class<?> paramType : method.getParameterTypes())
+ {
+ methodParamsMetaData.add(paramType.getName());
+ }
+ readMethodMetaData.setMethodParams(methodParamsMetaData);
+ }
+ ConcurrentMethodMetaData concurrentMethod = sessionBean.getConcurrentMethods().get(readMethodMetaData);
+ assertNotNull("Concurrent method metadata not found on method " + readMethodMetaData.getName(), concurrentMethod);
+ assertEquals("Unexpected locktype on method " + readMethodMetaData.getName(), lockType, concurrentMethod
+ .getLockType());
+ }
+
+ /**
+ * Asser that the concurrent method metadata is absent on the passed method corresponding to the session bean
+ * @param sessionBean
+ * @param method
+ */
+ private void assertNullConcurrentMethodMetaData(JBossSessionBean31MetaData sessionBean, Method method)
+ {
+ NamedMethodMetaData readMethodMetaData = new NamedMethodMetaData();
+ readMethodMetaData.setName(method.getName());
+ if (method.getParameterTypes() != null)
+ {
+ MethodParametersMetaData methodParamsMetaData = new MethodParametersMetaData();
+ for (Class<?> paramType : method.getParameterTypes())
+ {
+ methodParamsMetaData.add(paramType.getName());
+ }
+ readMethodMetaData.setMethodParams(methodParamsMetaData);
+ }
+ ConcurrentMethodMetaData concurrentMethod = sessionBean.getConcurrentMethods().get(readMethodMetaData);
+ assertNull("Unexpectedly found concurrent method metadata on method " + readMethodMetaData.getName(), concurrentMethod);
+ }
+
+ /**
* Utility method
* @param <T>
* @param type
More information about the jboss-cvs-commits
mailing list