1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.repository;
20
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.LinkedHashSet;
24 import java.util.List;
25 import java.util.Set;
26
27 import org.apache.maven.artifact.Artifact;
28 import org.apache.maven.artifact.repository.ArtifactRepository;
29 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
30 import org.apache.maven.artifact.resolver.CyclicDependencyException;
31 import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
32
33
34
35
36
37
38
39 public class MetadataResolutionResult {
40 private Artifact originatingArtifact;
41
42 private List<Artifact> missingArtifacts;
43
44
45
46 private List<Exception> exceptions;
47
48 private List<Exception> versionRangeViolations;
49
50 private List<ArtifactResolutionException> metadataResolutionExceptions;
51
52 private List<CyclicDependencyException> circularDependencyExceptions;
53
54 private List<ArtifactResolutionException> errorArtifactExceptions;
55
56
57
58 private List<ArtifactRepository> repositories;
59
60 private Set<Artifact> requestedArtifacts;
61
62 private Set<Artifact> artifacts;
63
64 private MetadataGraph dirtyTree;
65
66 private MetadataGraph resolvedTree;
67
68 private MetadataGraph resolvedGraph;
69
70 public Artifact getOriginatingArtifact() {
71 return originatingArtifact;
72 }
73
74 public MetadataResolutionResult listOriginatingArtifact(final Artifact originatingArtifact) {
75 this.originatingArtifact = originatingArtifact;
76
77 return this;
78 }
79
80 public void addArtifact(Artifact artifact) {
81 if (artifacts == null) {
82 artifacts = new LinkedHashSet<>();
83 }
84
85 artifacts.add(artifact);
86 }
87
88 public Set<Artifact> getArtifacts() {
89 return artifacts;
90 }
91
92 public void addRequestedArtifact(Artifact artifact) {
93 if (requestedArtifacts == null) {
94 requestedArtifacts = new LinkedHashSet<>();
95 }
96
97 requestedArtifacts.add(artifact);
98 }
99
100 public Set<Artifact> getRequestedArtifacts() {
101 return requestedArtifacts;
102 }
103
104 public boolean hasMissingArtifacts() {
105 return missingArtifacts != null && !missingArtifacts.isEmpty();
106 }
107
108 public List<Artifact> getMissingArtifacts() {
109 return missingArtifacts == null ? Collections.emptyList() : Collections.unmodifiableList(missingArtifacts);
110 }
111
112 public MetadataResolutionResult addMissingArtifact(Artifact artifact) {
113 missingArtifacts = initList(missingArtifacts);
114
115 missingArtifacts.add(artifact);
116
117 return this;
118 }
119
120 public MetadataResolutionResult setUnresolvedArtifacts(final List<Artifact> unresolvedArtifacts) {
121 this.missingArtifacts = unresolvedArtifacts;
122
123 return this;
124 }
125
126
127
128
129
130 public boolean hasExceptions() {
131 return exceptions != null && !exceptions.isEmpty();
132 }
133
134 public List<Exception> getExceptions() {
135 return exceptions == null ? Collections.emptyList() : Collections.unmodifiableList(exceptions);
136 }
137
138
139
140
141
142 public boolean hasVersionRangeViolations() {
143 return versionRangeViolations != null;
144 }
145
146
147
148
149
150
151 public MetadataResolutionResult addVersionRangeViolation(Exception e) {
152 versionRangeViolations = initList(versionRangeViolations);
153
154 versionRangeViolations.add(e);
155
156 exceptions = initList(exceptions);
157
158 exceptions.add(e);
159
160 return this;
161 }
162
163 public OverConstrainedVersionException getVersionRangeViolation(int i) {
164 return (OverConstrainedVersionException) versionRangeViolations.get(i);
165 }
166
167 public List<Exception> getVersionRangeViolations() {
168 return versionRangeViolations == null
169 ? Collections.emptyList()
170 : Collections.unmodifiableList(versionRangeViolations);
171 }
172
173
174
175
176
177 public boolean hasMetadataResolutionExceptions() {
178 return metadataResolutionExceptions != null;
179 }
180
181 public MetadataResolutionResult addMetadataResolutionException(ArtifactResolutionException e) {
182 metadataResolutionExceptions = initList(metadataResolutionExceptions);
183
184 metadataResolutionExceptions.add(e);
185
186 exceptions = initList(exceptions);
187
188 exceptions.add(e);
189
190 return this;
191 }
192
193 public ArtifactResolutionException getMetadataResolutionException(int i) {
194 return metadataResolutionExceptions.get(i);
195 }
196
197 public List<ArtifactResolutionException> getMetadataResolutionExceptions() {
198 return metadataResolutionExceptions == null
199 ? Collections.emptyList()
200 : Collections.unmodifiableList(metadataResolutionExceptions);
201 }
202
203
204
205
206
207 public boolean hasErrorArtifactExceptions() {
208 return errorArtifactExceptions != null;
209 }
210
211 public MetadataResolutionResult addError(Exception e) {
212 exceptions = initList(exceptions);
213
214 exceptions.add(e);
215
216 return this;
217 }
218
219 public List<ArtifactResolutionException> getErrorArtifactExceptions() {
220 if (errorArtifactExceptions == null) {
221 return Collections.emptyList();
222 }
223
224 return Collections.unmodifiableList(errorArtifactExceptions);
225 }
226
227
228
229
230
231 public boolean hasCircularDependencyExceptions() {
232 return circularDependencyExceptions != null;
233 }
234
235 public MetadataResolutionResult addCircularDependencyException(CyclicDependencyException e) {
236 circularDependencyExceptions = initList(circularDependencyExceptions);
237
238 circularDependencyExceptions.add(e);
239
240 exceptions = initList(exceptions);
241
242 exceptions.add(e);
243
244 return this;
245 }
246
247 public CyclicDependencyException getCircularDependencyException(int i) {
248 return circularDependencyExceptions.get(i);
249 }
250
251 public List<CyclicDependencyException> getCircularDependencyExceptions() {
252 if (circularDependencyExceptions == null) {
253 return Collections.emptyList();
254 }
255
256 return Collections.unmodifiableList(circularDependencyExceptions);
257 }
258
259
260
261
262
263 public List<ArtifactRepository> getRepositories() {
264 if (repositories == null) {
265 return Collections.emptyList();
266 }
267
268 return Collections.unmodifiableList(repositories);
269 }
270
271 public MetadataResolutionResult setRepositories(final List<ArtifactRepository> repositories) {
272 this.repositories = repositories;
273
274 return this;
275 }
276
277
278
279
280
281 private <T> List<T> initList(final List<T> l) {
282 if (l == null) {
283 return new ArrayList<>();
284 }
285 return l;
286 }
287
288 public String toString() {
289 if (artifacts == null) {
290 return "";
291 }
292 StringBuilder sb = new StringBuilder(256);
293 int i = 1;
294 sb.append("---------\n");
295 sb.append(artifacts.size()).append('\n');
296 for (Artifact a : artifacts) {
297 sb.append(i).append(' ').append(a).append('\n');
298 i++;
299 }
300 sb.append("---------\n");
301 return sb.toString();
302 }
303
304 public MetadataGraph getResolvedTree() {
305 return resolvedTree;
306 }
307
308 public void setResolvedTree(MetadataGraph resolvedTree) {
309 this.resolvedTree = resolvedTree;
310 }
311 }