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
26
27
28
29
30
31 public class MemoryRepositoryDependencyGraphBuilder
32 implements DependencyGraphBuilder
33 {
34 private MemoryRepository memoryRepository;
35
36 public ArchivaProjectModel resolveProjectModel( VersionedReference reference )
37 {
38 ArtifactReference artifact = new ArtifactReference();
39 artifact.setGroupId( reference.getGroupId() );
40 artifact.setArtifactId( reference.getArtifactId() );
41 artifact.setVersion( reference.getVersion() );
42 artifact.setType( "pom" );
43
44 return resolveProjectModel( artifact );
45 }
46
47 public ArchivaProjectModel resolveProjectModel( ArtifactReference reference )
48 {
49 ArchivaProjectModel model = memoryRepository
50 .getProjectModel( reference.getGroupId(), reference.getArtifactId(), reference.getVersion() );
51
52 if ( model == null )
53 {
54 throw new NullPointerException( "Unable to find model for " + DependencyGraphKeys.toKey( reference ) );
55 }
56
57 if ( model.getParentProject() != null )
58 {
59 ArchivaProjectModel parentModel = resolveProjectModel( model.getParentProject() );
60
61 model.getDependencies().addAll( parentModel.getDependencies() );
62 model.getDependencyManagement().addAll( parentModel.getDependencyManagement() );
63 }
64
65 return model;
66 }
67
68 public MemoryRepository getMemoryRepository()
69 {
70 return memoryRepository;
71 }
72
73 public void setMemoryRepository( MemoryRepository memoryRepository )
74 {
75 this.memoryRepository = memoryRepository;
76 }
77
78 public DependencyGraph createGraph( VersionedReference versionedProjectReference )
79 {
80 String groupId = versionedProjectReference.getGroupId();
81 String artifactId = versionedProjectReference.getArtifactId();
82 String version = versionedProjectReference.getVersion();
83
84 DependencyGraph graph = new DependencyGraph( groupId, artifactId, version );
85 return graph;
86 }
87
88 public void resolveNode( DependencyGraph graph, DependencyGraphNode fromNode,
89 VersionedReference versionedProjectReference )
90 {
91 ArchivaProjectModel model = resolveProjectModel( fromNode.getArtifact() );
92
93 DependencyGraphUtils.addNodeFromModel( model, graph, fromNode );
94 }
95 }