done
On Oct 25, 2007, at 7:30 PM, Jason van Zyl wrote:


On 25 Oct 07, at 3:36 PM 25 Oct 07, Carlos Sanchez wrote:

could you please keep the old methods and deprecate them with a
comment, if not keeping up with the changes becomes a nightmare


John, put the any additional things you need in the request. I made the request so that the signature wouldn't need to change in order to accommodate new things we needed.


On 10/24/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
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
         {





--
I could give you my word as a Spaniard.
No good. I've known too many Spaniards.
                             -- The Princess Bride

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
jason at sonatype dot com
----------------------------------------------------------




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---
John Casey
Committer and PMC Member, Apache Maven
mail: jdcasey at commonjava dot org
blog: http://www.ejlife.net/blogs/john
rss: http://feeds.feedburner.com/ejlife/john


Reply via email to