You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/09/18 17:46:27 UTC

svn commit: r816681 - in /maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project: DefaultProjectBuilder.java MavenProject.java

Author: bentmann
Date: Fri Sep 18 15:46:26 2009
New Revision: 816681

URL: http://svn.apache.org/viewvc?rev=816681&view=rev
Log:
o Restored MavenProject.getCollectedProjects()

Modified:
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=816681&r1=816680&r2=816681&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Fri Sep 18 15:46:26 2009
@@ -18,6 +18,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.maven.Maven;
@@ -265,45 +266,23 @@
 
         ReactorModelCache modelCache = new ReactorModelCache();
 
-        boolean errors =
+        boolean noErrors =
             build( results, interimResults, pomFiles, true, recursive, config, reactorModelPool, modelCache );
 
-        for ( InterimResult interimResult : interimResults )
-        {
-            Model model = interimResult.result.getEffectiveModel();
-            reactorModelPool.put( model.getGroupId(), model.getArtifactId(), model.getVersion(), model.getPomFile() );
-        }
+        populateReactorModelPool( reactorModelPool, interimResults );
 
         ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
 
         try
         {
-            for ( InterimResult interimResult : interimResults )
-            {
-                try
-                {
-                    ModelBuildingResult result = modelBuilder.build( interimResult.request, interimResult.result );
-
-                    MavenProject project = toProject( result, config, interimResult.listener );
-                    project.setExecutionRoot( interimResult.root );
-
-                    results.add( new DefaultProjectBuildingResult( project, result.getProblems(), null ) );
-                }
-                catch ( ModelBuildingException e )
-                {
-                    results.add( new DefaultProjectBuildingResult( e.getModelId(), interimResult.pomFile,
-                                                                   e.getProblems() ) );
-
-                    errors = true;
-                }
-            }
+            noErrors = build( results, new ArrayList<MavenProject>(), interimResults, config ) && noErrors;
         }
         finally
         {
             Thread.currentThread().setContextClassLoader( oldContextClassLoader );
         }
 
-        if ( errors )
+        if ( !noErrors )
         {
             throw new ProjectBuildingException( results );
         }
@@ -315,7 +294,7 @@
                            List<File> pomFiles, boolean isRoot, boolean recursive, ProjectBuildingRequest config,
                            ReactorModelPool reactorModelPool, ReactorModelCache modelCache )
     {
-        boolean errors = false;
+        boolean noErrors = true;
 
         for ( File pomFile : pomFiles )
         {
@@ -334,7 +313,8 @@
 
                 Model model = result.getEffectiveModel();
 
-                interimResults.add( new InterimResult( pomFile, request, result, listener, isRoot ) );
+                InterimResult interimResult = new InterimResult( pomFile, request, result, listener, isRoot );
+                interimResults.add( interimResult );
 
                 if ( recursive && !model.getModules().isEmpty() )
                 {
@@ -363,7 +343,7 @@
                                     + " does not exist", ModelProblem.Severity.ERROR, model, -1, -1, null );
                             result.getProblems().add( problem );
 
-                            errors = true;
+                            noErrors = false;
 
                             continue;
                         }
@@ -388,10 +368,12 @@
                         moduleFiles.add( moduleFile );
                     }
 
-                    if ( build( results, interimResults, moduleFiles, false, recursive, config, reactorModelPool,
-                                 modelCache ) )
+                    interimResult.modules = new ArrayList<InterimResult>();
+
+                    if ( !build( results, interimResult.modules, moduleFiles, false, recursive, config,
+                                reactorModelPool, modelCache ) )
                     {
-                        errors = true;
+                        noErrors = false;
                     }
                 }
             }
@@ -399,11 +381,11 @@
             {
                 results.add( new DefaultProjectBuildingResult( e.getModelId(), pomFile, e.getProblems() ) );
 
-                errors = true;
+                noErrors = false;
             }
         }
 
-        return errors;
+        return noErrors;
     }
 
     static class InterimResult
@@ -419,6 +401,8 @@
 
         boolean root;
 
+        List<InterimResult> modules = Collections.emptyList();
+
         InterimResult( File pomFile, ModelBuildingRequest request, ModelBuildingResult result,
                        DefaultModelBuildingListener listener, boolean root )
         {
@@ -431,6 +415,54 @@
 
     }
 
+    private void populateReactorModelPool( ReactorModelPool reactorModelPool, List<InterimResult> interimResults )
+    {
+        for ( InterimResult interimResult : interimResults )
+        {
+            Model model = interimResult.result.getEffectiveModel();
+            reactorModelPool.put( model.getGroupId(), model.getArtifactId(), model.getVersion(), model.getPomFile() );
+
+            populateReactorModelPool( reactorModelPool, interimResult.modules );
+        }
+    }
+
+    private boolean build( List<ProjectBuildingResult> results, List<MavenProject> projects,
+                           List<InterimResult> interimResults, ProjectBuildingRequest config )
+    {
+        boolean noErrors = true;
+
+        for ( InterimResult interimResult : interimResults )
+        {
+            try
+            {
+                ModelBuildingResult result = modelBuilder.build( interimResult.request, interimResult.result );
+
+                MavenProject project = toProject( result, config, interimResult.listener );
+
+                projects.add( project );
+
+                results.add( new DefaultProjectBuildingResult( project, result.getProblems(), null ) );
+
+                project.setExecutionRoot( interimResult.root );
+
+                List<MavenProject> modules = new ArrayList<MavenProject>();
+                noErrors = build( results, modules, interimResult.modules, config ) && noErrors;
+
+                projects.addAll( modules );
+
+                project.setCollectedProjects( modules );
+            }
+            catch ( ModelBuildingException e )
+            {
+                results.add( new DefaultProjectBuildingResult( e.getModelId(), interimResult.pomFile, e.getProblems() ) );
+
+                noErrors = false;
+            }
+        }
+
+        return noErrors;
+    }
+
     private MavenProject toProject( ModelBuildingResult result, ProjectBuildingRequest configuration,
                                     DefaultModelBuildingListener listener )
     {

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java?rev=816681&r1=816680&r2=816681&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java Fri Sep 18 15:46:26 2009
@@ -112,6 +112,8 @@
 
     private MavenProject executionProject;
 
+    private List<MavenProject> collectedProjects;
+
     private List<String> compileSourceRoots = new ArrayList<String>();
 
     private List<String> testCompileSourceRoots = new ArrayList<String>();
@@ -1477,6 +1479,16 @@
         this.executionProject = executionProject;
     }
 
+    public List<MavenProject> getCollectedProjects()
+    {
+        return collectedProjects;
+    }
+
+    public void setCollectedProjects( List<MavenProject> collectedProjects )
+    {
+        this.collectedProjects = collectedProjects;
+    }
+
     /**
      * Direct dependencies that this project has.
      *