[ https://issues.apache.org/jira/browse/LANG-1195?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pascal Schumacher resolved LANG-1195. ------------------------------------- Resolution: Fixed Assignee: Pascal Schumacher Pull request merged. Thanks! > Enhance MethodUtils to allow invocation of private methods > ----------------------------------------------------------- > > Key: LANG-1195 > URL: https://issues.apache.org/jira/browse/LANG-1195 > Project: Commons Lang > Issue Type: Improvement > Components: lang.reflect.* > Environment: not environment specific > Reporter: Derek C. Ashmore > Assignee: Pascal Schumacher > Priority: Minor > Fix For: 3.5 > > > Currently, MethodUtils is restricted to finding and invoking accessible > methods. Frequently, developers have a need to test 'private' methods. What > I see is that they escalate access to 'protected' in order to more easily > provide test coverage for these methods. From a design perspective, this is > bad. > I propose to enhance MethodUtils so that it can easily invoke private > methods. I'm not suggesting that developers should do this in production > code, merely test code. Much as FieldUtils provides access to private fields > via the 'forceAccess' overload on many of its methods. I've copied a utility > like this around for years. It would be much more convenient to simply > include it with Commons Lang. I propose adding the following overloads to > existing methods on MethodUtils. > {code} > public static Object invokeMethod(final Object object, final boolean > forceAccess, final String methodName) > throws NoSuchMethodException, IllegalAccessException, > InvocationTargetException > > public static Object invokeMethod(final Object object, final boolean > forceAccess, final String methodName, Object... args) > throws NoSuchMethodException, IllegalAccessException, > InvocationTargetException > > public static Object invokeMethod(final Object object, final boolean > forceAccess, final String methodName, Object[] args, Class<?>[] > parameterTypes) > throws NoSuchMethodException, IllegalAccessException, > InvocationTargetException > {code} > Furthermore, I propose the following new method for finding private methods > patterned after getAccessibleMatchingMethod: > {code} > public static Method getMatchingMethod(final Class<?> cls, final String > methodName, final Class<?>... parameterTypes) > {code} > I have, in fact, forked your github repository and coded this enhancement as > well as unit test coverage for this. I'll add a comment to this ticket once > I get a branch in my fork created and the enhancement checked in. Every > effort has been made to adhere to your coding conventions. Thanks for > looking at this. -- This message was sent by Atlassian JIRA (v6.3.4#6332)