[
https://issues.apache.org/struts/browse/WW-1964?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dan Oxlade updated WW-1964:
---------------------------
the following seems more appropriate
/**
* For the given <code>Class</code> get a collection of the the [EMAIL
PROTECTED] AnnotatedElement}s
* that match the given <code>annotation</code>s or if no
<code>annotation</code>s are
* specified then return all of the annotated elements of the given
<code>Class</code>.
* Includes only the method level annotations.
*
* @param clazz The [EMAIL PROTECTED] Class} to inspect
* @param annotation the [EMAIL PROTECTED] Annotation}s to find
* @return A [EMAIL PROTECTED] Collection}<[EMAIL PROTECTED]
AnnotatedElement}> containing all of the
* method [EMAIL PROTECTED] AnnotatedElement}s matching the specified
[EMAIL PROTECTED] Annotation}s
*/
public static final Collection<? extends AnnotatedElement>
getAnnotatedMethods(Class clazz, Class<? extends Annotation>... annotation){
Collection<AnnotatedElement> toReturn = new
HashSet<AnnotatedElement>();
for(Method m : clazz.getMethods()){
if( ArrayUtils.isNotEmpty(annotation) &&
isAnnotatedBy(m,annotation) ){
toReturn.add(m);
}else if( ArrayUtils.isEmpty(annotation) &&
ArrayUtils.isNotEmpty(m.getAnnotations())){
toReturn.add(m);
}
}
return toReturn;
}
/**
* Varargs version of
<code>AnnotatedElement.isAnnotationPresent()</code>
* @see AnnotatedElement
*/
public static final boolean isAnnotatedBy(AnnotatedElement
annotatedElement, Class<? extends Annotation>... annotation) {
if(ArrayUtils.isEmpty(annotation)) return false;
for( Class<? extends Annotation> c : annotation ){
if( annotatedElement.isAnnotationPresent(c) ) return
true;
}
return false;
}
> AnnotationUtils.findRecursively should ignore annotated methods in the
> superclass that have been overridden
> -----------------------------------------------------------------------------------------------------------
>
> Key: WW-1964
> URL: https://issues.apache.org/struts/browse/WW-1964
> Project: Struts 2
> Issue Type: Bug
> Components: Actions
> Affects Versions: 2.0.1
> Environment: xp, Apache Tomcat/5.5.17, jvm 1.5.0_10-b03
> Reporter: Dan Oxlade
> Priority: Minor
>
> For a simple case I have written an action that has a method:
> @Overrides
> @BeforeResult
> addActionTargets(....
> Because this method is in the superclass and is also annotated BeforeResult
> there, the method gets invoked twice.
> This does not seem appropriate. I've now removed the annotation from the
> subclass but this is extremely counter intuitive IMO.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.