use of com.weicoder.web.aop.Aops in project weicoder by wdcode.
the class BasicServlet method invoke.
private Object invoke(Object action, Method method, Object[] params, HttpServletRequest request, HttpServletResponse response) {
// 获得所有aop
List<Aops> aops = aops(action, method);
try {
// 前置执行
aops.forEach(aop -> aop.before(action, params, request, response));
// 执行方法返回结果
Object result = method.invoke(action, params);
// Object result = method.invoke(action, U.E.isEmpty(params) ? null : params);
if (result == null && void.class.equals(method.getReturnType()))
result = StateCode.SUCCESS;
// 后置执行
for (Aops aop : aops) aop.after(action, params, result, request, response);
// 返回结果
return result;
} catch (StateException e) {
return e.state();
} catch (Exception e) {
Logs.error(e, "action invoke method={} args={} params={}", method.getName(), Arrays.toString(params), Arrays.toString(method.getParameters()));
// 异常执行
aops.forEach(aop -> aop.exception(e, action, params, request, response));
// 返回错误
return StateCode.ERROR;
}
}
Aggregations