[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