private void update() throws ChainException { Set<String> activeEngineNames = new HashSet<String>(tracker.getActiveEngineNames()); if(activeEngineNames.isEmpty()){ throw new ChainException("Currently there are no active EnhancementEngines available"); } List<EnhancementEngine> activeEngines = new ArrayList<EnhancementEngine>(activeEngineNames.size()); Iterator<String> names = activeEngineNames.iterator(); while(names.hasNext()){ String name = names.next(); EnhancementEngine engine = tracker.getEngine(name); if(engine != null){ activeEngines.add(engine); } else { //looks like the config has changed in the meantime names.remove(); } } Set<String> emptySet = Collections.emptySet(); executionPlan = calculateExecutionPlan( getName(),activeEngines, emptySet,//this Chain does not support optional engines emptySet); //only active meaning that no engines are missing engineNames = Collections.unmodifiableSet(activeEngineNames); }