You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2014/10/09 04:22:34 UTC
svn commit: r1630268 - in /commons/proper/lang/trunk/src: changes/changes.xml
main/java/org/apache/commons/lang3/reflect/MethodUtils.java
test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java
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",