public Collection<ConfigKeyPath> getImportedByRecursively(ConfigKeyPath configKey, Optional<Config> runtimeConfig) { return new ImportTraverser<>(key -> Lists.newLinkedList(getImportedBy(key, runtimeConfig)), this.recursiveImportedByMap).traverseGraphRecursively(configKey); } }
public List<ConfigKeyPath> getImportsRecursively(ConfigKeyPath configKey, Optional<Config> runtimeConfig) { return new ImportTraverser<>(key -> { if (key.isRootPath()) { return new LinkedList<>(); } List<ConfigKeyPath> imports = Lists.newArrayList(); imports.addAll(Lists.reverse(getOwnImports(key, runtimeConfig))); imports.add(key.getParent()); return imports; }, this.recursiveImportMap).traverseGraphRecursively(configKey); }
/** * Test a simple non-tree graph. Check that all expected nodes are included in a traversal and in the correct order. */ @Test public void testSimpleGraph() throws Exception { // a --> b --> d // \-> c -/ ListMultimap<String, String> edges = LinkedListMultimap.create(); edges.put("a", "b"); edges.put("a", "c"); edges.put("b", "d"); edges.put("c", "d"); ImportTraverser<String> traverser = new ImportTraverser<String>(s -> edges.get(s), CacheBuilder.newBuilder().build()); List<String> traversal = traverser.traverseGraphRecursively("a"); Assert.assertEquals(traversal, Lists.newArrayList("b", "d", "c")); traversal = traverser.traverseGraphRecursively("b"); Assert.assertEquals(traversal, Lists.newArrayList("d")); traversal = traverser.traverseGraphRecursively("c"); Assert.assertEquals(traversal, Lists.newArrayList("d")); traversal = traverser.traverseGraphRecursively("d"); Assert.assertEquals(traversal, Lists.newArrayList()); }
edges.put("e", "f"); ImportTraverser<String> traverser = new ImportTraverser<String>(s -> edges.get(s), CacheBuilder.newBuilder().build());
public List<ConfigKeyPath> getImportsRecursively(ConfigKeyPath configKey, Optional<Config> runtimeConfig) { return new ImportTraverser<>(key -> { if (key.isRootPath()) { return new LinkedList<>(); } List<ConfigKeyPath> imports = Lists.newArrayList(); imports.addAll(Lists.reverse(getOwnImports(key, runtimeConfig))); imports.add(key.getParent()); return imports; }, this.recursiveImportMap).traverseGraphRecursively(configKey); }
public Collection<ConfigKeyPath> getImportedByRecursively(ConfigKeyPath configKey, Optional<Config> runtimeConfig) { return new ImportTraverser<>(key -> Lists.newLinkedList(getImportedBy(key, runtimeConfig)), this.recursiveImportedByMap).traverseGraphRecursively(configKey); } }