Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public final boolean visitLeave(DependencyNode node) {
protected abstract boolean doVisitLeave(DependencyNode node);

protected boolean acceptNode(DependencyNode node) {
return filter.accept(node, path);
return filter.accept(node, path.head());
}

protected void consumeNode(DependencyNode node) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
package org.eclipse.aether.util.graph.visitor;

import java.util.AbstractList;
import java.util.Collections;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.RandomAccess;

Expand Down Expand Up @@ -69,4 +71,15 @@ public E get(int index) {
public int size() {
return size;
}

/**
* Returns a view as list sans top element.
*/
public List<E> head() {
if (size < 2) {
return Collections.emptyList();
} else {
return subList(0, size - 1);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
package org.eclipse.aether.util.graph.visitor;

import java.io.File;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
Expand Down Expand Up @@ -104,6 +105,30 @@ void testLevelOrder() throws Exception {
assertSequence(nodeListGenerator.getNodes(), "a", "b", "d", "c", "e");
}

@Test
void testLevelOrderWithFilterDirect() throws Exception {
DependencyNode root = parse("simple.txt");

NodeListGenerator nodeListGenerator = new NodeListGenerator();
LevelOrderDependencyNodeConsumerVisitor visitor =
new LevelOrderDependencyNodeConsumerVisitor(nodeListGenerator, (n, p) -> p.size() <= 1);
root.accept(visitor);

assertSequence(nodeListGenerator.getNodes(), "a", "b", "d");
}

@Test
void testLevelOrderWithFilterIndirect() throws Exception {
DependencyNode root = parse("simple.txt");

NodeListGenerator nodeListGenerator = new NodeListGenerator();
LevelOrderDependencyNodeConsumerVisitor visitor =
new LevelOrderDependencyNodeConsumerVisitor(nodeListGenerator, (n, p) -> p.size() <= 2);
root.accept(visitor);

assertSequence(nodeListGenerator.getNodes(), "a", "b", "d", "c", "e");
}

@Test
void testLevelOrderDuplicateSuppression() throws Exception {
DependencyNode root = parse("cycles.txt");
Expand All @@ -130,7 +155,7 @@ void testEmptyResolvedClassPath() throws Exception {
assertEquals(5, nodeListGenerator.getDependencies(true).size());
assertEquals(0, nodeListGenerator.getArtifacts(false).size());
assertEquals(5, nodeListGenerator.getArtifacts(true).size());
assertEquals(0, nodeListGenerator.getFiles().size());
assertEquals(0, nodeListGenerator.getPaths().size());
assertEquals("", nodeListGenerator.getClassPath());
}

Expand All @@ -141,7 +166,7 @@ void testFullyResolvedClassPath() throws Exception {
@Override
public boolean visitEnter(DependencyNode node) {
node.setArtifact(node.getArtifact()
.setFile(new File(node.getDependency().getArtifact().getArtifactId())));
.setPath(new File(node.getDependency().getArtifact().getArtifactId()).toPath()));
return true;
}

Expand All @@ -158,9 +183,9 @@ public boolean visitLeave(DependencyNode node) {
root.accept(visitor);

Set<String> fileNames = nodeListGenerator.getNodes().stream()
.map(n -> n.getArtifact().getFile())
.map(n -> n.getArtifact().getPath())
.filter(Objects::nonNull)
.map(File::getName)
.map(Path::toString)
.collect(Collectors.toSet());
String classPath = nodeListGenerator.getClassPath();
String[] splitClassPath = classPath.split(File.pathSeparator);
Expand All @@ -172,7 +197,7 @@ public boolean visitLeave(DependencyNode node) {
assertEquals(5, nodeListGenerator.getDependencies(true).size());
assertEquals(5, nodeListGenerator.getArtifacts(false).size());
assertEquals(5, nodeListGenerator.getArtifacts(true).size());
assertEquals(5, nodeListGenerator.getFiles().size());
assertEquals(5, nodeListGenerator.getPaths().size());
assertEquals(fileNames, classPathNames);
}

Expand All @@ -188,7 +213,7 @@ public boolean visitEnter(DependencyNode node) {
if (alternator.get()) {
String fileName = node.getDependency().getArtifact().getArtifactId();
fileNames.add(fileName);
node.setArtifact(node.getArtifact().setFile(new File(fileName)));
node.setArtifact(node.getArtifact().setPath(new File(fileName).toPath()));
}
return true;
}
Expand All @@ -215,7 +240,7 @@ public boolean visitLeave(DependencyNode node) {
assertEquals(5, nodeListGenerator.getDependencies(true).size());
assertEquals(3, nodeListGenerator.getArtifacts(false).size());
assertEquals(5, nodeListGenerator.getArtifacts(true).size());
assertEquals(3, nodeListGenerator.getFiles().size());
assertEquals(3, nodeListGenerator.getPaths().size());
assertEquals(fileNames, classPathNames);
}

Expand Down