[jboss-cvs] JBossAS SVN: r110265 - projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jan 4 15:13:19 EST 2011


Author: ALRubinger
Date: 2011-01-04 15:13:18 -0500 (Tue, 04 Jan 2011)
New Revision: 110265

Modified:
   projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncClassProcessor.java
Log:
[JBMETA-326] Class-level @Asynchronous applies only to declared methods on the class

Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncClassProcessor.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncClassProcessor.java	2011-01-04 15:42:08 UTC (rev 110264)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncClassProcessor.java	2011-01-04 20:13:18 UTC (rev 110265)
@@ -22,6 +22,7 @@
 package org.jboss.metadata.annotation.creator.ejb.jboss;
 
 import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Method;
 
 import javax.ejb.Asynchronous;
 
@@ -30,13 +31,15 @@
 import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
 import org.jboss.metadata.ejb.spec.AsyncMethodMetaData;
 import org.jboss.metadata.ejb.spec.AsyncMethodsMetaData;
+import org.jboss.metadata.ejb.spec.MethodParametersMetaData;
 
 /**
  * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
  * @version $Revision: $
  */
 public class AsyncClassProcessor extends AbstractAsyncProcessor<Class<?>>
-   implements Processor<JBossSessionBean31MetaData, Class<?>> // FIXME: because AbstractProcessor.getProcessorMetaDataType doesn't take inheritence into account
+      implements
+         Processor<JBossSessionBean31MetaData, Class<?>> // FIXME: because AbstractProcessor.getProcessorMetaDataType doesn't take inheritence into account
 {
    protected AsyncClassProcessor(AnnotationFinder<AnnotatedElement> finder)
    {
@@ -47,18 +50,34 @@
    public void process(JBossSessionBean31MetaData metaData, Class<?> type)
    {
       Asynchronous annotation = finder.getAnnotation(type, Asynchronous.class);
-      if(annotation != null)
+      if (annotation != null)
       {
          AsyncMethodsMetaData asyncMethods = metaData.getAsyncMethods();
-         if(asyncMethods == null)
+         if (asyncMethods == null)
          {
             asyncMethods = new AsyncMethodsMetaData();
             metaData.setAsyncMethods(asyncMethods);
          }
+
+         AsyncMethodMetaData asyncMethod = new AsyncMethodMetaData();
+         // Only apply to the methods on this class JBMETA-326
+         for (final Method declaredMethod : type.getDeclaredMethods())
+         {
+            asyncMethod.setMethodName(declaredMethod.getName());
+            final MethodParametersMetaData params = new MethodParametersMetaData();
+            for (final Class<?> param : declaredMethod.getParameterTypes())
+            {
+               params.add(param.getName());
+            }
+            asyncMethod.setMethodParams(params);
+            asyncMethods.add(asyncMethod);
+         }
          
-         AsyncMethodMetaData asyncMethod = new AsyncMethodMetaData();
-         asyncMethod.setMethodName("*");
-         asyncMethods.add(asyncMethod);
+         final Class<?> superClass = type.getSuperclass();
+         if(superClass!=null){
+            this.process(metaData, superClass);
+         }
+
       }
    }
 }



More information about the jboss-cvs-commits mailing list