Author: ggregory Date: Thu Oct 9 02:22:34 2014 New Revision: 1630268 URL: http://svn.apache.org/r1630268 Log: [LANG-1044] Add method org.apache.commons.lang3.reflect.MethodUtils.invokeExactMethod(Object, String)</action> [LANG-1045] Add method org.apache.commons.lang3.reflect.MethodUtils.invokeMethod(Object, String)</action>
Modified: commons/proper/lang/trunk/src/changes/changes.xml commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java Modified: commons/proper/lang/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1630268&r1=1630267&r2=1630268&view=diff ============================================================================== --- commons/proper/lang/trunk/src/changes/changes.xml [utf-8] (original) +++ commons/proper/lang/trunk/src/changes/changes.xml [utf-8] Thu Oct 9 02:22:34 2014 @@ -47,6 +47,8 @@ <action issue="LANG-998" type="update" dev="chas">Javadoc is not clear on preferred pattern to instantiate FastDateParser / FastDatePrinter</action> <action issue="LANG-996" type="fix" dev="chas">FastDateParser should be case insensitive</action> <action issue="LANG-995" type="fix" dev="britter" due-to="Andrey Khobnya">Fix bug with stripping spaces on last line in WordUtils.wrap()</action> + <action issue="LANG-1044" type="add" dev="ggregory">Add method org.apache.commons.lang3.reflect.MethodUtils.invokeExactMethod(Object, String)</action> + <action issue="LANG-1045" type="add" dev="ggregory">Add method org.apache.commons.lang3.reflect.MethodUtils.invokeMethod(Object, String)</action> </release> <release version="3.3.2" date="2014-04-09" description="Bugfix for a bug in NumberUtils introduced in 3.3.1"> Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java?rev=1630268&r1=1630267&r2=1630268&view=diff ============================================================================== --- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java (original) +++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java Thu Oct 9 02:22:34 2014 @@ -71,6 +71,30 @@ public class MethodUtils { } /** + * <p>Invokes a named method without parameters.</p> + * + * <p>This method delegates the method search to {@link #getMatchingAccessibleMethod(Class, String, Class[])}.</p> + * + * <p>This is a convenient wrapper for + * {@link #invokeMethod(Object object,String methodName, Object[] args, Class[] parameterTypes)}. + * </p> + * + * @param object invoke method on this object + * @param methodName get method with this name + * @return The value returned by the invoked method + * + * @throws NoSuchMethodException if there is no such accessible method + * @throws InvocationTargetException wraps an exception thrown by the method invoked + * @throws IllegalAccessException if the requested method is not accessible via reflection + * + * @since 3.4 + */ + public static Object invokeMethod(final Object object, final String methodName) throws NoSuchMethodException, + IllegalAccessException, InvocationTargetException { + return invokeMethod(object, methodName, ArrayUtils.EMPTY_OBJECT_ARRAY, null); + } + + /** * <p>Invokes a named method whose parameter type matches the object type.</p> * * <p>This method delegates the method search to {@link #getMatchingAccessibleMethod(Class, String, Class[])}.</p> @@ -144,7 +168,29 @@ public class MethodUtils { * * @param object invoke method on this object * @param methodName get method with this name - * @param args use these arguments - treat {@code null} as empty array + * @return The value returned by the invoked method + * + * @throws NoSuchMethodException if there is no such accessible method + * @throws InvocationTargetException wraps an exception thrown by the + * method invoked + * @throws IllegalAccessException if the requested method is not accessible + * via reflection + * + * @since 3.4 + */ + public static Object invokeExactMethod(final Object object, final String methodName) throws NoSuchMethodException, + IllegalAccessException, InvocationTargetException { + return invokeExactMethod(object, methodName, ArrayUtils.EMPTY_OBJECT_ARRAY, null); + } + + /** + * <p>Invokes a method with no parameters.</p> + * + * <p>This uses reflection to invoke the method obtained from a call to + * {@link #getAccessibleMethod}(Class,String,Class[])}.</p> + * + * @param object invoke method on this object + * @param methodName get method with this name * @return The value returned by the invoked method * * @throws NoSuchMethodException if there is no such accessible method Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java?rev=1630268&r1=1630267&r2=1630268&view=diff ============================================================================== --- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java (original) +++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java Thu Oct 9 02:22:34 2014 @@ -156,6 +156,7 @@ public class MethodUtilsTest { public void testInvokeMethod() throws Exception { assertEquals("foo()", MethodUtils.invokeMethod(testBean, "foo", (Object[]) ArrayUtils.EMPTY_CLASS_ARRAY)); + assertEquals("foo()", MethodUtils.invokeMethod(testBean, "foo")); assertEquals("foo()", MethodUtils.invokeMethod(testBean, "foo", (Object[]) null)); assertEquals("foo()", MethodUtils.invokeMethod(testBean, "foo", @@ -180,6 +181,7 @@ public class MethodUtilsTest { public void testInvokeExactMethod() throws Exception { assertEquals("foo()", MethodUtils.invokeExactMethod(testBean, "foo", (Object[]) ArrayUtils.EMPTY_CLASS_ARRAY)); + assertEquals("foo()", MethodUtils.invokeExactMethod(testBean, "foo")); assertEquals("foo()", MethodUtils.invokeExactMethod(testBean, "foo", (Object[]) null)); assertEquals("foo()", MethodUtils.invokeExactMethod(testBean, "foo",