[ 
https://issues.apache.org/jira/browse/OGNL-222?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gavin Scott updated OGNL-222:
-----------------------------

    Attachment: ognl-222.patch

This patch calls MemberAccess.setup() and restore() instead of directly calling 
AccessibleObject.setAccessible() during method invocation.

Note that it always calls setup() and restore() even if the method is already 
accessible (public) -- that's my interpretation of the MemberAccess contract 
and the behavior seen in the existing field access.

Also note that in this patch the synchronized block in invokeMethod is always 
hit.  Its not clear to me if the synchronized block is needed -- it looks like 
the block was originally used to keep the cache coherent, a need which was 
removed in the merge that happened in r1188000.  If the synchronized block is 
intended to make sure that the method stays accessible through the actual 
method invocation, similar synchronized blocks are needed in getFieldValue(), 
etc as well.
                
> MemberAccess.setup and restore not called on method access
> ----------------------------------------------------------
>
>                 Key: OGNL-222
>                 URL: https://issues.apache.org/jira/browse/OGNL-222
>             Project: Commons OGNL
>          Issue Type: Bug
>    Affects Versions: 3.0
>            Reporter: Gavin Scott
>         Attachments: ognl-222.patch
>
>
> OgnlRuntime.invokeMethod() directly calls AccessibleObject.setAccessible() 
> rather than calling MemberAccess.setup() and restore().  The MemberAccess 
> javadoc "This interface provides a hook for preparing for accessing members 
> of objects." leads me to believe its methods should be called for method 
> access.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to