package org.nutz.mvc.impl.processor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.nutz.lang.Lang;
import org.nutz.mvc.ActionContext;
/**
*
* @author zozoh(zozohtnt@gmail.com)
* @author wendal(wendal1985@gmail.com)
*
*/
public class MethodInvokeProcessor extends AbstractProcessor{
public void process(ActionContext ac) throws Throwable {
Object module = ac.getModule();
Method method = ac.getMethod();
Object[] args = ac.getMethodArgs();
try {
// if (Mvcs.disableFastClassInvoker)
ac.setMethodReturn(method.invoke(module, args));
// else
// ac.setMethodReturn(FastClassFactory.get(module.getClass()).invoke(module, method, args));
doNext(ac);
}
catch (IllegalAccessException e) {
throw Lang.unwrapThrow(e);
}
catch (IllegalArgumentException e) {
throw Lang.unwrapThrow(e);
}
catch (InvocationTargetException e) {
throw e.getCause();
}
}
}