struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4744) AnnotationWorkflowInterceptor should supports non-public annotated methods
Date Sun, 19 Mar 2017 16:16:41 GMT

    [ https://issues.apache.org/jira/browse/WW-4744?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15931784#comment-15931784
] 

ASF GitHub Bot commented on WW-4744:
------------------------------------

GitHub user yasserzamani opened a pull request:

    https://github.com/apache/struts/pull/124

    WW-4744: AnnotationUtils supports non-public methods

    With these changes, AnnotationUtils also has equipped with an internal cache. Mainly,
getAnnotatedMethods and all it's usages have improved and equipped with enough unit tests
(also all findAnnotation usages have equipped).
    
    NOTES:
    To avoid reinventing the wheel, I copied from Spring framework, So, I copied their license
and authors as well where needed :)

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/yasserzamani/struts WW-4744

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/struts/pull/124.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #124
    
----
commit e1bb1a70c089b80b3924391da9d0268b5bcc29f3
Author: Yasser Zamani <yasser.zamani@live.com>
Date:   2017-03-19T15:32:45Z

    WW-4744: AnnotationUtils supports non-public methods

----


> AnnotationWorkflowInterceptor should supports non-public annotated methods
> --------------------------------------------------------------------------
>
>                 Key: WW-4744
>                 URL: https://issues.apache.org/jira/browse/WW-4744
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Core Interceptors
>            Reporter: zhouyanming
>             Fix For: 2.5.next
>
>
> {code:java}
> @Before
> protected String prepare(){
>     //TODO
>     return null;
> }
> {code}
> [https://github.com/apache/struts/blob/master/core/src/main/java/com/opensymphony/xwork2/interceptor/annotations/AnnotationWorkflowInterceptor.java#L115]
> {code:java}
> List<Method> methods = new ArrayList<>(AnnotationUtils.getAnnotatedMethods(action.getClass(),
Before.class));
> {code}
> [https://github.com/apache/struts/blob/master/core/src/main/java/com/opensymphony/xwork2/util/AnnotationUtils.java#L123]
> {code:java}
> for (Method m : clazz.getMethods()) 
> {code}
> clazz.getMethods() only return public methods, so method "prepare" will be excluded,
and protected modifier is a good practice for intercept method.We should improve AnnotationUtils.getAnnotatedMethods()
to return all methods. Perhaps use an ConcurrentHashMap as cache is much better.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message