Author: jdcasey
Date: Tue Jul 19 16:27:24 2005
New Revision: 219807

URL: http://svn.apache.org/viewcvs?rev=219807&view=rev
Log:
Fixing bootstrap.

Added:
    
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AbstractPluginMappingMojo.java
   (with props)
Modified:
    
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
    
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManagementException.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-mboot2/src/main/java/MBoot.java
    
maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/DefaultPluginMappingBuilder.java
    
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java
    
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java

Modified: 
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=219807&r1=219806&r2=219807&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
 (original)
+++ 
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
 Tue Jul 19 16:27:24 2005
@@ -6,9 +6,12 @@
 import org.apache.maven.wagon.TransferFailedException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -42,22 +45,9 @@
             {
                 try
                 {
-                    File tempMetadataFile = File.createTempFile( 
"plugins.xml", null );
-
                     try
                     {
-                        wagonManager.getRepositoryMetadata( metadata, remote, 
tempMetadataFile );
-
-                        if ( !metadataFile.exists()
-                            || ( metadataFile.lastModified() <= 
tempMetadataFile.lastModified() ) )
-                        {
-                            if ( !tempMetadataFile.renameTo( metadataFile ) )
-                            {
-                                FileUtils.copyFile( tempMetadataFile, 
metadataFile );
-
-                                tempMetadataFile.delete();
-                            }
-                        }
+                        wagonManager.getRepositoryMetadata( metadata, remote, 
metadataFile );
                     }
                     catch ( ResourceDoesNotExistException e )
                     {
@@ -81,20 +71,43 @@
                     throw new RepositoryMetadataManagementException( metadata,
                                                                      "Failed 
to download repository metadata.", e );
                 }
-                catch ( IOException e )
-                {
-                    throw new RepositoryMetadataManagementException(
-                                                                     metadata,
-                                                                     "Error 
constructing temporary metadata download file.",
-                                                                     e );
-                }
             }
             else
             {
                 getLogger().info( "Using local copy of " + metadata + " from: 
" + metadataFile );
             }
 
-            metadata.setFile( metadataFile );
+            if ( metadataFile.exists() )
+            {
+                if ( !verifyFileNotEmpty( metadataFile ) )
+                {
+                    throw new InvalidRepositoryMetadataException( metadata, 
"Metadata located in file: " + metadataFile + " appears to be corrupt (file is 
empty). DOWNLOAD FAILED." );
+                }
+                
+                cachedMetadata.put( metadata.getRepositoryPath(), metadataFile 
);
+            }
+        }
+        
+        metadata.setFile( metadataFile );
+    }
+
+    private boolean verifyFileNotEmpty( File metadataFile )
+    {
+        InputStream verifyInputStream = null;
+        
+        try
+        {
+            verifyInputStream = new FileInputStream( metadataFile );
+            
+            return verifyInputStream.available() > 0;
+        }
+        catch( IOException e )
+        {
+            return false;
+        }
+        finally
+        {
+            IOUtil.close( verifyInputStream );
         }
     }
 

Modified: 
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManagementException.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManagementException.java?rev=219807&r1=219806&r2=219807&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManagementException.java
 (original)
+++ 
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManagementException.java
 Tue Jul 19 16:27:24 2005
@@ -8,14 +8,14 @@
 
     public RepositoryMetadataManagementException( RepositoryMetadata metadata, 
String message, Throwable cause )
     {
-        super( "Failed to resolve repository metadata: " + metadata + ". Error 
was: " + cause.getMessage(), cause );
+        super( "Failed to resolve repository metadata: " + metadata + 
".\n\nOriginal message: " + message + "\n\nError was: " + cause.getMessage(), 
cause );
         
         this.metadata = metadata;
     }
 
     public RepositoryMetadataManagementException( RepositoryMetadata metadata, 
String message )
     {
-        super( "Failed to resolve repository metadata: " + metadata + "." );
+        super( "Failed to resolve repository metadata: " + metadata + 
".\n\nOriginal message: " + message );
         
         this.metadata = metadata;
     }

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=219807&r1=219806&r2=219807&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Tue Jul 19 16:27:24 2005
@@ -27,7 +27,6 @@
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ExclusionSetFilter;
-import org.apache.maven.artifact.resolver.filter.InversionArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
@@ -73,9 +72,12 @@
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
+import java.io.File;
 import java.lang.reflect.Field;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -496,24 +498,18 @@
 
                 pluginDescriptor.setClassRealm( 
pluginContainer.getContainerRealm() );
 
-                // TODO: this is probably overkill as it is rarely used - can 
we use a mojo tag to signal this will be
-                // used or check its configuration? Also, when it is used, 
perhaps it is more effecient to resolve
-                // everything at once and apply the exclusion filter when 
constructing the plugin container above.
-                // Check this out with yourkit
-                ArtifactFilter distroProvidedFilter = new 
InversionArtifactFilter( artifactFilter );
+                List unresolved = new ArrayList( dependencies );
+                
+                unresolved.removeAll( resolved );
+                
+                resolveCoreArtifacts( unresolved );
+
+                List allResolved = new ArrayList( resolved.size() + 
unresolved.size() );
+                
+                allResolved.addAll( resolved );
+                allResolved.addAll( unresolved );
 
-                ArtifactResolutionResult distroProvidedResult = 
artifactResolver
-                    .resolveTransitively( dependencies, pluginArtifact, 
localRepository, remoteRepositories,
-                                          metadataSource, distroProvidedFilter 
);
-
-                Set distroProvided = distroProvidedResult.getArtifacts();
-
-                List unfilteredArtifactList = new ArrayList( resolved.size() + 
distroProvided.size() );
-
-                unfilteredArtifactList.addAll( resolved );
-                unfilteredArtifactList.addAll( distroProvided );
-
-                pluginDescriptor.setArtifacts( unfilteredArtifactList );
+                pluginDescriptor.setArtifacts( allResolved );
             }
             catch ( ArtifactResolutionException e )
             {
@@ -530,6 +526,41 @@
         }
     }
 
