in extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/ReflectUtil.java [233:287]
public static Object executeMethod(Object obj, String methodName, Object... varargs)
{
Collection<Method> methods;
//if we have an invocationHandler here we
//can work over the generic invoke interface
//That way we can cover more dynamic stuff
//our reload invocation handler is treated differently here
if (obj instanceof InvocationHandler)
{
InvocationHandler objToInvoke = (InvocationHandler) obj;
Object realTarget = WeavingContext.getInstance().getDelegateFromProxy(objToInvoke);
//first we try only the public because they are the most likely ones
//to be accessed
methods = getMethods(realTarget.getClass(), methodName, varargs.length);
Object retVal = handleInvHandlerMethod(objToInvoke, methodName, methods, varargs);
if (!methodNotFound(retVal))
{
return retVal;
}
//if not we try all of them until we have a match
methods = getAllMethods(realTarget.getClass(), methodName, varargs.length);
retVal = handleInvHandlerMethod(objToInvoke, methodName, methods, varargs);
if (!(methodNotFound(retVal)))
{
return retVal;
}
throw new RuntimeException("Method of :" + methodName + " from class " + obj.getClass().getName() + " not found");
}
Class clazz = obj.getClass();
//first we try only the public because they are the most likely ones
//to be accessed
methods = getMethods(clazz, methodName, varargs.length);
Object retVal = handleObjMethod(obj, methodName, methods, varargs);
if (!methodNotFound(retVal))
{
return retVal;
}
//if not we try all of them until we have a match
methods = getAllMethods(clazz, methodName, varargs.length);
retVal = handleObjMethod(obj, methodName, methods, varargs);
if (!methodNotFound(retVal))
{
return retVal;
}
throw new RuntimeException("Method of :" + methodName + " from class " + obj.getClass().getName() + " not found");
}