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