[
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 <[email protected]>
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)