1 package org.kuali.rice.krms.framework.engine; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.List; 6 7 import org.kuali.rice.krms.api.engine.ExecutionEnvironment; 8 import org.kuali.rice.krms.api.engine.TermResolver; 9 10 public final class BasicContext implements Context { 11 12 private final List<Agenda> agendas; 13 private final List<TermResolver<?>> termResolvers; 14 15 public BasicContext(List<Agenda> agendas, List<TermResolver<?>> termResolvers) { 16 this.agendas = agendas; 17 this.termResolvers = termResolvers; 18 } 19 20 @Override 21 public void execute(ExecutionEnvironment environment) { 22 if (termResolvers != null) for (TermResolver<?> termResolver : termResolvers) { 23 environment.addTermResolver(termResolver); 24 } 25 List<Agenda> matchingAgendas = findMatchingAgendas(environment); 26 for (Agenda matchingAgenda : matchingAgendas) { 27 matchingAgenda.execute(environment); 28 } 29 } 30 31 private List<Agenda> findMatchingAgendas(ExecutionEnvironment environment) { 32 List<Agenda> matchingAgendas = new ArrayList<Agenda>(); 33 for (Agenda agenda : agendas) { 34 if (agenda.appliesTo(environment)) { 35 matchingAgendas.add(agenda); 36 } 37 } 38 return matchingAgendas; 39 } 40 41 public List<TermResolver<?>> getTermResolvers() { 42 return Collections.unmodifiableList(termResolvers); 43 } 44 45 }