jvanzyl     2004/03/16 11:52:17

  Modified:    maven-core/src/java/org/apache/maven/plugin
                        DefaultPluginManagerManager.java
  Log:
  o rely on plexus' component discovery mechanism to pass the discovery event here
    so that we can process the plugin component descriptor.
  
  Revision  Changes    Path
  1.12      +26 -77    
maven-components/maven-core/src/java/org/apache/maven/plugin/DefaultPluginManagerManager.java
  
  Index: DefaultPluginManagerManager.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-core/src/java/org/apache/maven/plugin/DefaultPluginManagerManager.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DefaultPluginManagerManager.java  15 Mar 2004 19:30:33 -0000      1.11
  +++ DefaultPluginManagerManager.java  16 Mar 2004 19:52:16 -0000      1.12
  @@ -61,9 +61,10 @@
   import org.apache.maven.plugin.descriptor.PluginDescriptor;
   import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
   import org.apache.maven.project.MavenProject;
  -import org.apache.maven.project.MavenProjectBuilder;
   import org.apache.maven.verifier.DependencyVerifier;
   import org.codehaus.classworlds.ClassRealm;
  +import org.codehaus.plexus.component.discovery.ComponentDiscoveryEvent;
  +import org.codehaus.plexus.component.discovery.ComponentDiscoveryListener;
   import org.codehaus.plexus.context.Context;
   import org.codehaus.plexus.logging.AbstractLogEnabled;
   import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
  @@ -71,11 +72,6 @@
   import org.codehaus.plexus.util.dag.DAG;
   import org.codehaus.plexus.util.dag.TopologicalSorter;
   
  -import java.io.ByteArrayOutputStream;
  -import java.io.InputStream;
  -import java.net.URL;
  -import java.util.ArrayList;
  -import java.util.Enumeration;
   import java.util.HashMap;
   import java.util.Iterator;
   import java.util.List;
  @@ -83,17 +79,19 @@
   
   public class DefaultPluginManagerManager
       extends AbstractLogEnabled
  -    implements PluginManagerManager, Contextualizable, Initializable
  +    implements PluginManagerManager, ComponentDiscoveryListener, Contextualizable, 
Initializable
   {
       static String PLUGIN_DESCRIPTOR = "META-INF/maven/plugin.xml";
   
  +    static String MAVEN_PLUGIN = "maven-plugin";
  +
       private ClassRealm rootClassRealm;
   
       // Components
   
       protected DependencyVerifier dependencyVerifier;
   
  -    protected MavenProjectBuilder projectBuilder;
  +    //protected MavenProjectBuilder projectBuilder;
   
       protected Map pluginManagers;
   
  @@ -196,90 +194,41 @@
   
               pluginManager.initializePlugins( mavenHome, mavenLocalHome, 
rootClassRealm );
           }
  +    }
   
  -        // Now lets go hunting for plugin descriptors
  -
  -        List pluginDescriptors = findPlugins( null );
  +    private void processPluginDescriptor( PluginDescriptor pluginDescriptor )
  +    {
  +        List goals = pluginDescriptor.getGoals();
   
  -        for ( Iterator i = pluginDescriptors.iterator(); i.hasNext(); )
  +        for ( Iterator j = goals.iterator(); j.hasNext(); )
           {
  -            PluginDescriptor pluginDescriptor = (PluginDescriptor) i.next();
  -
  -            List goals = pluginDescriptor.getGoals();
  +            GoalDescriptor goalDescriptor = (GoalDescriptor) j.next();
   
  -            for ( Iterator j = goals.iterator(); j.hasNext(); )
  +            if ( goalDescriptor.getPrereqs() != null )
               {
  -                GoalDescriptor goalDescriptor = (GoalDescriptor) j.next();
  -
  -                if ( goalDescriptor.getPrereqs() != null )
  -                {
  -                    for ( Iterator k = goalDescriptor.getPrereqs().iterator(); 
k.hasNext(); )
  -                    {
  -                        dag.addEdge( goalDescriptor.getName(), (String) k.next() );
  -                    }
  -                }
  -                else
  +                for ( Iterator k = goalDescriptor.getPrereqs().iterator(); 
k.hasNext(); )
                   {
  -                    dag.addVertex( goalDescriptor.getName() );
  +                    dag.addEdge( goalDescriptor.getName(), (String) k.next() );
                   }
  +            }
  +            else
  +            {
  +                dag.addVertex( goalDescriptor.getName() );
  +            }
   
  -                goalDescriptorsKeyedByName.put( goalDescriptor.getName(), 
goalDescriptor );
  +            goalDescriptorsKeyedByName.put( goalDescriptor.getName(), 
goalDescriptor );
   
  -                goalToPluginMap.put( goalDescriptor.getName(), 
pluginDescriptor.getId() );
  -            }
  +            goalToPluginMap.put( goalDescriptor.getName(), pluginDescriptor.getId() 
);
           }
       }
   
  -    // These will have already been found by plexus, so we just need to grab them
  -    // and process them.
  -
  -    public List findPlugins( ClassLoader classLoader )
  +    public void componentDiscovered( ComponentDiscoveryEvent event )
       {
  -        if ( classLoader == null )
  -        {
  -            classLoader = Thread.currentThread().getContextClassLoader();
  -        }
  -
  -        List pluginDescriptors = new ArrayList();
  -
  -        try
  +        if ( event.getComponentType().equals( MAVEN_PLUGIN ) )
           {
  -            for ( Enumeration e = classLoader.getResources( PLUGIN_DESCRIPTOR ); 
e.hasMoreElements(); )
  -            {
  -                URL url = (URL) e.nextElement();
  -
  -                InputStream is = url.openStream();
  -
  -                byte[] buffer = new byte[1024];
  -
  -                int read = 0;
  -
  -                ByteArrayOutputStream os = new ByteArrayOutputStream();
  -
  -                while ( is.available() > 0 )
  -                {
  -                    read = is.read( buffer, 0, buffer.length );
  -
  -                    if ( read < 0 )
  -                    {
  -                        break;
  -                    }
  +            PluginDescriptor pluginDescriptor = (PluginDescriptor) 
event.getComponentDescriptor();
   
  -                    os.write( buffer, 0, read );
  -                }
  -
  -                String configuration = os.toString();
  -
  -                PluginDescriptor pd = pluginDescriptorBuilder.build( configuration 
);
  -
  -                pluginDescriptors.add( pd );
  -            }
  -        }
  -        catch ( Exception e )
  -        {
  -            e.printStackTrace();
  +            processPluginDescriptor( pluginDescriptor );
           }
  -
  -        return pluginDescriptors;
       }
   }
  
  
  

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

Reply via email to