package com.aggrepoint.winlet.spring; import java.util.ArrayList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.aggrepoint.winlet.ContextUtils; import com.aggrepoint.winlet.PsnRuleEngine; import com.aggrepoint.winlet.spring.def.ReturnDef; /** * 负责找到个性化规则 * * @author Jiangming Yang (yangjm@gmail.com) */ public class PsnReturnDefFinder { static final Log logger = LogFactory.getLog(PsnReturnDefFinder.class); public static ReturnDef getReturnDef(ArrayList<ReturnDef> defs) { if (defs == null || defs.size() == 0) return null; PsnRuleEngine rule = ContextUtils.getPsnRuleEngine(ContextUtils .getRequest()); for (ReturnDef def : defs) { try { if (def.getRule() == null) return def; if (rule.eval(def.getRule())) return def; } catch (Exception e) { logger.error("Error evaluating psn rule \"" + def.getRule() + "\"", e); return null; } } return null; } }