private Set<String> getRequiredConfigListHelper(Set<JobTemplate> alreadyLoadedTemplates) throws SpecNotFoundException, TemplateException { Set<String> requiredConfigs = Sets.newHashSet(getLocallyRequiredConfigList()); for (JobTemplate template : this.superTemplates) { if (!alreadyLoadedTemplates.contains(template)) { alreadyLoadedTemplates.add(template); requiredConfigs.addAll(template instanceof InheritingJobTemplate ? ((InheritingJobTemplate) template).getRequiredConfigListHelper(alreadyLoadedTemplates) : template.getRequiredConfigList()); } } return requiredConfigs; }
@Override public Collection<String> getRequiredConfigList() throws SpecNotFoundException, TemplateException { ensureTemplatesResolved(); Set<String> allRequired = getRequiredConfigListHelper(Sets.<JobTemplate>newHashSet()); final Config rawConfig = getRawTemplateConfig(); Set<String> filteredRequired = Sets.filter(allRequired, new Predicate<String>() { @Override public boolean apply(String input) { return !rawConfig.hasPath(input); } }); return filteredRequired; }
private Set<String> getRequiredConfigListHelper(Set<JobTemplate> alreadyLoadedTemplates) throws SpecNotFoundException, TemplateException { Set<String> requiredConfigs = Sets.newHashSet(getLocallyRequiredConfigList()); for (JobTemplate template : this.superTemplates) { if (!alreadyLoadedTemplates.contains(template)) { alreadyLoadedTemplates.add(template); requiredConfigs.addAll(template instanceof InheritingJobTemplate ? ((InheritingJobTemplate) template).getRequiredConfigListHelper(alreadyLoadedTemplates) : template.getRequiredConfigList()); } } return requiredConfigs; }
@Override public Collection<String> getRequiredConfigList() throws SpecNotFoundException, TemplateException { ensureTemplatesResolved(); Set<String> allRequired = getRequiredConfigListHelper(Sets.<JobTemplate>newHashSet()); final Config rawConfig = getRawTemplateConfig(); Set<String> filteredRequired = Sets.filter(allRequired, new Predicate<String>() { @Override public boolean apply(String input) { return !rawConfig.hasPath(input); } }); return filteredRequired; }