1   package org.apache.maven.shared.dependencies.collect.internal;
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.HashSet;
24  import java.util.List;
25  import java.util.Set;
26  
27  import org.apache.maven.artifact.repository.ArtifactRepository;
28  import org.apache.maven.shared.dependencies.collect.CollectorResult;
29  import org.sonatype.aether.collection.CollectResult;
30  import org.sonatype.aether.graph.DependencyNode;
31  import org.sonatype.aether.graph.DependencyVisitor;
32  import org.sonatype.aether.repository.RemoteRepository;
33  
34  
35  
36  
37  
38  
39  
40  public class Maven30CollectorResult implements CollectorResult
41  {
42      private final CollectResult collectResult;
43      
44      
45  
46  
47      public Maven30CollectorResult( CollectResult collectResult )
48      {
49          this.collectResult = collectResult;
50      }
51  
52      @Override
53      public List<ArtifactRepository> getRemoteRepositories()
54      {
55          final Set<RemoteRepository> aetherRepositories = new HashSet<RemoteRepository>();
56          
57          DependencyVisitor visitor = new DependencyVisitor()
58          {
59              @Override
60              public boolean visitEnter( DependencyNode node )
61              {
62                  aetherRepositories.addAll( node.getRepositories() );
63                  return true;
64              }
65              
66              @Override
67              public boolean visitLeave( DependencyNode node )
68              {
69                  return true;
70              }
71          };
72          
73          collectResult.getRoot().accept( visitor );
74          
75          List<ArtifactRepository> mavenRepositories = new ArrayList<ArtifactRepository>( aetherRepositories.size() );
76          
77          for ( RemoteRepository aetherRepository : aetherRepositories )
78          {
79              mavenRepositories.add( new Maven30ArtifactRepositoryAdapter( aetherRepository ) );
80          }
81          
82          return mavenRepositories;
83      }
84  
85  }