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
         {


Reply via email to