KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > maven > project > ProjectUtils


1 package org.apache.maven.project;
2
3 /*
4  * Copyright 2001-2005 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19 import org.apache.maven.artifact.InvalidRepositoryException;
20 import org.apache.maven.artifact.repository.ArtifactRepository;
21 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
22 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
23 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
24 import org.apache.maven.model.DeploymentRepository;
25 import org.apache.maven.model.Repository;
26 import org.apache.maven.model.RepositoryBase;
27 import org.apache.maven.model.RepositoryPolicy;
28 import org.codehaus.plexus.PlexusContainer;
29 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
30
31 import java.util.ArrayList JavaDoc;
32 import java.util.Iterator JavaDoc;
33 import java.util.List JavaDoc;
34
35 public final class ProjectUtils
36 {
37     private ProjectUtils()
38     {
39     }
40
41     public static List JavaDoc buildArtifactRepositories( List JavaDoc repositories,
42                                                   ArtifactRepositoryFactory artifactRepositoryFactory,
43                                                   PlexusContainer container )
44         throws InvalidRepositoryException
45     {
46
47         List JavaDoc repos = new ArrayList JavaDoc();
48
49         for ( Iterator JavaDoc i = repositories.iterator(); i.hasNext(); )
50         {
51             Repository mavenRepo = (Repository) i.next();
52
53             ArtifactRepository artifactRepo =
54                 buildArtifactRepository( mavenRepo, artifactRepositoryFactory, container );
55
56             if ( !repos.contains( artifactRepo ) )
57             {
58                 repos.add( artifactRepo );
59             }
60         }
61         return repos;
62     }
63
64     public static ArtifactRepository buildDeploymentArtifactRepository( DeploymentRepository repo,
65                                                                         ArtifactRepositoryFactory artifactRepositoryFactory,
66                                                                         PlexusContainer container )
67         throws InvalidRepositoryException
68     {
69         if ( repo != null )
70         {
71             String JavaDoc id = repo.getId();
72             String JavaDoc url = repo.getUrl();
73
74             // TODO: make this a map inside the factory instead, so no lookup needed
75
ArtifactRepositoryLayout layout = getRepositoryLayout( repo, container );
76
77             return artifactRepositoryFactory.createDeploymentArtifactRepository( id, url, layout,
78                                                                                  repo.isUniqueVersion() );
79         }
80         else
81         {
82             return null;
83         }
84     }
85
86     public static ArtifactRepository buildArtifactRepository( Repository repo,
87                                                               ArtifactRepositoryFactory artifactRepositoryFactory,
88                                                               PlexusContainer container )
89         throws InvalidRepositoryException
90     {
91         if ( repo != null )
92         {
93             String JavaDoc id = repo.getId();
94             String JavaDoc url = repo.getUrl();
95
96             // TODO: make this a map inside the factory instead, so no lookup needed
97
ArtifactRepositoryLayout layout = getRepositoryLayout( repo, container );
98
99             ArtifactRepositoryPolicy snapshots = buildArtifactRepositoryPolicy( repo.getSnapshots() );
100             ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( repo.getReleases() );
101
102             return artifactRepositoryFactory.createArtifactRepository( id, url, layout, snapshots, releases );
103         }
104         else
105         {
106             return null;
107         }
108     }
109
110     private static ArtifactRepositoryPolicy buildArtifactRepositoryPolicy( RepositoryPolicy policy )
111     {
112         boolean enabled = true;
113         String JavaDoc updatePolicy = null;
114         String JavaDoc checksumPolicy = null;
115
116         if ( policy != null )
117         {
118             enabled = policy.isEnabled();
119             if ( policy.getUpdatePolicy() != null )
120             {
121                 updatePolicy = policy.getUpdatePolicy();
122             }
123             if ( policy.getChecksumPolicy() != null )
124             {
125                 checksumPolicy = policy.getChecksumPolicy();
126             }
127         }
128
129         return new ArtifactRepositoryPolicy( enabled, updatePolicy, checksumPolicy );
130     }
131
132     private static ArtifactRepositoryLayout getRepositoryLayout( RepositoryBase mavenRepo, PlexusContainer container )
133         throws InvalidRepositoryException
134     {
135         String JavaDoc layout = mavenRepo.getLayout();
136
137         ArtifactRepositoryLayout repositoryLayout;
138         try
139         {
140             repositoryLayout = (ArtifactRepositoryLayout) container.lookup( ArtifactRepositoryLayout.ROLE, layout );
141         }
142         catch ( ComponentLookupException e )
143         {
144             throw new InvalidRepositoryException( "Cannot find layout implementation corresponding to: \'" + layout +
145                 "\' for remote repository with id: \'" + mavenRepo.getId() + "\'.", e );
146         }
147         return repositoryLayout;
148     }
149
150 }
151
Popular Tags