+    private Map resolvedCoreArtifactFiles = new HashMap();
+    
+    private void resolveCoreArtifacts( List unresolved )
+        throws PluginConfigurationException
+    {
+        for ( Iterator it = unresolved.iterator(); it.hasNext(); )
+        {
+            Artifact artifact = (Artifact) it.next();
+            
+            File artifactFile = (File) resolvedCoreArtifactFiles.get( 
artifact.getId() );
+            
+            if ( artifactFile == null )
+            {
+                String resource = "/META-INF/maven/" + artifact.getGroupId() + 
"/" + artifact.getArtifactId() + "/pom.xml";
+                
+                URL resourceUrl = container.getContainerRealm().getResource( 
resource );
+                
+                if ( resourceUrl == null )
+                {
+                    throw new PluginConfigurationException( "Cannot resolve 
core artifact: " + artifact.getId() );
+                }
+                
+                String artifactPath = resourceUrl.getPath();
+                
+                artifactPath = artifactPath.substring( 0, 
artifactPath.length() - resource.length() );
+                
+                artifactFile = new File( artifactPath );
+                
+                resolvedCoreArtifactFiles.put( artifact.getId(), artifactFile 
);
+            }
+            
+            artifact.setFile( artifactFile );
+        }
+    }
+
     private PlexusConfiguration extractMojoConfiguration( PlexusConfiguration 
mergedConfiguration,
                                                           MojoDescriptor 
mojoDescriptor )
     {
@@ -905,6 +936,8 @@
         artifacts.add( "maven-monitor" );
         artifacts.add( "maven-plugin-api" );
         artifacts.add( "maven-plugin-descriptor" );
+        artifacts.add( "maven-plugin-mapping" );
+        artifacts.add( "maven-plugin-registry" );
         artifacts.add( "maven-project" );
         artifacts.add( "maven-settings" );
         artifacts.add( "plexus-container-default" );

Modified: maven/components/trunk/maven-mboot2/src/main/java/MBoot.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-mboot2/src/main/java/MBoot.java?rev=219807&r1=219806&r2=219807&view=diff
==============================================================================
--- maven/components/trunk/maven-mboot2/src/main/java/MBoot.java (original)
+++ maven/components/trunk/maven-mboot2/src/main/java/MBoot.java Tue Jul 19 
16:27:24 2005
@@ -644,7 +644,7 @@
         // Create JAR
         // 
----------------------------------------------------------------------
 
-        createJar( classes, buildDir, reader );
+        createJar( new File( basedir, "pom.xml" ), classes, buildDir, reader );
 
         installPom( basedir, localRepository, reader );
 
@@ -726,7 +726,7 @@
         return cl;
     }
 
-    private void createJar( String classes, String buildDir, ModelReader 
reader )
+    private void createJar( File pomFile, String classes, String buildDir, 
ModelReader reader )
         throws Exception
     {
         JarMojo jarMojo = new JarMojo();
@@ -759,8 +759,9 @@
         p.store( os, "Generated by Maven" );
 
         os.close(); // stream is flushed but not closed by Properties.store()
+        
+        FileUtils.copyFile( pomFile, new File( pomPropertiesDir, "pom.xml" ) );
 
-        //TODO: Add pom.xml
         jarMojo.execute( new File( classes ), buildDir, artifactId + "-" + 
version );
     }
 

Modified: 
maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/DefaultPluginMappingBuilder.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/DefaultPluginMappingBuilder.java?rev=219807&r1=219806&r2=219807&view=diff
==============================================================================
--- 
maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/DefaultPluginMappingBuilder.java
 (original)
+++ 
maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/DefaultPluginMappingBuilder.java
 Tue Jul 19 16:27:24 2005
@@ -1,6 +1,7 @@
 package org.apache.maven.plugin.mapping;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import 
org.apache.maven.artifact.repository.metadata.InvalidRepositoryMetadataException;
 import 
org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException;
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
 import org.apache.maven.plugin.mapping.io.xpp3.PluginMappingXpp3Reader;
@@ -107,6 +108,8 @@
     private PluginMap readPluginMap( File mappingFile )
         throws PluginMappingManagementException
     {
+        PluginMap result = null;
+        
         if ( mappingFile.exists() )
         {
             Reader fileReader = null;
@@ -116,7 +119,7 @@
 
                 PluginMappingXpp3Reader mappingReader = new 
PluginMappingXpp3Reader();
 
-                return mappingReader.read( fileReader );
+                result = mappingReader.read( fileReader );
             }
             catch ( IOException e )
             {
@@ -131,10 +134,8 @@
                 IOUtil.close( fileReader );
             }
         }
-        else
-        {
-            return null;
-        }
+        
+        return result;
     }
 
     private File resolveMappingMetadata( String groupId, List 
pluginRepositories, ArtifactRepository localRepository )
@@ -155,7 +156,16 @@
                 // reset this to keep it from getting in the way when we 
