struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dan Oxlade (JIRA)" <>
Subject [jira] Updated: (WW-1964) AnnotationUtils.findRecursively should ignore annotated methods in the superclass that have been overridden
Date Mon, 04 Jun 2007 15:58:31 GMT


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
	 * 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}&lt;{@link AnnotatedElement}&gt; containing all of
	 *  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) ){
			}else if( ArrayUtils.isEmpty(annotation) && ArrayUtils.isNotEmpty(m.getAnnotations())){
		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:
>             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.

View raw message