KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > maven > plugin > DefaultPluginMappingManager


1 package org.apache.maven.plugin;
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.repository.ArtifactRepository;
20 import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
21 import org.apache.maven.artifact.repository.metadata.Metadata;
22 import org.apache.maven.artifact.repository.metadata.Plugin;
23 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
24 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
25 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException;
26 import org.codehaus.plexus.logging.AbstractLogEnabled;
27
28 import java.util.ArrayList JavaDoc;
29 import java.util.HashMap JavaDoc;
30 import java.util.Iterator JavaDoc;
31 import java.util.List JavaDoc;
32 import java.util.Map JavaDoc;
33
34 /**
35  * Manage plugin prefix to artifact ID mapping associations.
36  *
37  * @author <a HREF="mailto:brett@apache.org">Brett Porter</a>
38  * @version $Id: DefaultPluginMappingManager.java 320683 2005-10-13 08:04:27Z brett $
39  */

40 public class DefaultPluginMappingManager
41     extends AbstractLogEnabled
42     implements PluginMappingManager
43 {
44     protected RepositoryMetadataManager repositoryMetadataManager;
45
46     private Map JavaDoc pluginDefinitionsByPrefix = new HashMap JavaDoc();
47
48     public org.apache.maven.model.Plugin getByPrefix( String JavaDoc pluginPrefix, List JavaDoc groupIds, List JavaDoc pluginRepositories,
49                                                       ArtifactRepository localRepository )
50     {
51         // if not found, try from the remote repository
52
if ( !pluginDefinitionsByPrefix.containsKey( pluginPrefix ) )
53         {
54             getLogger().info( "Searching repository for plugin with prefix: \'" + pluginPrefix + "\'." );
55
56             loadPluginMappings( groupIds, pluginRepositories, localRepository );
57         }
58
59         return (org.apache.maven.model.Plugin) pluginDefinitionsByPrefix.get( pluginPrefix );
60     }
61
62     private void loadPluginMappings( List JavaDoc groupIds, List JavaDoc pluginRepositories, ArtifactRepository localRepository )
63     {
64         List JavaDoc pluginGroupIds = new ArrayList JavaDoc( groupIds );
65
66         // TODO: use constant
67
if ( !pluginGroupIds.contains( "org.apache.maven.plugins" ) )
68         {
69             pluginGroupIds.add( "org.apache.maven.plugins" );
70         }
71         if ( !pluginGroupIds.contains( "org.codehaus.mojo" ) )
72         {
73             pluginGroupIds.add( "org.codehaus.mojo" );
74         }
75
76         for ( Iterator JavaDoc it = pluginGroupIds.iterator(); it.hasNext(); )
77         {
78             String JavaDoc groupId = (String JavaDoc) it.next();
79
80             try
81             {
82                 loadPluginMappings( groupId, pluginRepositories, localRepository );
83             }
84             catch ( RepositoryMetadataResolutionException e )
85             {
86                 getLogger().warn( "Cannot resolve plugin-mapping metadata for groupId: " + groupId + " - IGNORING." );
87
88                 getLogger().debug( "Error resolving plugin-mapping metadata for groupId: " + groupId + ".", e );
89             }
90         }
91     }
92
93     private void loadPluginMappings( String JavaDoc groupId, List JavaDoc pluginRepositories, ArtifactRepository localRepository )
94         throws RepositoryMetadataResolutionException
95     {
96         RepositoryMetadata metadata = new GroupRepositoryMetadata( groupId );
97
98         repositoryMetadataManager.resolve( metadata, pluginRepositories, localRepository );
99
100         Metadata repoMetadata = metadata.getMetadata();
101         if ( repoMetadata != null )
102         {
103             for ( Iterator JavaDoc pluginIterator = repoMetadata.getPlugins().iterator(); pluginIterator.hasNext(); )
104             {
105                 Plugin mapping = (Plugin) pluginIterator.next();
106
107                 String JavaDoc prefix = mapping.getPrefix();
108
109                 String JavaDoc artifactId = mapping.getArtifactId();
110
111                 org.apache.maven.model.Plugin plugin = new org.apache.maven.model.Plugin();
112
113                 plugin.setGroupId( metadata.getGroupId() );
114
115                 plugin.setArtifactId( artifactId );
116
117                 pluginDefinitionsByPrefix.put( prefix, plugin );
118             }
119         }
120     }
121 }
122
Popular Tags