1 package org.apache.maven.internal.aether;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.Collection;
24 import java.util.List;
25
26 import org.apache.maven.model.Model;
27 import org.apache.maven.repository.internal.MavenWorkspaceReader;
28 import org.eclipse.aether.artifact.Artifact;
29 import org.eclipse.aether.repository.WorkspaceReader;
30 import org.eclipse.aether.repository.WorkspaceRepository;
31 import org.eclipse.aether.util.repository.ChainedWorkspaceReader;
32
33
34
35
36 public final class MavenChainedWorkspaceReader
37 implements MavenWorkspaceReader
38 {
39
40 private ChainedWorkspaceReader delegate;
41
42 private WorkspaceReader[] readers;
43
44
45
46
47
48
49 private MavenChainedWorkspaceReader( WorkspaceReader... readers )
50 {
51 this.delegate = new ChainedWorkspaceReader( readers );
52 this.readers = readers;
53 }
54
55 @Override
56 public Model findModel( Artifact artifact )
57 {
58 for ( WorkspaceReader workspaceReader : readers )
59 {
60 if ( workspaceReader instanceof MavenWorkspaceReader )
61 {
62 Model model = ( (MavenWorkspaceReader) workspaceReader ).findModel( artifact );
63 if ( model != null )
64 {
65 return model;
66 }
67 }
68 }
69 return null;
70 }
71
72 @Override
73 public WorkspaceRepository getRepository()
74 {
75 return delegate.getRepository();
76 }
77
78 @Override
79 public File findArtifact( Artifact artifact )
80 {
81 return delegate.findArtifact( artifact );
82 }
83
84 @Override
85 public List<String> findVersions( Artifact artifact )
86 {
87 return delegate.findVersions( artifact );
88 }
89
90
91
92
93
94
95
96 public static WorkspaceReader of( Collection<WorkspaceReader> workspaceReaderCollection )
97 {
98 WorkspaceReader[] readers = workspaceReaderCollection.toArray( new WorkspaceReader[0] );
99 if ( readers.length == 1 )
100 {
101 return readers[0];
102 }
103 return new MavenChainedWorkspaceReader( readers );
104 }
105
106 }