package org.nutz.mvc.impl.processor;
import org.nutz.mvc.ActionContext;
import org.nutz.mvc.ActionFilter;
import org.nutz.mvc.ActionInfo;
import org.nutz.mvc.NutConfig;
import org.nutz.mvc.ObjectInfo;
import org.nutz.mvc.View;
/**
*
* @author zozoh(zozohtnt@gmail.com)
* @author wendal(wendal1985@gmail.com)
*
*/
public class ActionFiltersProcessor extends AbstractProcessor {
private ActionFilter[] filters = {};
public void init(NutConfig config, ActionInfo ai) throws Throwable {
ObjectInfo<? extends ActionFilter>[] filterInfos = ai.getFilterInfos();
if (null != filterInfos) {
filters = new ActionFilter[filterInfos.length];
for (int i = 0; i < filters.length; i++) {
filters[i] = evalObj(config, filterInfos[i]);
}
}
}
public void process(ActionContext ac) throws Throwable {
View view;
for (ActionFilter filter : filters) {
view = filter.match(ac);
if (null != view) {
ac.setMethodReturn(view);
renderView(ac);
return;
}
}
doNext(ac);
}
}