succeed but not on first repo...
                 repositoryException = null;
 
-                break;
+                File metadataFile = metadata.getFile();
+                
+                if ( metadataFile != null && metadataFile.exists() )
+                {
+                    break;
+                }
+            }
+            catch ( InvalidRepositoryMetadataException e )
+            {
+                repositoryMetadataManager.purgeLocalCopy( metadata, 
localRepository );
             }
             catch ( RepositoryMetadataManagementException e )
             {

Added: 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AbstractPluginMappingMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AbstractPluginMappingMojo.java?rev=219807&view=auto
==============================================================================
--- 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AbstractPluginMappingMojo.java
 (added)
+++ 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AbstractPluginMappingMojo.java
 Tue Jul 19 16:27:24 2005
@@ -0,0 +1,325 @@
+package org.apache.maven.plugin.plugin.metadata;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
+import org.apache.maven.lifecycle.mapping.LifecycleMapping;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.plugin.mapping.MappedPlugin;
+import org.apache.maven.plugin.mapping.PluginMap;
+import org.apache.maven.plugin.mapping.io.xpp3.PluginMappingXpp3Reader;
+import org.apache.maven.plugin.mapping.io.xpp3.PluginMappingXpp3Writer;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.classworlds.ClassRealm;
+import org.codehaus.classworlds.ClassWorld;
+import org.codehaus.classworlds.DuplicateRealmException;
+import org.codehaus.plexus.component.discovery.ComponentDiscoverer;
+import org.codehaus.plexus.component.discovery.ComponentDiscovererManager;
+import org.codehaus.plexus.component.discovery.ComponentDiscoveryEvent;
+import org.codehaus.plexus.component.discovery.ComponentDiscoveryListener;
+import org.codehaus.plexus.component.discovery.DefaultComponentDiscoverer;
+import org.codehaus.plexus.component.discovery.PlexusXmlComponentDiscoverer;
+import org.codehaus.plexus.component.repository.ComponentDescriptor;
+import org.codehaus.plexus.component.repository.ComponentSetDescriptor;
+import org.codehaus.plexus.configuration.PlexusConfigurationException;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.DefaultContext;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public abstract class AbstractPluginMappingMojo
+    extends AbstractMojo
+{
+
+    /**
+     * @parameter
+     */
+    private String goalPrefix;
+
+    /**
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    private MavenProject project;
+
+    /**
+     * @parameter expression="${project.build.outputDirectory}"
+     * @required
+     * @readonly
+     */
+    private String classesDirectory;
+
+    /**
+     * @parameter expression="${project.build.directory}/repository-metadata"
+     * @required
+     * @readonly
+     */
+    private String metadataOutputDirectory;
+
+    /**
+     * @parameter expression="${localRepository}"
+     * @required
+     * @readonly
+     */
+    private ArtifactRepository localRepository;
+
+    /**
+     * @parameter 
expression="${component.org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager}"
+     * @required
+     * @readonly
+     */
+    private RepositoryMetadataManager repositoryMetadataManager;
+    
+    protected RepositoryMetadataManager getRepositoryMetadataManager()
+    {
+        return repositoryMetadataManager;
+    }
+    
+    protected ArtifactRepository getLocalRepository()
+    {
+        return localRepository;
+    }
+    
+    protected MavenProject getProject()
+    {
+        return project;
+    }
+    
+    protected boolean updatePluginMap( RepositoryMetadata metadata ) throws 
MojoExecutionException
+    {
+        PluginMappingXpp3Reader mappingReader = new PluginMappingXpp3Reader();
+
+        PluginMap pluginMap = null;
+
+        File metadataFile = metadata.getFile();
+
+        if ( metadataFile != null && metadataFile.exists() )
+        {
+            Reader reader = null;
+
+            try
+            {
+                reader = new FileReader( metadataFile );
+
+                pluginMap = mappingReader.read( reader );
+            }
+            catch ( EOFException e )
+            {
+                getLog().warn( metadata + " located in: " + metadataFile + " 
seems to be corrupt - OVERWRITING." );
+            }
+            catch ( IOException e )
+            {
+                throw new MojoExecutionException( "Cannot read plugin-mapping 
metadata from file: " + metadataFile, e );
+            }
+            catch ( XmlPullParserException e )
+            {
+                throw new MojoExecutionException( "Cannot parse plugin-mapping 
metadata from file: " + metadataFile, e );
+            }
+            finally
+            {
+                IOUtil.close( reader );
+            }
+        }
+        
+        if ( pluginMap == null )
+        {
+            pluginMap = new PluginMap();
+            
+            pluginMap.setGroupId( project.getGroupId() );
+        }
+
+        boolean shouldUpdate = true;
+        
+        for ( Iterator it = pluginMap.getPlugins().iterator(); it.hasNext(); )
+        {
+            MappedPlugin preExisting = (MappedPlugin) it.next();
+
+            if ( preExisting.getArtifactId().equals( project.getArtifactId() ) 
)
+            {
+                getLog().info( "Plugin-mapping metadata for prefix: " + 
project.getArtifactId() + " already exists. Skipping." );
+                
+                shouldUpdate = false;
+                break;
+            }
+        }
+
+        if ( shouldUpdate )
+        {
+            MappedPlugin mappedPlugin = new MappedPlugin();
+
+            mappedPlugin.setArtifactId( project.getArtifactId() );
+
+            mappedPlugin.setPrefix( getGoalPrefix() );
+
+            mappedPlugin.setPackagingHandlers( extractPackagingHandlers() );
+
+            pluginMap.addPlugin( mappedPlugin );
+
+            Writer writer = null;
+            try
+            {
+                File generatedMetadataFile = new File( 
metadataOutputDirectory, metadata.getRepositoryPath() );
+                
+                File dir = generatedMetadataFile.getParentFile();
+
+                if ( !dir.exists() )
+                {
+                    dir.mkdirs();
+                }
+
+                writer = new FileWriter( generatedMetadataFile );
+
+                PluginMappingXpp3Writer mappingWriter = new 
PluginMappingXpp3Writer();
+
+                mappingWriter.write( writer, pluginMap );
+                
+                metadata.setFile( generatedMetadataFile );
+            }
+            catch ( IOException e )
+            {
+                throw new MojoExecutionException( "Error writing repository 
metadata to build directory.", e );
+            }
+            finally
+            {
+                IOUtil.close( writer );
+            }
+        }
+        
+        return shouldUpdate;
+    }
+
+    private List extractPackagingHandlers()
+        throws MojoExecutionException
+    {
+        List packagingHandlers = new ArrayList();
+
+        Context ctx = new DefaultContext();
+
+        ClassWorld discoveryWorld = new ClassWorld();
+
+        try
+        {
+            ClassRealm discoveryRealm = discoveryWorld.newRealm( 
"packageHandler-discovery" );
+
+            File classDir = new File( classesDirectory ).getAbsoluteFile();
+
+            discoveryRealm.addConstituent( classDir.toURL() );
+
+            packagingHandlers
+                .addAll( discoverLifecycleMappings( ctx, discoveryRealm, new 
DefaultComponentDiscoverer() ) );
+
+            packagingHandlers.addAll( discoverLifecycleMappings( ctx, 
discoveryRealm,
+                                                                 new 
PlexusXmlComponentDiscoverer() ) );
+        }
+        catch ( DuplicateRealmException e )
+        {
+            throw new MojoExecutionException( "Error constructing class-realm 
for lifecycle-mapping detection.", e );
+        }
+        catch ( MalformedURLException e )
+        {
+            throw new MojoExecutionException( "Error constructing class-realm 
for lifecycle-mapping detection.", e );
+        }
+        catch ( PlexusConfigurationException e )
+        {
+            throw new MojoExecutionException( "Error detecting 
lifecycle-mappings.", e );
+        }
+
+        return packagingHandlers;
+    }
+
+    private List discoverLifecycleMappings( Context ctx, ClassRealm 
discoveryRealm, ComponentDiscoverer discoverer )
+        throws PlexusConfigurationException
+    {
+        discoverer.setManager( new DummyComponentDiscovererManager() );
+
+        List packagingHandlers = new ArrayList();
+
+        List componentSetDescriptors = discoverer.findComponents( ctx, 
discoveryRealm );
+
+        if ( componentSetDescriptors != null )
+        {
+            for ( Iterator it = componentSetDescriptors.iterator(); 
it.hasNext(); )
+            {
+                ComponentSetDescriptor setDescriptor = 
(ComponentSetDescriptor) it.next();
+
+                List components = setDescriptor.getComponents();
+
+                if ( components != null )
+                {
+                    for ( Iterator componentIterator = components.iterator(); 
componentIterator.hasNext(); )
+                    {
+                        ComponentDescriptor descriptor = (ComponentDescriptor) 
componentIterator.next();
+
+                        if ( LifecycleMapping.ROLE.equals( 
descriptor.getRole() ) )
+                        {
+                            packagingHandlers.add( descriptor.getRoleHint() );
+                        }
+                    }
+                }
+            }
+        }
+
+        return packagingHandlers;
+    }
+
+    private String getGoalPrefix()
+    {
+        if ( goalPrefix == null )
+        {
+            goalPrefix = PluginDescriptor.getGoalPrefixFromArtifactId( 
project.getArtifactId() );
+        }
+
+        return goalPrefix;
+    }
+
+    public static class DummyComponentDiscovererManager
+        implements ComponentDiscovererManager
+    {
+
+        DummyComponentDiscovererManager()
+        {
+        }
+
+        public List getComponentDiscoverers()
+        {
+            return null;
+        }
+
+        public void registerComponentDiscoveryListener( 
ComponentDiscoveryListener listener )
+        {
+        }
+
+        public void removeComponentDiscoveryListener( 
ComponentDiscoveryListener listener )
+        {
+        }
+
+        public void fireComponentDiscoveryEvent( ComponentDiscoveryEvent event 
)
+        {
+        }
+
+        public void initialize()
+        {
+        }
+
+        public List getListenerDescriptors()
+        {
+            return null;
+        }
+
+    }
+}

Propchange: 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AbstractPluginMappingMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AbstractPluginMappingMojo.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java?rev=219807&r1=219806&r2=219807&view=diff
==============================================================================
--- 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java
 (original)
+++ 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java
 Tue Jul 19 16:27:24 2005
@@ -46,9 +46,12 @@
         {
             getRepositoryMetadataManager().resolve( metadata, 
distributionRepository, getLocalRepository() );
 
-            updatePluginMap( metadata );
+            boolean shouldUpdate = updatePluginMap( metadata );
 
-            getRepositoryMetadataManager().deploy( metadata, 
distributionRepository );
+            if ( shouldUpdate )
+            {
+                getRepositoryMetadataManager().deploy( metadata, 
distributionRepository );
+            }
         }
         catch ( RepositoryMetadataManagementException e )
         {

Modified: 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java?rev=219807&r1=219806&r2=219807&view=diff
==============================================================================
--- 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java
 (original)
+++ 
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java
 Tue Jul 19 16:27:24 2005
@@ -1,5 +1,6 @@
 package org.apache.maven.plugin.plugin.metadata;
 
+import 
org.apache.maven.artifact.repository.metadata.InvalidRepositoryMetadataException;
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
 import 
org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -20,11 +21,21 @@
         
         try
         {
-            getRepositoryMetadataManager().resolveLocally( metadata, 
getLocalRepository() );
+            try
+            {
+                getRepositoryMetadataManager().resolveLocally( metadata, 
getLocalRepository() );
+            }
+            catch ( InvalidRepositoryMetadataException e )
+            {
+                getRepositoryMetadataManager().purgeLocalCopy( metadata, 
getLocalRepository() );
+            }
             
-            updatePluginMap( metadata );
+            boolean shouldUpdate = updatePluginMap( metadata );
 
-            getRepositoryMetadataManager().install( metadata, 
getLocalRepository() );
+            if ( shouldUpdate )
+            {
+                getRepositoryMetadataManager().install( metadata, 
getLocalRepository() );
+            }
         }
         catch ( RepositoryMetadataManagementException e )
         {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to