Author: krosenvold
Date: Thu Apr  8 11:29:07 2010
New Revision: 931884

URL: http://svn.apache.org/viewvc?rev=931884&view=rev
Log:
[MNG-3004] Concurrent building of multimodule projects

This commit consists of a modularization of the DefaultLifecycleExecutor into 
smaller
components. This is primarily done with the intention of extracting execution 
strategy 
somewhat from the rest of the logic.

It also contains three differenent execution strategies:
A) Linear ("Classic")
B) Parallel (Based on Dan's original implemementation)
C) Weave (Still experimental) 

 
The command line -T option activates parallel running, and the argument
is in the form -T <[nThreads, a float][C][W]|auto>

Notes:
* The output demultiplexer is disabled in this commit, and output will appear 
intermingled.
* The modello plugin has known problems
* Surefire must be run in forkmode at least once.

Added:
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifeCyclePluginAnalyzer.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/Schedule.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/Scheduling.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuildListCalculator.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuilderCommon.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuiltLogItem.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ConcurrencyDependencyGraph.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ConcurrentBuildLogger.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DependencyContext.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ExecutionPlanItem.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/GoalTask.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDebugLogger.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculator.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculatorImpl.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecyclePluginAnalyzerImpl.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecyclePluginResolver.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleTask.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleTaskSegmentCalculator.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleTaskSegmentCalculatorImpl.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleThreadedBuilder.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilder.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoDescriptorCreator.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/PhaseRecorder.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ProjectBuildList.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ProjectIndex.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ProjectSegment.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ReactorBuildStatus.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ReactorContext.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/TaskSegment.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ThreadConfigurationService.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ThreadOutputMuxer.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/DefaultLifecyclesTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorSubModulesTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/MavenExecutionPlanTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/BuildListCalculatorTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/BuilderCommonTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ConcurrencyDependencyGraphTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ExecutionPlanItemTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculatorTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilderTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ProjectBuildListTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ThreadConfigurationServiceTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ThreadOutputMuxerTest.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/AboutTheStubs.html
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/BuildPluginManagerStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/CompletionServiceStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/DefaultLifecyclesStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifeCyclePluginAnalyzerStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleExecutionPlanCalculatorStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleTaskSegmentCalculatorStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LoggerStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/MojoExecutorStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/PluginPrefixResolverStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/PluginVersionResolverStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependenciesResolverStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependencyGraphStub.java
   (with props)
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependencyGraphStubTest.java
   (with props)
Modified:
    
maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultRepositoryRequest.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/Lifecycle.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleEventCatapult.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutionException.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/MavenExecutionPlan.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java
    
maven/maven-3/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java
    
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
    
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/ExecutionEventLogger.java
    
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java

Modified: 
maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java?rev=931884&r1=931883&r2=931884&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java
 (original)
+++ 
maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java
 Thu Apr  8 11:29:07 2010
@@ -25,11 +25,8 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.lifecycle.*;
 import org.apache.maven.lifecycle.LifecycleExecutionException;
-import org.apache.maven.lifecycle.LifecycleExecutor;
-import org.apache.maven.lifecycle.LifecycleNotFoundException;
-import org.apache.maven.lifecycle.LifecyclePhaseNotFoundException;
-import org.apache.maven.lifecycle.MavenExecutionPlan;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.PluginExecution;
 import org.apache.maven.plugin.InvalidPluginDescriptorException;
@@ -55,7 +52,7 @@ public class EmptyLifecycleExecutor
         throws PluginNotFoundException, PluginResolutionException, 
