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", 


Reply via email to