package policy.rule; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import foundation.server.ObjectCreator; public class RuleMetas implements Iterable { private String buId; private List items; private RuleRuntimes runtimes; public RuleMetas(String buId) { this.buId = buId; this.items = new ArrayList(); } public RuleRuntimes getCheckRuntimes() { if (runtimes != null) { return runtimes; } synchronized (this) { if (runtimes != null) { return runtimes; } runtimes = new RuleRuntimes(); for (RuleMeta checkMeta: items) { String className = checkMeta.getClassName(); try { RuleAction checker = ObjectCreator.create(className); checker.setMeta(checkMeta); runtimes.loadOneChecker(checker); } catch (Exception e) { e.printStackTrace(); } } return runtimes; } } public void loadOne(RuleMeta checker) { items.add(checker); } public void clear() { runtimes = null; items.clear(); } public String getBuId() { return buId; } @Override public Iterator iterator() { return items.iterator(); } }