o move some shared execution request handling code to the super class

o cleanup the plugin manager interface, we don't need to set the local
  repository as that information is in the request and session.


git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163259 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jason van Zyl 2004-12-24 17:29:42 +00:00
parent 7099cca292
commit d7591b9f76
11 changed files with 141 additions and 103 deletions

View File

@ -123,7 +123,7 @@ public class MavenCli
if ( !projectFile.exists() ) if ( !projectFile.exists() )
{ {
System.err.println( "Could not find either a project descriptor." ); System.err.println( "Could not find a project descriptor." );
return 1; return 1;
} }

View File

@ -1,12 +1,65 @@
package org.apache.maven.execution; package org.apache.maven.execution;
import org.apache.maven.lifecycle.session.MavenSession;
import org.apache.maven.lifecycle.session.MavenSessionPhaseManager;
import org.apache.maven.plugin.PluginManager;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.i18n.I18N;
import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
/** /**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a> * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id$ * @version $Id$
*/ */
public class AbstractMavenExecutionRequestHandler public abstract class AbstractMavenExecutionRequestHandler
extends AbstractLogEnabled extends AbstractLogEnabled
implements MavenExecutionRequestHandler, Contextualizable
{ {
// ----------------------------------------------------------------------
// Components
// ----------------------------------------------------------------------
protected MavenProjectBuilder projectBuilder;
protected PluginManager pluginManager;
protected PlexusContainer container;
protected MavenSessionPhaseManager lifecycleManager;
protected I18N i18n;
// ----------------------------------------------------------------------
// Methods used by all execution request handlers
// ----------------------------------------------------------------------
//!! We should probably have the execution request handler create the session as
// the session type would be specific to the request i.e. having a project
// or not.
protected MavenSession createSession( MavenExecutionRequest request, MavenProject project )
{
MavenSession session = new MavenSession( container,
pluginManager,
project,
request.getLocalRepository(),
request.getGoals() );
return session;
}
// ----------------------------------------------------------------------
// Lifecylce Management
// ----------------------------------------------------------------------
public void contextualize( Context context ) throws ContextException
{
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
} }

View File

@ -0,0 +1,22 @@
package org.apache.maven.execution.initialize;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.execution.AbstractMavenExecutionRequest;
import java.io.File;
import java.util.List;
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id$
*/
public class MavenInitializingExecutionRequest
extends AbstractMavenExecutionRequest
{
public MavenInitializingExecutionRequest( ArtifactRepository localRepository, List goals )
{
super( localRepository, goals );
type = "initializing";
}
}

View File

@ -0,0 +1,30 @@
package org.apache.maven.execution.initialize;
import org.apache.maven.project.MavenProject;
import org.apache.maven.reactor.ReactorException;
import org.apache.maven.execution.reactor.MavenReactorExecutionRequest;
import org.apache.maven.execution.project.MavenProjectExecutionRequestHandler;
import org.apache.maven.execution.MavenExecutionRequestHandler;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionResponse;
import org.codehaus.plexus.util.FileUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id$
*/
public class MavenInitializingExecutionRequestHandler
extends MavenProjectExecutionRequestHandler
implements MavenExecutionRequestHandler
{
public void handle( MavenExecutionRequest request, MavenExecutionResponse response )
throws Exception
{
super.handle( null, null );
}
}

View File

@ -1,24 +1,11 @@
package org.apache.maven.execution.project; package org.apache.maven.execution.project;
import org.apache.maven.lifecycle.session.MavenSession;
import org.apache.maven.lifecycle.session.MavenSessionPhaseManager;
import org.apache.maven.plugin.PluginManager;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.execution.project.MavenProjectExecutionRequest;
import org.apache.maven.execution.AbstractMavenExecutionRequestHandler; import org.apache.maven.execution.AbstractMavenExecutionRequestHandler;
import org.apache.maven.execution.MavenExecutionRequestHandler;
import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionResponse; import org.apache.maven.execution.MavenExecutionResponse;
import org.codehaus.plexus.ArtifactEnabledContainer; import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusConstants; import org.apache.maven.project.ProjectBuildingException;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.i18n.I18N;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
import java.io.File; import java.io.File;
import java.util.Date; import java.util.Date;
@ -29,20 +16,9 @@ import java.util.Date;
*/ */
public class MavenProjectExecutionRequestHandler public class MavenProjectExecutionRequestHandler
extends AbstractMavenExecutionRequestHandler extends AbstractMavenExecutionRequestHandler
implements MavenExecutionRequestHandler, Contextualizable
{ {
private boolean logResults = true; private boolean logResults = true;
protected MavenProjectBuilder projectBuilder;
protected PluginManager pluginManager;
protected PlexusContainer container;
protected MavenSessionPhaseManager lifecycleManager;
protected I18N i18n;
public void handle( MavenExecutionRequest request, MavenExecutionResponse response ) public void handle( MavenExecutionRequest request, MavenExecutionResponse response )
throws Exception throws Exception
{ {
@ -52,17 +28,9 @@ public class MavenProjectExecutionRequestHandler
Date fullStart = new Date(); Date fullStart = new Date();
pluginManager.setLocalRepository( request.getLocalRepository() );
MavenSession session = new MavenSession( container,
pluginManager,
project,
request.getLocalRepository(),
request.getGoals() );
try try
{ {
response = lifecycleManager.execute( session ); response = lifecycleManager.execute( createSession( request, project ) );
} }
catch ( Exception e ) catch ( Exception e )
{ {
@ -184,13 +152,4 @@ public class MavenProjectExecutionRequestHandler
return projectBuilder.build( pom, localRepository ); return projectBuilder.build( pom, localRepository );
} }
// ----------------------------------------------------------------------
// Lifecylce Management
// ----------------------------------------------------------------------
public void contextualize( Context context ) throws ContextException
{
container = (ArtifactEnabledContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
} }

View File

@ -1,12 +1,11 @@
package org.apache.maven.execution.reactor; package org.apache.maven.execution.reactor;
import org.apache.maven.project.MavenProject;
import org.apache.maven.reactor.ReactorException;
import org.apache.maven.execution.reactor.MavenReactorExecutionRequest;
import org.apache.maven.execution.project.MavenProjectExecutionRequestHandler;
import org.apache.maven.execution.MavenExecutionRequestHandler;
import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionResponse; import org.apache.maven.execution.MavenExecutionResponse;
import org.apache.maven.execution.project.MavenProjectExecutionRequest;
import org.apache.maven.execution.project.MavenProjectExecutionRequestHandler;
import org.apache.maven.project.MavenProject;
import org.apache.maven.reactor.ReactorException;
import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.FileUtils;
import java.io.File; import java.io.File;
@ -20,7 +19,6 @@ import java.util.List;
*/ */
public class MavenReactorExecutionRequestHandler public class MavenReactorExecutionRequestHandler
extends MavenProjectExecutionRequestHandler extends MavenProjectExecutionRequestHandler
implements MavenExecutionRequestHandler
{ {
public void handle( MavenExecutionRequest request, MavenExecutionResponse response ) public void handle( MavenExecutionRequest request, MavenExecutionResponse response )
throws Exception throws Exception
@ -72,11 +70,10 @@ public class MavenReactorExecutionRequestHandler
line(); line();
//MavenProjectExecutionRequest r = new MavenProjectExecutionRequest(); MavenProjectExecutionRequest projectExecutionRequest =
new MavenProjectExecutionRequest( request.getLocalRepository(), request.getGoals(), project.getFile() );
super.handle( null, null ); super.handle( projectExecutionRequest, response );
//response = execute( new MavenProjectExecutionRequest( request.getLocalRepository(), request.getGoals(), project ) );
if ( response.isExecutionFailure() ) if ( response.isExecutionFailure() )
{ {

View File

@ -66,7 +66,7 @@ public class PluginResolutionPhase
{ {
try try
{ {
pluginManager.verifyPluginForGoal( goal ); pluginManager.verifyPluginForGoal( goal, session );
} }
catch ( Exception e ) catch ( Exception e )
{ {

View File

@ -60,8 +60,11 @@ public class MavenSession
private Map postGoalMappings; private Map postGoalMappings;
public MavenSession( PlexusContainer container, PluginManager pluginManager, MavenProject project, public MavenSession( PlexusContainer container,
ArtifactRepository localRepository, List goals ) PluginManager pluginManager,
MavenProject project,
ArtifactRepository localRepository,
List goals )
{ {
this.container = container; this.container = container;
@ -161,14 +164,17 @@ public class MavenSession
private void initGoalDecoratorMappings() private void initGoalDecoratorMappings()
{ {
List allPreGoals = project.getPreGoals(); List allPreGoals = project.getPreGoals();
for ( Iterator it = allPreGoals.iterator(); it.hasNext(); ) for ( Iterator it = allPreGoals.iterator(); it.hasNext(); )
{ {
PreGoal preGoal = (PreGoal) it.next(); PreGoal preGoal = (PreGoal) it.next();
List preGoalList = (List) preGoalMappings.get( preGoal.getName() ); List preGoalList = (List) preGoalMappings.get( preGoal.getName() );
if ( preGoalList == null ) if ( preGoalList == null )
{ {
preGoalList = new LinkedList(); preGoalList = new LinkedList();
preGoalMappings.put( preGoal.getName(), preGoalList ); preGoalMappings.put( preGoal.getName(), preGoalList );
} }
@ -176,14 +182,17 @@ public class MavenSession
} }
List allPostGoals = project.getPostGoals(); List allPostGoals = project.getPostGoals();
for ( Iterator it = allPostGoals.iterator(); it.hasNext(); ) for ( Iterator it = allPostGoals.iterator(); it.hasNext(); )
{ {
PostGoal postGoal = (PostGoal) it.next(); PostGoal postGoal = (PostGoal) it.next();
List postGoalList = (List) postGoalMappings.get( postGoal.getName() ); List postGoalList = (List) postGoalMappings.get( postGoal.getName() );
if ( postGoalList == null ) if ( postGoalList == null )
{ {
postGoalList = new LinkedList(); postGoalList = new LinkedList();
postGoalMappings.put( postGoal.getName(), postGoalList ); postGoalMappings.put( postGoal.getName(), postGoalList );
} }
@ -213,5 +222,4 @@ public class MavenSession
return chainToHere; return chainToHere;
} }
} }

View File

@ -22,6 +22,7 @@ import org.apache.maven.artifact.resolver.filter.ExclusionSetFilter;
import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder; import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
import org.apache.maven.lifecycle.session.MavenSession;
import org.codehaus.plexus.ArtifactEnabledContainer; import org.codehaus.plexus.ArtifactEnabledContainer;
import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.PlexusContainer;
@ -62,8 +63,6 @@ public class DefaultPluginManager
protected Set remotePluginRepositories; protected Set remotePluginRepositories;
protected ArtifactRepository localRepository;
protected ArtifactFilter artifactFilter; protected ArtifactFilter artifactFilter;
public DefaultPluginManager() public DefaultPluginManager()
@ -163,7 +162,8 @@ public class DefaultPluginManager
return goalName; return goalName;
} }
public void verifyPluginForGoal( String goalName ) throws Exception public void verifyPluginForGoal( String goalName, MavenSession session )
throws Exception
{ {
String pluginId = getPluginId( goalName ); String pluginId = getPluginId( goalName );
@ -179,7 +179,7 @@ public class DefaultPluginManager
Artifact pluginArtifact = new DefaultArtifact( "maven", artifactId, version, "plugin", "jar" ); Artifact pluginArtifact = new DefaultArtifact( "maven", artifactId, version, "plugin", "jar" );
addPlugin( pluginArtifact ); addPlugin( pluginArtifact, session );
// Now, we need to resolve the plugins for this goal's prereqs. // Now, we need to resolve the plugins for this goal's prereqs.
MojoDescriptor mojoDescriptor = getMojoDescriptor( goalName ); MojoDescriptor mojoDescriptor = getMojoDescriptor( goalName );
@ -192,25 +192,25 @@ public class DefaultPluginManager
{ {
String prereq = (String) it.next(); String prereq = (String) it.next();
verifyPluginForGoal( prereq ); verifyPluginForGoal( prereq, session );
} }
} }
} }
} }
public void addPlugin( Artifact pluginArtifact ) protected void addPlugin( Artifact pluginArtifact, MavenSession session )
throws Exception throws Exception
{ {
artifactResolver = (ArtifactResolver) container.lookup( ArtifactResolver.ROLE ); artifactResolver = (ArtifactResolver) container.lookup( ArtifactResolver.ROLE );
MavenMetadataSource metadataSource = new MavenMetadataSource( remotePluginRepositories, MavenMetadataSource metadataSource = new MavenMetadataSource( remotePluginRepositories,
localRepository, session.getLocalRepository(),
artifactResolver ); artifactResolver );
( (ArtifactEnabledContainer) container ).addComponent( pluginArtifact, ( (ArtifactEnabledContainer) container ).addComponent( pluginArtifact,
artifactResolver, artifactResolver,
remotePluginRepositories, remotePluginRepositories,
localRepository, session.getLocalRepository(),
metadataSource, metadataSource,
artifactFilter ); artifactFilter );
} }
@ -243,17 +243,5 @@ public class DefaultPluginManager
// TODO: needs to be configured from the POM element // TODO: needs to be configured from the POM element
remotePluginRepositories.add( new ArtifactRepository( "plugin-repository", "http://repo1.maven.org" ) ); remotePluginRepositories.add( new ArtifactRepository( "plugin-repository", "http://repo1.maven.org" ) );
} }
// TODO: is this needed or can it be found from the session?
public ArtifactRepository getLocalRepository()
{
return localRepository;
}
// TODO: is this needed or can it be found from the session? It is currently set from the session
public void setLocalRepository( ArtifactRepository localRepository )
{
this.localRepository = localRepository;
}
} }

View File

@ -20,6 +20,7 @@ import java.util.Map;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.lifecycle.session.MavenSession;
/** /**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a> * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@ -29,31 +30,13 @@ public interface PluginManager
{ {
String ROLE = PluginManager.class.getName(); String ROLE = PluginManager.class.getName();
// ----------------------------------------------------------------------
// Plugin processing
// ----------------------------------------------------------------------
void processPluginDescriptor( MavenPluginDescriptor pluginDescriptor ) void processPluginDescriptor( MavenPluginDescriptor pluginDescriptor )
throws Exception; throws Exception;
// ----------------------------------------------------------------------
// Mojo descriptors
// ----------------------------------------------------------------------
Map getMojoDescriptors(); Map getMojoDescriptors();
MojoDescriptor getMojoDescriptor( String goalId ); MojoDescriptor getMojoDescriptor( String goalId );
// ---------------------------------------------------------------------- void verifyPluginForGoal( String pluginId, MavenSession session )
//
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
void verifyPluginForGoal( String pluginId )
throws Exception; throws Exception;
void setLocalRepository( ArtifactRepository localRepository );
} }

View File

@ -130,8 +130,6 @@ public class MavenTestCase
MavenSession session = new MavenSession( getContainer(), pluginManager, project, localRepository, goals ); MavenSession session = new MavenSession( getContainer(), pluginManager, project, localRepository, goals );
pluginManager.setLocalRepository( localRepository );
MavenGoalExecutionContext context = new MavenGoalExecutionContext( session, goal ); MavenGoalExecutionContext context = new MavenGoalExecutionContext( session, goal );
return context; return context;