You are absolutely correct. My bad. Reverting... On Wed, Sep 7, 2011 at 12:03 PM, Jörg Schaible <joerg.schai...@scalaris.com>wrote:
> Greg, > > can you revert this? These wrapper methods are completely superfluous, it > is > already done by the compiler! > > - Jörg > > --------------- Weitergeleitete Nachricht (Anfang) > > Betreff: svn commit: r1166233 - in /commons/proper/lang/trunk/src: > main/java/org/apache/commons/lang3/reflect/MethodUtils.java > site/changes/changes.xml > test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java > Absender: ggregory-1odqgaof3lkdnm+yrof...@public.gmane.org > Datum: Wed, 07 Sep 2011 15:39:45 +0000 > Newsgruppe: gmane.comp.jakarta.commons.scm > > Author: ggregory > Date: Wed Sep 7 15:39:45 2011 > New Revision: 1166233 > > URL: http://svn.apache.org/viewvc?rev=1166233&view=rev > Log: > [LANG-750] Add MethodUtil APIs to call methods without parameters. > > Modified: > > > commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java > commons/proper/lang/trunk/src/site/changes/changes.xml > > > commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java > > 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=1166233&r1=1166232&r2=1166233&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 > Wed Sep 7 15:39:45 2011 > @@ -59,6 +59,33 @@ 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 method supports calls to methods taking primitive > parameters > + * via passing in wrapping classes. So, for example, a > <code>Boolean</code> object > + * would match a <code>boolean</code> primitive.</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.0.2 > + */ > + public static Object invokeMethod(Object object, String methodName) > throws NoSuchMethodException, > + IllegalAccessException, InvocationTargetException { > + return invokeMethod(object, methodName, > ArrayUtils.EMPTY_OBJECT_ARRAY); > + } > + > + /** > * <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> > @@ -134,6 +161,28 @@ public class MethodUtils { > } > > /** > + * <p>Invokes a method without parameters.</p> > + * > + * <p>This uses reflection to invoke the method obtained from a call > to > + * <code>getAccessibleMethod()</code>.</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.0.2 > + */ > + public static Object invokeExactMethod(Object object, String > methodName) throws NoSuchMethodException, > + IllegalAccessException, InvocationTargetException { > + return invokeExactMethod(object, methodName, > ArrayUtils.EMPTY_OBJECT_ARRAY); > + } > + > + /** > * <p>Invokes a method whose parameter types match exactly the object > * types.</p> > * > @@ -242,6 +291,35 @@ public class MethodUtils { > } > > /** > + * <p>Invokes a named static method without parameters.</p> > + * > + * <p>This method delegates the method search to {@link > #getMatchingAccessibleMethod(Class, String, Class[])}.</p> > + * > + * <p>This method supports calls to methods taking primitive > parameters > + * via passing in wrapping classes. So, for example, a > <code>Boolean</code> class > + * would match a <code>boolean</code> primitive.</p> > + * > + * <p>This is a convenient wrapper for > + * {@link #invokeStaticMethod(Class objectClass,String > methodName,Object [] args,Class[] parameterTypes)}. > + * </p> > + * > + * @param cls invoke static method on this class > + * @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.0.2 > + */ > + public static Object invokeStaticMethod(Class<?> cls, String > methodName) throws NoSuchMethodException, > + IllegalAccessException, InvocationTargetException { > + return invokeStaticMethod(cls, methodName, > ArrayUtils.EMPTY_OBJECT_ARRAY); > + } > + > + /** > * <p>Invokes a named static method whose parameter type matches the > object type.</p> > * > * <p>This method delegates the method search to {@link > #getMatchingAccessibleMethod(Class, String, Class[])}.</p> > @@ -321,6 +399,28 @@ public class MethodUtils { > } > > /** > + * <p>Invokes a static method without parameters.</p> > + * > + * <p>This uses reflection to invoke the method obtained from a call > to > + * {@link #getAccessibleMethod(Class, String, Class[])}.</p> > + * > + * @param cls invoke static method on this class > + * @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.0.2 > + */ > + public static Object invokeExactStaticMethod(Class<?> cls, String > methodName) throws NoSuchMethodException, > + IllegalAccessException, InvocationTargetException { > + return invokeExactStaticMethod(cls, methodName, > ArrayUtils.EMPTY_OBJECT_ARRAY); > + } > + > + /** > * <p>Invokes a static method whose parameter types match exactly the > object > * types.</p> > * > > Modified: commons/proper/lang/trunk/src/site/changes/changes.xml > URL: > > http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/site/changes/changes.xml?rev=1166233&r1=1166232&r2=1166233&view=diff > > ============================================================================== > --- commons/proper/lang/trunk/src/site/changes/changes.xml (original) > +++ commons/proper/lang/trunk/src/site/changes/changes.xml Wed Sep 7 > 15:39:45 2011 > @@ -22,6 +22,7 @@ > <body> > > <release version="3.0.2" date="unreleased" description="September > release"> > + <action type="add" issue="LANG-750">Add MethodUtil APIs to call > methods > without parameters</action> > <action type="fix" issue="LANG-746">NumberUtils does not handle upper- > case hex: 0X and -0X</action> > <action type="update" issue="LANG-736">CharUtils static final array > CHAR_STRING is not needed to compute CHAR_STRING_ARRAY</action> > <action type="fix" issue="LANG-744">StringUtils throws > java.security.AccessControlException on Google App Engine</action> > > 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=1166233&r1=1166232&r2=1166233&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 > Wed Sep 7 15:39:45 2011 > @@ -34,7 +34,6 @@ import org.apache.commons.lang3.math.Num > import org.apache.commons.lang3.mutable.Mutable; > import org.apache.commons.lang3.mutable.MutableObject; > import org.junit.Before; > -import org.junit.BeforeClass; > import org.junit.Test; > > /** > @@ -77,6 +76,10 @@ public class MethodUtilsTest { > return "bar(Object)"; > } > > + public static void oneParameterStatic(String s) { > + // empty > + } > + > @SuppressWarnings("unused") > private void privateStuff() { > } > @@ -159,6 +162,16 @@ public class MethodUtilsTest { > } > > @Test > + public void testInvokeMethodNoParam() throws Exception { > + assertEquals("foo()", MethodUtils.invokeMethod(testBean, "foo")); > + } > + > + @Test(expected = NoSuchMethodException.class) > + public void testInvokeMethodNoParamFailure() throws Exception { > + assertEquals("oneParameter()", MethodUtils.invokeMethod(testBean, > "oneParameter")); > + } > + > + @Test > public void testInvokeExactMethod() throws Exception { > assertEquals("foo()", MethodUtils.invokeExactMethod(testBean, > "foo", > (Object[]) ArrayUtils.EMPTY_CLASS_ARRAY)); > @@ -197,7 +210,12 @@ public class MethodUtilsTest { > > @Test > public void testInvokeExactMethodNoParam() throws Exception { > - //assertEquals("foo()", MethodUtils.invokeExactMethod(testBean, > "foo")); > + assertEquals("foo()", MethodUtils.invokeExactMethod(testBean, > "foo")); > + } > + > + @Test(expected = NoSuchMethodException.class) > + public void testInvokeExactMethodNoParamFailure() throws Exception { > + MethodUtils.invokeExactMethod(testBean, "oneParameter"); > } > > @Test > @@ -231,6 +249,16 @@ public class MethodUtilsTest { > } > > @Test > + public void testInvokeStaticMethodNoParam() throws Exception { > + assertEquals("bar()", > MethodUtils.invokeStaticMethod(TestBean.class, "bar")); > + } > + > + @Test(expected = NoSuchMethodException.class) > + public void testInvokeStaticMethodNoParamFailure() throws Exception { > + assertEquals("oneParameter()", > MethodUtils.invokeStaticMethod(TestBean.class, "oneParameter")); > + } > + > + @Test > public void testInvokeExactStaticMethod() throws Exception { > assertEquals("bar()", > MethodUtils.invokeExactStaticMethod(TestBean.class, > "bar", (Object[]) ArrayUtils.EMPTY_CLASS_ARRAY)); > @@ -269,6 +297,16 @@ public class MethodUtilsTest { > } > > @Test > + public void testInvokeExactStaticMethodNoParam() throws Exception { > + assertEquals("bar()", > MethodUtils.invokeExactStaticMethod(TestBean.class, "bar")); > + } > + > + @Test(expected = NoSuchMethodException.class) > + public void testInvokeExactStaticMethodNoParamFailure() throws > Exception { > + assertEquals("oneParameterStatic()", > MethodUtils.invokeExactStaticMethod(TestBean.class, "oneParameterStatic")); > + } > + > + @Test > public void testGetAccessibleInterfaceMethod() throws Exception { > Class<?>[][] p = { ArrayUtils.EMPTY_CLASS_ARRAY, null }; > for (Class<?>[] element : p) { > > > > --------------- Weitergeleitete Nachricht (Ende) > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org JUnit in Action, 2nd Ed: http://s.apache.org/rl Spring Batch in Action: http://s.apache.org/HOq Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory