package com.nfwork.dbfound.web; import org.apache.commons.beanutils.MethodUtils; import com.nfwork.dbfound.core.Context; import com.nfwork.dbfound.core.Transaction; import com.nfwork.dbfound.util.JsonUtil; import com.nfwork.dbfound.dto.ResponseObject; import com.nfwork.dbfound.exception.DBFoundRuntimeException; import com.nfwork.dbfound.web.WebWriter; import com.nfwork.dbfound.web.base.BaseControl; /** * 反射机制,动态的调用方法 */ public class ActionReflect { public static void reflect(Context context, String className, String method, boolean singleton) throws Exception { //开启事务 Transaction transaction = context.getTransaction(); transaction.begin(); BaseControl baseControl = ActionBeanFactory.getControl(className,singleton); Object result = MethodUtils.invokeMethod(baseControl, method, new Object[] { context }); if (result != null) { if (result instanceof ResponseObject) { // 提交关闭事务 transaction.commitAndEnd(); WebWriter.jsonWriter(context.response, JsonUtil.beanToJson(result)); } else { throw new DBFoundRuntimeException("return object must extends ResponseObject"); } } } }