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]