1 package org.apache.maven.repository.legacy.repository;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Map;
23
24 import org.apache.maven.artifact.UnknownRepositoryLayoutException;
25 import org.apache.maven.artifact.repository.ArtifactRepository;
26 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
27 import org.apache.maven.artifact.repository.MavenArtifactRepository;
28 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
29 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout2;
30 import org.codehaus.plexus.component.annotations.Component;
31 import org.codehaus.plexus.component.annotations.Requirement;
32
33
34
35
36 @Component( role = ArtifactRepositoryFactory.class )
37 public class DefaultArtifactRepositoryFactory
38 implements ArtifactRepositoryFactory
39 {
40
41 private String globalUpdatePolicy;
42
43 private String globalChecksumPolicy;
44
45 @Requirement( role = ArtifactRepositoryLayout.class )
46 private Map<String, ArtifactRepositoryLayout> repositoryLayouts;
47
48 public ArtifactRepositoryLayout getLayout( String layoutId )
49 throws UnknownRepositoryLayoutException
50 {
51 return repositoryLayouts.get( layoutId );
52 }
53
54 public ArtifactRepository createDeploymentArtifactRepository( String id, String url, String layoutId,
55 boolean uniqueVersion )
56 throws UnknownRepositoryLayoutException
57 {
58 ArtifactRepositoryLayout layout = repositoryLayouts.get( layoutId );
59
60 checkLayout( id, layoutId, layout );
61
62 return createDeploymentArtifactRepository( id, url, layout, uniqueVersion );
63 }
64
65 private void checkLayout( String repositoryId, String layoutId, ArtifactRepositoryLayout layout )
66 throws UnknownRepositoryLayoutException
67 {
68 if ( layout == null )
69 {
70 throw new UnknownRepositoryLayoutException( repositoryId, layoutId );
71 }
72 }
73
74 public ArtifactRepository createDeploymentArtifactRepository( String id, String url,
75 ArtifactRepositoryLayout repositoryLayout,
76 boolean uniqueVersion )
77 {
78 return createArtifactRepository( id, url, repositoryLayout, null, null );
79 }
80
81 public ArtifactRepository createArtifactRepository( String id, String url, String layoutId,
82 ArtifactRepositoryPolicy snapshots,
83 ArtifactRepositoryPolicy releases )
84 throws UnknownRepositoryLayoutException
85 {
86 ArtifactRepositoryLayout layout = repositoryLayouts.get( layoutId );
87
88 checkLayout( id, layoutId, layout );
89
90 return createArtifactRepository( id, url, layout, snapshots, releases );
91 }
92
93 public ArtifactRepository createArtifactRepository( String id, String url,
94 ArtifactRepositoryLayout repositoryLayout,
95 ArtifactRepositoryPolicy snapshots,
96 ArtifactRepositoryPolicy releases )
97 {
98 if ( snapshots == null )
99 {
100 snapshots = new ArtifactRepositoryPolicy();
101 }
102
103 if ( releases == null )
104 {
105 releases = new ArtifactRepositoryPolicy();
106 }
107
108 if ( globalUpdatePolicy != null )
109 {
110 snapshots.setUpdatePolicy( globalUpdatePolicy );
111 releases.setUpdatePolicy( globalUpdatePolicy );
112 }
113
114 if ( globalChecksumPolicy != null )
115 {
116 snapshots.setChecksumPolicy( globalChecksumPolicy );
117 releases.setChecksumPolicy( globalChecksumPolicy );
118 }
119
120 ArtifactRepository repository;
121 if ( repositoryLayout instanceof ArtifactRepositoryLayout2 )
122 {
123 repository =
124 ( (ArtifactRepositoryLayout2) repositoryLayout ).newMavenArtifactRepository( id, url, snapshots,
125 releases );
126 }
127 else
128 {
129 repository = new MavenArtifactRepository( id, url, repositoryLayout, snapshots, releases );
130 }
131
132 return repository;
133 }
134
135 public void setGlobalUpdatePolicy( String updatePolicy )
136 {
137 globalUpdatePolicy = updatePolicy;
138 }
139
140 public void setGlobalChecksumPolicy( String checksumPolicy )
141 {
142 globalChecksumPolicy = checksumPolicy;
143 }
144 }