You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Dan Oxlade (JIRA)" <ji...@apache.org> on 2007/06/04 17:58:31 UTC
[jira] Updated: (WW-1964) AnnotationUtils.findRecursively should
ignore annotated methods in the superclass that have been overridden
[ 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 {@link 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 {@link Class} to inspect
* @param annotation the {@link Annotation}s to find
* @return A {@link Collection}<{@link AnnotatedElement}> containing all of the
* method {@link AnnotatedElement}s matching the specified {@link 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.