PluginDescriptorParsingException,
         MojoNotFoundException
     {
-        return new MavenExecutionPlan( Collections.<MojoExecution> 
emptyList(), null, null );
+        return new MavenExecutionPlan(null, null, null );
     }
 
     public void execute( MavenSession session )

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=931884&r1=931883&r2=931884&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java 
(original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java 
Thu Apr  8 11:29:07 2010
@@ -40,6 +40,7 @@ import org.apache.maven.execution.MavenE
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.execution.ProjectDependencyGraph;
 import org.apache.maven.lifecycle.LifecycleExecutor;
+import org.apache.maven.lifecycle.internal.LifecycleWeaveBuilder;
 import org.apache.maven.model.building.ModelProblem;
 import org.apache.maven.model.building.ModelSource;
 import org.apache.maven.model.building.UrlModelSource;
@@ -191,7 +192,8 @@ public class DefaultMaven
             // Reactor
             // Workspace
             // User Local Repository
-            delegatingLocalArtifactRepository.setBuildReactor( new 
ReactorArtifactRepository( projectMap, session ) );
+            final boolean isWeaveMode = LifecycleWeaveBuilder.isWeaveMode( 
request);
+            delegatingLocalArtifactRepository.setBuildReactor( new 
ReactorArtifactRepository( projectMap, isWeaveMode ) );
         }
         catch ( org.apache.maven.DuplicateProjectException e )
         {
@@ -245,7 +247,7 @@ public class DefaultMaven
         }
 
         result.setTopologicallySortedProjects( session.getProjects() );
