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
45 public final class NodeListGenerator implements Consumer<DependencyNode> {
46
47 private final ArrayList<DependencyNode> nodes;
48
49 public NodeListGenerator() {
50 nodes = new ArrayList<>(128);
51 }
52
53 @Override
54 public void accept(DependencyNode dependencyNode) {
55 nodes.add(dependencyNode);
56 }
57
58
59
60
61
62
63 public List<DependencyNode> getNodes() {
64 return nodes;
65 }
66
67
68
69
70
71
72
73 public List<DependencyNode> getNodesWithDependencies() {
74 return getNodesWithDependencies(getNodes());
75 }
76
77
78
79
80
81
82
83 public List<Dependency> getDependencies(boolean includeUnresolved) {
84 return getDependencies(getNodes(), includeUnresolved);
85 }
86
87
88
89
90
91
92
93 public List<Artifact> getArtifacts(boolean includeUnresolved) {
94 return getArtifacts(getNodes(), includeUnresolved);
95 }
96
97
98
99
100
101
102
103 @Deprecated
104 public List<File> getFiles() {
105 return getFiles(getNodes());
106 }
107
108
109
110
111
112
113
114 public List<Path> getPaths() {
115 return getPaths(getNodes());
116 }
117
118
119
120
121
122
123
124 public String getClassPath() {
125 return getClassPath(getNodes());
126 }
127
128 static List<DependencyNode> getNodesWithDependencies(List<DependencyNode> nodes) {
129 return nodes.stream().filter(d -> d.getDependency() != null).collect(toList());
130 }
131
132 static List<Dependency> getDependencies(List<DependencyNode> nodes, boolean includeUnresolved) {
133 return getNodesWithDependencies(nodes).stream()
134 .map(DependencyNode::getDependency)
135 .filter(d -> includeUnresolved || d.getArtifact().getPath() != null)
136 .collect(toList());
137 }
138
139 static List<Artifact> getArtifacts(List<DependencyNode> nodes, boolean includeUnresolved) {
140 return getNodesWithDependencies(nodes).stream()
141 .map(d -> d.getDependency().getArtifact())
142 .filter(artifact -> includeUnresolved || artifact.getPath() != null)
143 .collect(toList());
144 }
145
146 @Deprecated
147 static List<File> getFiles(List<DependencyNode> nodes) {
148 return getNodesWithDependencies(nodes).stream()
149 .map(d -> d.getDependency().getArtifact().getFile())
150 .filter(Objects::nonNull)
151 .collect(toList());
152 }
153
154 static List<Path> getPaths(List<DependencyNode> nodes) {
155 return getNodesWithDependencies(nodes).stream()
156 .map(d -> d.getDependency().getArtifact().getPath())
157 .filter(Objects::nonNull)
158 .collect(toList());
159 }
160
161 static String getClassPath(List<DependencyNode> nodes) {
162 return getPaths(nodes).stream()
163 .map(Path::toAbsolutePath)
164 .map(Path::toString)
165 .collect(joining(File.pathSeparator));
166 }
167 }