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.util.ArrayList;
23 import java.util.Iterator;
24 import java.util.List;
25 import java.util.function.Consumer;
26
27 import org.eclipse.aether.artifact.Artifact;
28 import org.eclipse.aether.graph.Dependency;
29 import org.eclipse.aether.graph.DependencyNode;
30
31 import static java.util.stream.Collectors.toList;
32
33
34
35
36
37
38
39
40
41
42
43 public final class NodeListGenerator implements Consumer<DependencyNode> {
44
45 private final ArrayList<DependencyNode> nodes;
46
47 public NodeListGenerator() {
48 nodes = new ArrayList<>(128);
49 }
50
51 @Override
52 public void accept(DependencyNode dependencyNode) {
53 nodes.add(dependencyNode);
54 }
55
56
57
58
59
60
61 public List<DependencyNode> getNodes() {
62 return nodes;
63 }
64
65
66
67
68
69
70
71 public List<DependencyNode> getNodesWithDependencies() {
72 return getNodesWithDependencies(getNodes());
73 }
74
75
76
77
78
79
80
81 public List<Dependency> getDependencies(boolean includeUnresolved) {
82 return getDependencies(getNodes(), includeUnresolved);
83 }
84
85
86
87
88
89
90
91 public List<Artifact> getArtifacts(boolean includeUnresolved) {
92 return getArtifacts(getNodes(), includeUnresolved);
93 }
94
95
96
97
98
99
100 public List<File> getFiles() {
101 return getFiles(getNodes());
102 }
103
104
105
106
107
108
109
110 public String getClassPath() {
111 return getClassPath(getNodes());
112 }
113
114 static List<DependencyNode> getNodesWithDependencies(List<DependencyNode> nodes) {
115 return nodes.stream().filter(d -> d.getDependency() != null).collect(toList());
116 }
117
118 static List<Dependency> getDependencies(List<DependencyNode> nodes, boolean includeUnresolved) {
119 List<Dependency> dependencies = new ArrayList<>(nodes.size());
120 for (DependencyNode node : getNodesWithDependencies(nodes)) {
121 Dependency dependency = node.getDependency();
122 if (includeUnresolved || dependency.getArtifact().getFile() != null) {
123 dependencies.add(dependency);
124 }
125 }
126 return dependencies;
127 }
128
129 static List<Artifact> getArtifacts(List<DependencyNode> nodes, boolean includeUnresolved) {
130 List<Artifact> artifacts = new ArrayList<>(nodes.size());
131 for (DependencyNode node : getNodesWithDependencies(nodes)) {
132 Artifact artifact = node.getDependency().getArtifact();
133 if (includeUnresolved || artifact.getFile() != null) {
134 artifacts.add(artifact);
135 }
136 }
137
138 return artifacts;
139 }
140
141 static List<File> getFiles(List<DependencyNode> nodes) {
142 List<File> files = new ArrayList<>(nodes.size());
143 for (DependencyNode node : getNodesWithDependencies(nodes)) {
144 File file = node.getDependency().getArtifact().getFile();
145 if (file != null) {
146 files.add(file);
147 }
148 }
149 return files;
150 }
151
152 static String getClassPath(List<DependencyNode> nodes) {
153 StringBuilder buffer = new StringBuilder(1024);
154 for (Iterator<DependencyNode> it = getNodesWithDependencies(nodes).iterator(); it.hasNext(); ) {
155 DependencyNode node = it.next();
156 Artifact artifact = node.getDependency().getArtifact();
157 if (artifact.getFile() != null) {
158 buffer.append(artifact.getFile().getAbsolutePath());
159 if (it.hasNext()) {
160 buffer.append(File.pathSeparatorChar);
161 }
162 }
163 }
164 return buffer.toString();
165 }
166 }