-        
+
         if ( result.hasExceptions() )
         {
             return result;

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java?rev=931884&r1=931883&r2=931884&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java
 Thu Apr  8 11:29:07 2010
@@ -1,19 +1,13 @@
 package org.apache.maven;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
-import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.repository.LocalArtifactRepository;
 
+import java.io.File;
+import java.util.*;
+
 /**
  * An implementation of a repository that knows how to search the Maven 
reactor for artifacts.
  * 
@@ -27,11 +21,15 @@ public class ReactorArtifactRepository
 
     private Map<String, List<String>> availableVersions;
 
+    private final boolean isWeaveMode;
+
     private final int hashCode;
 
-    public ReactorArtifactRepository( Map<String, MavenProject> 
reactorProjects, MavenSession session )
+        @SuppressWarnings({"ConstantConditions"})
+    public ReactorArtifactRepository( Map<String, MavenProject> 
reactorProjects, boolean isWeaveMode )
     {
         this.reactorProjects = reactorProjects;
+        this.isWeaveMode = isWeaveMode;
         hashCode = ( reactorProjects != null ) ? 
reactorProjects.keySet().hashCode() : 0;
 
         availableVersions = new HashMap<String, List<String>>( 
reactorProjects.size() * 2 );
@@ -70,7 +68,7 @@ public class ReactorArtifactRepository
 
                 Artifact projectArtifact = findMatchingArtifact( project, 
artifact );
 
-                if ( projectArtifact != null && projectArtifact.getFile() != 
null && projectArtifact.getFile().exists() )
+                if ( !isWeaveMode && (projectArtifact != null && 
projectArtifact.getFile() != null && projectArtifact.getFile().exists()) )
                 {
                     //TODO: This is really completely wrong and should 
probably be based on the phase that is currently being executed.
                     // If we are running before the packaging phase there is 
going to be no archive anyway, but if we are running prior to package

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultRepositoryRequest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultRepositoryRequest.java?rev=931884&r1=931883&r2=931884&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultRepositoryRequest.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultRepositoryRequest.java
 Thu Apr  8 11:29:07 2010
@@ -22,6 +22,8 @@ package org.apache.maven.artifact.reposi
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.project.MavenProject;
 import org.apache.maven.repository.ArtifactTransferListener;
 
 /**
@@ -68,6 +70,21 @@ public class DefaultRepositoryRequest
         setTransferListener( repositoryRequest.getTransferListener() );
     }
 
+    public static RepositoryRequest getRepositoryRequest(MavenSession session, 
MavenProject project) {
+        RepositoryRequest request = new DefaultRepositoryRequest();
+
+        request.setCache(session.getRepositoryCache());
+        request.setLocalRepository(session.getLocalRepository());
+        if (project != null) {
+            
request.setRemoteRepositories(project.getPluginArtifactRepositories());
+        }
+        request.setOffline(session.isOffline());
+        request.setForceUpdate(session.getRequest().isUpdateSnapshots());
+        
request.setTransferListener(session.getRequest().getTransferListener());
+
+        return request;
+    }
+
     public boolean isOffline()
     {
         return offline;

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java?rev=931884&r1=931883&r2=931884&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
 Thu Apr  8 11:29:07 2010
@@ -201,7 +201,7 @@ public class DefaultExceptionHandler
                     reference = exception.getClass().getSimpleName();
                 }
             }
-            else if ( exception instanceof LifecycleExecutionException )
+            else if ( exception instanceof LifecycleExecutionException)
             {
                 reference = getReference( exception.getCause() );
             }

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java?rev=931884&r1=931883&r2=931884&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
 Thu Apr  8 11:29:07 2010
@@ -126,6 +126,10 @@ public class DefaultMavenExecutionReques
 
     private ExecutionListener executionListener;
 
+    private String threadCount;
+    private boolean perCoreThreadCount;
+    private boolean weaveMode;
+
     /**
      * Suppress SNAPSHOT updates.
      *
@@ -1024,4 +1028,28 @@ public class DefaultMavenExecutionReques
         return this;
     }
 
+    public String getThreadCount() {
+        return threadCount;
+    }
+
+    public void setThreadCount(String threadCount) {
+        this.threadCount = threadCount;
+    }
+
+    public boolean isThreadConfigurationPresent() {
+        return getThreadCount() != null;
+    }
+
+    public boolean isPerCoreThreadCount() {
+        return perCoreThreadCount;
+    }
+
+    public void setPerCoreThreadCount(boolean perCoreThreadCount) {
+        this.perCoreThreadCount = perCoreThreadCount;
+    }
+
+    public boolean isWeaveMode() {
+        return weaveMode;
+    }
+
 }

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java?rev=931884&r1=931883&r2=931884&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
 Thu Apr  8 11:29:07 2010
@@ -152,6 +152,15 @@ public interface MavenExecutionRequest
     MavenExecutionRequest setMakeBehavior( String makeBehavior );
     String getMakeBehavior();
 
+    void setThreadCount( String threadCount );
+    String getThreadCount();
+    boolean isThreadConfigurationPresent();
+    void setPerCoreThreadCount(boolean perCoreThreadCount);
+    boolean isPerCoreThreadCount();
+
+    boolean isWeaveMode();
+
+
     // Recursive (really to just process the top-level POM)
     MavenExecutionRequest setRecursive( boolean recursive );
     boolean isRecursive();
@@ -269,6 +278,6 @@ public interface MavenExecutionRequest
     ExecutionListener getExecutionListener();
     MavenExecutionRequest setExecutionListener( ExecutionListener 
executionListener );
 
-    ProjectBuildingRequest getProjectBuildingRequest();    
+    ProjectBuildingRequest getProjectBuildingRequest();
 
 }

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java?rev=931884&r1=931883&r2=931884&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
 Thu Apr  8 11:29:07 2010
@@ -22,6 +22,7 @@ package org.apache.maven.execution;
 import java.io.File;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
@@ -44,9 +45,10 @@ import org.codehaus.plexus.component.rep
  * @version $Id$
  */
 public class MavenSession
+    implements Cloneable
 {
     private PlexusContainer container;
-    
+
     private MavenExecutionRequest request;
 
     private MavenExecutionResult result;
@@ -56,27 +58,28 @@ public class MavenSession
     private Properties executionProperties;
 
     private MavenProject currentProject;
-        
+
     /**
      * These projects have already been topologically sorted in the {...@link 
org.apache.maven.Maven} component before
      * being passed into the session.
      */
     private List<MavenProject> projects;
-    
+
     private MavenProject topLevelProject;
 
     private ProjectDependencyGraph projectDependencyGraph;
 
-    private Collection<String> blackListedProjects;
+    private boolean parallel;
 
-    private final Map<String,Map<String,Map<String,Object>>>  
pluginContextsByProjectAndPluginKey =
-        new ConcurrentHashMap<String,Map<String,Map<String,Object>>> ();
+    private final Map<String, Map<String, Map<String, Object>>> 
pluginContextsByProjectAndPluginKey =
+        new ConcurrentHashMap<String, Map<String, Map<String, Object>>>();
 
     @Deprecated
-    public MavenSession( PlexusContainer container, MavenExecutionRequest 
request, MavenExecutionResult result, MavenProject project )
+    public MavenSession( PlexusContainer container, MavenExecutionRequest 
request, MavenExecutionResult result,
+                         MavenProject project )
     {
-        this( container, request, result, Arrays.asList( new MavenProject[]{ 
project } ) );        
-    }    
+        this( container, request, result, Arrays.asList( new 
MavenProject[]{project} ) );
+    }
 
     @Deprecated
     public MavenSession( PlexusContainer container, Settings settings, 
ArtifactRepository localRepository,
@@ -105,7 +108,8 @@ public class MavenSession
     }
 
     @Deprecated
-    public MavenSession( PlexusContainer container, MavenExecutionRequest 
request, MavenExecutionResult result, List<MavenProject> projects )
+    public MavenSession( PlexusContainer container, MavenExecutionRequest 
request, MavenExecutionResult result,
+                         List<MavenProject> projects )
     {
         this.container = container;
         this.request = request;
@@ -143,8 +147,8 @@ public class MavenSession
             this.topLevelProject = null;
         }
         this.projects = projects;
-    }    
-        
+    }
+
     @Deprecated
     public PlexusContainer getContainer()
     {
@@ -198,7 +202,7 @@ public class MavenSession
      * Gets the user properties to use for interpolation and profile 
activation. The user properties have been
      * configured directly by the user on his discretion, e.g. via the 
{...@code -Dkey=value} parameter on the command
      * line.
-     * 
+     *
      * @return The user properties, never {...@code null}.
      */
     public Properties getUserProperties()
@@ -209,7 +213,7 @@ public class MavenSession
     /**
      * Gets the system properties to use for interpolation and profile 
activation. The system properties are collected
      * from the runtime environment like {...@link System#getProperties()} and 
environment variables.
-     * 
+     *
      * @return The system properties, never {...@code null}.
      */
     public Properties getSystemProperties()
@@ -237,7 +241,7 @@ public class MavenSession
     {
         return settings;
     }
-    
+
     public List<MavenProject> getProjects()
     {
         return projects;
@@ -278,16 +282,16 @@ public class MavenSession
     {
         return request.getProjectBuildingRequest();
     }
-    
+
     public List<String> getPluginGroups()
     {
         return request.getPluginGroups();
     }
-    
+
     public boolean isOffline()
     {
         return request.isOffline();
-    }        
+    }
 
     public MavenProject getTopLevelProject()
     {
@@ -297,10 +301,10 @@ public class MavenSession
     public MavenExecutionResult getResult()
     {
         return result;
-    }        
-
+    }
 
     // Backward compat
+
     public Map<String, Object> getPluginContext( PluginDescriptor plugin, 
MavenProject project )
     {
         String projectKey = project.getId();
@@ -328,6 +332,11 @@ public class MavenSession
         return pluginContext;
     }
 
+    public ProjectDependencyGraph getProjectDependencyGraph()
+    {
+        return projectDependencyGraph;
+    }
+
     public void setProjectDependencyGraph( ProjectDependencyGraph 
projectDependencyGraph )
     {
         this.projectDependencyGraph = projectDependencyGraph;
@@ -338,24 +347,16 @@ public class MavenSession
         return request.getReactorFailureBehavior();
     }
 
-    public boolean isBlackListed( MavenProject project )
-    {
-        return blackListedProjects != null && blackListedProjects.contains( 
getId( project ) );
-    }
-
-    public void blackList( MavenProject project )
+    @Override
+    public MavenSession clone()
     {
-        if ( blackListedProjects == null )
+        try
         {
-            blackListedProjects = new HashSet<String>();
+            return (MavenSession) super.clone();
         }
-
-        if ( blackListedProjects.add( getId( project ) ) && 
projectDependencyGraph != null )
+        catch ( CloneNotSupportedException e )
         {
-            for ( MavenProject downstreamProject : 
projectDependencyGraph.getDownstreamProjects( project, true ) )
-            {
-                blackListedProjects.add( getId( downstreamProject ) );
-            }
+            throw new RuntimeException( "Bug", e );
         }
     }
 
@@ -375,4 +376,11 @@ public class MavenSession
         return request.getStartTime();
     }
 
+    public boolean isParallel() {
+        return parallel;
+    }
+
+    public void setParallel(boolean parallel) {
+        this.parallel = parallel;
+    }
 }


Reply via email to