1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.util.graph.visitor;
20
21 import java.io.File;
22 import java.nio.file.Path;
23 import java.util.ArrayList;
24 import java.util.List;
25 import java.util.Objects;
26 import java.util.function.Consumer;
27
28 import org.eclipse.aether.artifact.Artifact;
29 import org.eclipse.aether.graph.Dependency;
30 import org.eclipse.aether.graph.DependencyNode;
31
32 import static java.util.stream.Collectors.joining;
33 import static java.util.stream.Collectors.toList;
34
35
36
37
38
39
40
41
42
43
44 public final class NodeListGenerator implements Consumer<DependencyNode> {
45
46 private final ArrayList<DependencyNode> nodes;
47
48 public NodeListGenerator() {
49 nodes = new ArrayList<>(128);
50 }
51
52 @Override
53 public void accept(DependencyNode dependencyNode) {
54 nodes.add(dependencyNode);
55 }
56
57
58
59
60
61
62 public List<DependencyNode> getNodes() {
63 return nodes;
64 }
65
66
67
68
69
70
71
72 public List<DependencyNode> getNodesWithDependencies() {
73 return getNodesWithDependencies(getNodes());
74 }
75
76
77
78
79
80
81
82 public List<Dependency> getDependencies(boolean includeUnresolved) {
83 return getDependencies(getNodes(), includeUnresolved);
84 }
85
86
87
88
89
90
91
92 public List<Artifact> getArtifacts(boolean includeUnresolved) {
93 return getArtifacts(getNodes(), includeUnresolved);
94 }
95
96
97
98
99
100
101
102 @Deprecated
103 public List<File> getFiles() {
104 return getFiles(getNodes());
105 }
106
107
108
109
110
111
112
113 public List<Path> getPaths() {
114 return getPaths(getNodes());
115 }
116
117
118
119
120
121
122
123 public String getClassPath() {
124 return getClassPath(getNodes());
125 }
126
127 static List<DependencyNode> getNodesWithDependencies(List<DependencyNode> nodes) {
128 return nodes.stream().filter(d -> d.getDependency() != null).collect(toList());
129 }
130
131 static List<Dependency> getDependencies(List<DependencyNode> nodes, boolean includeUnresolved) {
132 return getNodesWithDependencies(nodes).stream()
133 .map(DependencyNode::getDependency)
134 .filter(d -> includeUnresolved || d.getArtifact().getPath() != null)
135 .collect(toList());
136 }
137
138 static List<Artifact> getArtifacts(List<DependencyNode> nodes, boolean includeUnresolved) {
139 return getNodesWithDependencies(nodes).stream()
140 .map(d -> d.getDependency().getArtifact())
141 .filter(artifact -> includeUnresolved || artifact.getPath() != null)
142 .collect(toList());
143 }
144
145 @Deprecated
146 static List<File> getFiles(List<DependencyNode> nodes) {
147 return getNodesWithDependencies(nodes).stream()
148 .map(d -> d.getDependency().getArtifact().getFile())
149 .filter(Objects::nonNull)
150 .collect(toList());
151 }
152
153 static List<Path> getPaths(List<DependencyNode> nodes) {
154 return getNodesWithDependencies(nodes).stream()
155 .map(d -> d.getDependency().getArtifact().getPath())
156 .filter(Objects::nonNull)
157 .collect(toList());
158 }
159
160 static String getClassPath(List<DependencyNode> nodes) {
161 return getPaths(nodes).stream()
162 .map(Path::toAbsolutePath)
163 .map(Path::toString)
164 .collect(joining(File.pathSeparator));
165 }
166 }