View Javadoc
1   package org.apache.maven.repository.legacy.repository;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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   * @author jdcasey
35   */
36  @Component( role = ArtifactRepositoryFactory.class )
37  public class DefaultArtifactRepositoryFactory
38      implements ArtifactRepositoryFactory
39  {
40      // TODO: use settings?
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  }