Author: jdcasey Date: Wed Oct 24 22:13:22 2007 New Revision: 588144 URL: http://svn.apache.org/viewvc?rev=588144&view=rev Log: Improving the use of project sessions in the embedder, and exporting control over the project session map to the embedder instead of Maven.execute().
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/Maven.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=588144&r1=588143&r2=588144&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Wed Oct 24 22:13:22 2007 @@ -63,7 +63,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; -import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -160,14 +159,12 @@ return reactorManager; } - public MavenExecutionResult execute( MavenExecutionRequest request ) + public MavenExecutionResult execute( MavenExecutionRequest request, Map projectSessions ) { request.setStartTime( new Date() ); MavenExecutionResult result = new DefaultMavenExecutionResult(); - Map projectSessions = new HashMap(); - ReactorManager reactorManager = createReactorManager( request, result, @@ -192,66 +189,59 @@ dispatcher, projectSessions ); - try + for ( Iterator i = request.getGoals().iterator(); i.hasNext(); ) { - for ( Iterator i = request.getGoals().iterator(); i.hasNext(); ) - { - String goal = (String) i.next(); - - TaskValidationResult tvr = lifecycleExecutor.isTaskValid( goal, session, reactorManager.getTopLevelProject() ); + String goal = (String) i.next(); - if ( !tvr.isTaskValid() ) - { - result.addBuildFailureException( new InvalidTaskException( tvr ) ); + TaskValidationResult tvr = lifecycleExecutor.isTaskValid( goal, session, reactorManager.getTopLevelProject() ); - return result; - } - } - - getLogger().info( "Scanning for projects..." ); - - if ( reactorManager.hasMultipleProjects() ) + if ( !tvr.isTaskValid() ) { - getLogger().info( "Reactor build order: " ); - - for ( Iterator i = reactorManager.getSortedProjects().iterator(); i.hasNext(); ) - { - MavenProject project = (MavenProject) i.next(); + result.addBuildFailureException( new InvalidTaskException( tvr ) ); - getLogger().info( " " + project.getName() ); - } + return result; } + } - initializeBuildContext( request ); + getLogger().info( "Scanning for projects..." ); - try - { - lifecycleExecutor.execute( - session, - reactorManager, - dispatcher ); - } - catch ( LifecycleExecutionException e ) - { - result.addLifecycleExecutionException( e ); - return result; - } - catch ( BuildFailureException e ) + if ( reactorManager.hasMultipleProjects() ) + { + getLogger().info( "Reactor build order: " ); + + for ( Iterator i = reactorManager.getSortedProjects().iterator(); i.hasNext(); ) { - result.addBuildFailureException( e ); - return result; - } + MavenProject project = (MavenProject) i.next(); - result.setTopologicallySortedProjects( reactorManager.getSortedProjects() ); + getLogger().info( " " + project.getName() ); + } + } - result.setProject( reactorManager.getTopLevelProject() ); + initializeBuildContext( request ); + try + { + lifecycleExecutor.execute( + session, + reactorManager, + dispatcher ); + } + catch ( LifecycleExecutionException e ) + { + result.addLifecycleExecutionException( e ); return result; } - finally + catch ( BuildFailureException e ) { - session.dispose(); + result.addBuildFailureException( e ); + return result; } + + result.setTopologicallySortedProjects( reactorManager.getSortedProjects() ); + + result.setProject( reactorManager.getTopLevelProject() ); + + return result; } /** Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/Maven.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/Maven.java?rev=588144&r1=588143&r2=588144&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/Maven.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/Maven.java Wed Oct 24 22:13:22 2007 @@ -53,7 +53,7 @@ static final int LOGGING_LEVEL_DISABLE = 5; - MavenExecutionResult execute( MavenExecutionRequest request ); + MavenExecutionResult execute( MavenExecutionRequest request, Map projectSessions ); ReactorManager createReactorManager( MavenExecutionRequest request, MavenExecutionResult result, Map projectSessions ); } Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java?rev=588144&r1=588143&r2=588144&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java Wed Oct 24 22:13:22 2007 @@ -30,7 +30,6 @@ import java.util.Date; import java.util.HashMap; -import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -71,15 +70,6 @@ this.reactorManager = reactorManager; this.projectSessions = projectSessions == null ? new HashMap() : projectSessions; - } - - public void dispose() - { - for ( Iterator it = projectSessions.values().iterator(); it.hasNext(); ) - { - MavenProjectSession session = (MavenProjectSession) it.next(); - session.dispose(); - } } // TODO: Figure out how/when we can shut down all the realms for extensions/plugins connected to each project session... Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java?rev=588144&r1=588143&r2=588144&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java Wed Oct 24 22:13:22 2007 @@ -26,6 +26,7 @@ import org.apache.maven.model.Extension; import org.apache.maven.model.Model; import org.apache.maven.model.Parent; +import org.apache.maven.plugin.loader.PluginLoader; import org.apache.maven.profiles.ProfileManager; import org.apache.maven.profiles.activation.CustomActivatorAdvice; import org.apache.maven.project.MavenProject; @@ -65,6 +66,8 @@ private ModelLineageBuilder modelLineageBuilder; private ModelInterpolator modelInterpolator; + + private PluginLoader pluginLoader; public void scanForBuildExtensions( List files, ArtifactRepository localRepository, Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?rev=588144&r1=588143&r2=588144&view=diff ============================================================================== --- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java (original) +++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java Wed Oct 24 22:13:22 2007 @@ -35,6 +35,7 @@ import org.apache.maven.execution.DefaultMavenExecutionResult; import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenExecutionResult; +import org.apache.maven.execution.MavenProjectSession; import org.apache.maven.execution.MavenSession; import org.apache.maven.execution.ReactorManager; import org.apache.maven.extension.BuildExtensionScanner; @@ -319,16 +320,9 @@ { PluginManager pluginManager = (PluginManager) container.lookup( PluginManager.ROLE ); - MavenSession session = new MavenSession( container, request, null, null, new HashMap() ); + MavenSession session = new MavenSession( container, request, null, null, projectSessions ); - try - { pluginManager.verifyPlugin( plugin, project, session ); - } - finally - { - session.dispose(); - } } /** protected for tests only.. */ @@ -440,7 +434,7 @@ { getLogger().info( "Scanning for extensions: " + mavenProject ); - extensionScanner.scanForBuildExtensions( mavenProject, request.getLocalRepository(), request.getProfileManager(), new HashMap() ); + extensionScanner.scanForBuildExtensions( mavenProject, request.getLocalRepository(), request.getProfileManager(), projectSessions ); getLogger().info( "Building MavenProject instance: " + mavenProject ); @@ -478,7 +472,7 @@ Map handlers = findArtifactTypeHandlers( project ); - //TODO: ok this is crappy, now there are active collections so when new artifact handlers + //TODO: ok this is crappy, now there are active collections so when new artifact handlers // enter the system they should be available. artifactHandlerManager.addHandlers( handlers ); @@ -496,7 +490,7 @@ return result.addExtensionScanningException( e ); } - ReactorManager reactorManager = maven.createReactorManager( request, result, new HashMap() ); + ReactorManager reactorManager = maven.createReactorManager( request, result, projectSessions ); if ( result.hasExceptions() ) { @@ -624,6 +618,22 @@ private MavenExecutionRequest request; + private Map projectSessions; + + public void clearProjectSessions() + { + if ( ( projectSessions != null ) && !projectSessions.isEmpty() ) + { + for ( Iterator it = projectSessions.values().iterator(); it.hasNext(); ) + { + MavenProjectSession session = (MavenProjectSession) it.next(); + session.dispose(); + } + + projectSessions.clear(); + } + } + private void start( Configuration configuration ) throws MavenEmbedderException { @@ -631,6 +641,8 @@ logger = configuration.getMavenEmbedderLogger(); + projectSessions = new HashMap(); + // ---------------------------------------------------------------------------- // Don't override any existing SecurityManager if one has been installed. Our // SecurityManager just checks to make sure @@ -652,8 +664,8 @@ try { - ContainerConfiguration cc = new DefaultContainerConfiguration() - .addComponentDiscoverer( new MavenPluginDiscoverer() ) + ContainerConfiguration cc = new DefaultContainerConfiguration() + .addComponentDiscoverer( new MavenPluginDiscoverer() ) .addComponentDiscoveryListener( new MavenPluginCollector() ) .setClassWorld( classWorld ).setParentContainer( configuration.getParentContainer() ).setName( "embedder" ); @@ -889,7 +901,7 @@ return result; } - return maven.execute( request ); + return maven.execute( request, projectSessions ); } finally {