1 | |
package org.apache.maven.archiva.dependency.graph; |
2 | |
|
3 | |
|
4 | |
|
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
|
17 | |
|
18 | |
|
19 | |
|
20 | |
|
21 | |
|
22 | |
import org.apache.maven.archiva.model.ArchivaProjectModel; |
23 | |
import org.apache.maven.archiva.model.ArtifactReference; |
24 | |
import org.apache.maven.archiva.model.VersionedReference; |
25 | |
import org.apache.maven.archiva.repository.project.ProjectModelException; |
26 | |
import org.apache.maven.archiva.repository.project.ProjectModelResolverFactory; |
27 | |
import org.apache.maven.archiva.repository.project.filters.EffectiveProjectModelFilter; |
28 | |
|
29 | |
|
30 | |
|
31 | |
|
32 | |
|
33 | |
|
34 | |
|
35 | |
|
36 | |
|
37 | |
|
38 | 0 | public class ProjectModelBasedGraphBuilder |
39 | |
implements DependencyGraphBuilder |
40 | |
{ |
41 | |
|
42 | |
|
43 | |
|
44 | |
private ProjectModelResolverFactory resolverFactory; |
45 | |
|
46 | |
|
47 | |
|
48 | |
|
49 | |
|
50 | |
|
51 | 0 | private EffectiveProjectModelFilter effectiveFilter = new EffectiveProjectModelFilter(); |
52 | |
|
53 | |
public DependencyGraph createGraph( VersionedReference versionedProjectReference ) |
54 | |
{ |
55 | 0 | String groupId = versionedProjectReference.getGroupId(); |
56 | 0 | String artifactId = versionedProjectReference.getArtifactId(); |
57 | 0 | String version = versionedProjectReference.getVersion(); |
58 | |
|
59 | 0 | DependencyGraph graph = new DependencyGraph( groupId, artifactId, version ); |
60 | 0 | return graph; |
61 | |
} |
62 | |
|
63 | |
public void resolveNode( DependencyGraph graph, DependencyGraphNode fromNode, |
64 | |
VersionedReference versionedProjectReference ) |
65 | |
{ |
66 | 0 | ArchivaProjectModel model = resolveModel( fromNode.getArtifact() ); |
67 | |
|
68 | 0 | DependencyGraphUtils.addNodeFromModel( model, graph, fromNode ); |
69 | 0 | } |
70 | |
|
71 | |
private ArchivaProjectModel resolveModel( ArtifactReference reference ) |
72 | |
{ |
73 | 0 | VersionedReference projectRef = new VersionedReference(); |
74 | |
|
75 | 0 | projectRef.setGroupId( reference.getGroupId() ); |
76 | 0 | projectRef.setArtifactId( reference.getArtifactId() ); |
77 | 0 | projectRef.setVersion( reference.getVersion() ); |
78 | |
|
79 | 0 | ArchivaProjectModel model = resolverFactory.getCurrentResolverStack().findProject( projectRef ); |
80 | |
|
81 | 0 | if ( model == null ) |
82 | |
{ |
83 | 0 | return createDefaultModel( reference ); |
84 | |
} |
85 | |
|
86 | |
try |
87 | |
{ |
88 | 0 | ArchivaProjectModel processedModel = effectiveFilter.filter( model ); |
89 | |
|
90 | 0 | return processedModel; |
91 | |
} |
92 | 0 | catch ( ProjectModelException e ) |
93 | |
{ |
94 | 0 | e.printStackTrace( System.err ); |
95 | 0 | return createDefaultModel( reference ); |
96 | |
} |
97 | |
} |
98 | |
|
99 | |
private ArchivaProjectModel createDefaultModel( ArtifactReference reference ) |
100 | |
{ |
101 | 0 | ArchivaProjectModel model = new ArchivaProjectModel(); |
102 | |
|
103 | |
|
104 | 0 | model = new ArchivaProjectModel(); |
105 | 0 | model.setGroupId( reference.getGroupId() ); |
106 | 0 | model.setArtifactId( reference.getArtifactId() ); |
107 | 0 | model.setVersion( reference.getVersion() ); |
108 | 0 | model.setPackaging( reference.getType() ); |
109 | 0 | return model; |
110 | |
} |
111 | |
} |