[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