001 package com.mockrunner.util.common;
002
003 import java.lang.reflect.Method;
004
005 import com.mockrunner.base.NestedApplicationException;
006
007 public class MethodUtil
008 {
009 /**
010 * Invokes the method with the specified name on the specified object
011 * and throws a {@link com.mockrunner.base.NestedApplicationException},
012 * if the invocation fails. The method must be public and must not
013 * have any parameters.
014 * @param object the object the method is invoked from
015 * @param methodName the name of the method
016 * @return the result of the method invocation
017 */
018 public static Object invoke(Object object, String methodName)
019 {
020 try
021 {
022 Method method = object.getClass().getMethod(methodName, null);
023 return method.invoke(object, null);
024 }
025 catch(Exception exc)
026 {
027 throw new NestedApplicationException(exc);
028 }
029 }
030
031 /**
032 * Invokes the method with the specified name on the specified object
033 * and throws a {@link com.mockrunner.base.NestedApplicationException},
034 * if the invocation fails. The method must be public and must have
035 * exactly one paremeter of the type specified by the given
036 * <code>parameter</code>.
037 * @param object the object the method is invoked from
038 * @param methodName the name of the method
039 * @param parameter the parameter, must not be <code>null</code>
040 * @return the result of the method invocation
041 */
042 public static Object invoke(Object object, String methodName, Object parameter)
043 {
044 try
045 {
046 Method method = object.getClass().getMethod(methodName, new Class[] {parameter.getClass()});
047 return method.invoke(object, new Object[] {parameter});
048 }
049 catch(Exception exc)
050 {
051 throw new NestedApplicationException(exc);
052 }
053 }
054 }