Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E37222009F3 for ; Sat, 4 Jun 2016 16:44:00 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id E1FA3160A26; Sat, 4 Jun 2016 14:44:00 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 37283160A16 for ; Sat, 4 Jun 2016 16:44:00 +0200 (CEST) Received: (qmail 89744 invoked by uid 500); 4 Jun 2016 14:43:59 -0000 Mailing-List: contact issues-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: issues@commons.apache.org Delivered-To: mailing list issues@commons.apache.org Received: (qmail 89733 invoked by uid 99); 4 Jun 2016 14:43:59 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 04 Jun 2016 14:43:59 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 239CF2C1F5A for ; Sat, 4 Jun 2016 14:43:59 +0000 (UTC) Date: Sat, 4 Jun 2016 14:43:59 +0000 (UTC) From: "ASF GitHub Bot (JIRA)" To: issues@commons.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (LANG-1195) Enhance MethodUtils to allow invocation of private methods MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Sat, 04 Jun 2016 14:44:01 -0000 [ https://issues.apache.org/jira/browse/LANG-1195?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15315532#comment-15315532 ] ASF GitHub Bot commented on LANG-1195: -------------------------------------- Github user Derek-Ashmore commented on the issue: https://github.com/apache/commons-lang/pull/141 Hi Pascal, I'm not sure I did the re-base part correctly. Both my forked master and LANG-1195 have all changes we discussed and are based on the updated master. All conflicts were resolved and "I think"; you've obviously done this more than I have and I trust your judgement. Please let me know if you see problems with what I've done. Thanks for looking at this. > 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 > 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. > 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 > > Furthermore, I propose the following new method for finding private methods patterned after getAccessibleMatchingMethod: > public static Method getMatchingMethod(final Class cls, final String methodName, > final Class... parameterTypes) > 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)