/** * Get a stream of configurations in descending order of precedence given a list of dependent modules. * * @param dependentModules The list of modules which are depended on * * @return A stream of module configurations in descending order of precedence */ public Stream<Configuration> getConfigurations(List<String> dependentModules) { LOG.debug("Resolving dependent modules: {}", dependentModules); ConfigurationGraph graph = loadConfigurationGraph(); Iterable<String> reverseList = () -> dependentModules.stream() .collect(Collectors.toCollection(LinkedList::new)) .descendingIterator(); // Because we want the configurations in precedence order, process the dependent modules from right to left, // deduping redundant (repeated with lower precedence) dependencies return StreamSupport.stream(reverseList.spliterator(), false) .flatMap(graph::preOrderRightToLeftTraversal) .distinct() .map(graph::getConfiguration); }
new ModuleLoader(loader).getConfigurations(dependentModules).forEach( masterConfiguration::addConfiguration );
new ModuleLoader(loader).getConfigurations(dependentModules).forEach( masterConfiguration::addConfiguration );
/** * Get a stream of configurations in descending order of precedence given a list of dependent modules. * * @param dependentModules The list of modules which are depended on * * @return A stream of module configurations in descending order of precedence */ public Stream<Configuration> getConfigurations(List<String> dependentModules) { LOG.debug("Resolving dependent modules: {}", dependentModules); ConfigurationGraph graph = loadConfigurationGraph(); Iterable<String> reverseList = () -> dependentModules.stream() .collect(Collectors.toCollection(LinkedList::new)) .descendingIterator(); // Because we want the configurations in precedence order, process the dependent modules from right to left, // deduping redundant (repeated with lower precedence) dependencies return StreamSupport.stream(reverseList.spliterator(), false) .flatMap(graph::preOrderRightToLeftTraversal) .distinct() .map(graph::getConfiguration); }