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 2011/02/13 15:26:58 UTC

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

Author: bentmann
Date: Sun Feb 13 14:26:57 2011
New Revision: 1070242

URL: http://svn.apache.org/viewvc?rev=1070242&view=rev
Log:
[MNG-5014] [regression] MavenProject.getParent().isExecutionRoot() not properly set

Modified:
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.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=1070242&r1=1070241&r2=1070242&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 Sun Feb 13 14:26:57 2011
@@ -141,7 +141,8 @@ public class DefaultProjectBuilder
 
                 modelProblems = result.getProblems();
 
-                initProject( project, result, new HashMap<File, Boolean>() );
+                initProject( project, Collections.<String, MavenProject> emptyMap(), result,
+                             new HashMap<File, Boolean>() );
             }
             else if ( configuration.isResolveDependencies() )
             {
@@ -302,9 +303,11 @@ public class DefaultProjectBuilder
 
         ReactorModelCache modelCache = new ReactorModelCache();
 
+        Map<String, MavenProject> projectIndex = new HashMap<String, MavenProject>( 256 );
+
         boolean noErrors =
-            build( results, interimResults, pomFiles, new LinkedHashSet<File>(), true, recursive, config, modelPool,
-                   modelCache );
+            build( results, interimResults, projectIndex, pomFiles, new LinkedHashSet<File>(), true, recursive, config,
+                   modelPool, modelCache );
 
         populateReactorModelPool( modelPool, interimResults );
 
@@ -313,8 +316,8 @@ public class DefaultProjectBuilder
         try
         {
             noErrors =
-                build( results, new ArrayList<MavenProject>(), interimResults, config, new HashMap<File, Boolean>() )
-                    && noErrors;
+                build( results, new ArrayList<MavenProject>(), projectIndex, interimResults, config,
+                       new HashMap<File, Boolean>() ) && noErrors;
         }
         finally
         {
@@ -330,9 +333,9 @@ public class DefaultProjectBuilder
     }
 
     private boolean build( List<ProjectBuildingResult> results, List<InterimResult> interimResults,
-                           List<File> pomFiles, Set<File> aggregatorFiles, boolean isRoot, boolean recursive,
-                           ProjectBuildingRequest config, ReactorModelPool reactorModelPool,
-                           ReactorModelCache modelCache )
+                           Map<String, MavenProject> projectIndex, List<File> pomFiles, Set<File> aggregatorFiles,
+                           boolean isRoot, boolean recursive, ProjectBuildingRequest config,
+                           ReactorModelPool reactorModelPool, ReactorModelCache modelCache )
     {
         boolean noErrors = true;
 
@@ -340,7 +343,7 @@ public class DefaultProjectBuilder
         {
             aggregatorFiles.add( pomFile );
 
-            if ( !build( results, interimResults, pomFile, aggregatorFiles, isRoot, recursive, config,
+            if ( !build( results, interimResults, projectIndex, pomFile, aggregatorFiles, isRoot, recursive, config,
                          reactorModelPool, modelCache ) )
             {
                 noErrors = false;
@@ -352,8 +355,9 @@ public class DefaultProjectBuilder
         return noErrors;
     }
 
-    private boolean build( List<ProjectBuildingResult> results, List<InterimResult> interimResults, File pomFile,
-                           Set<File> aggregatorFiles, boolean isRoot, boolean recursive, ProjectBuildingRequest config,
+    private boolean build( List<ProjectBuildingResult> results, List<InterimResult> interimResults,
+                           Map<String, MavenProject> projectIndex, File pomFile, Set<File> aggregatorFiles,
+                           boolean isRoot, boolean recursive, ProjectBuildingRequest config,
                            ReactorModelPool reactorModelPool, ReactorModelCache modelCache )
     {
         boolean noErrors = true;
@@ -377,6 +381,8 @@ public class DefaultProjectBuilder
 
             Model model = result.getEffectiveModel();
 
+            projectIndex.put( result.getModelIds().get( 0 ), project );
+
             InterimResult interimResult = new InterimResult( pomFile, request, result, listener, isRoot );
             interimResults.add( interimResult );
 
@@ -456,8 +462,8 @@ public class DefaultProjectBuilder
 
                 interimResult.modules = new ArrayList<InterimResult>();
 
-                if ( !build( results, interimResult.modules, moduleFiles, aggregatorFiles, false, recursive, config,
-                             reactorModelPool, modelCache ) )
+                if ( !build( results, interimResult.modules, projectIndex, moduleFiles, aggregatorFiles, false,
+                             recursive, config, reactorModelPool, modelCache ) )
                 {
                     noErrors = false;
                 }
@@ -512,7 +518,8 @@ public class DefaultProjectBuilder
     }
 
     private boolean build( List<ProjectBuildingResult> results, List<MavenProject> projects,
-                           List<InterimResult> interimResults, ProjectBuildingRequest config, Map<File, Boolean> profilesXmls )
+                           Map<String, MavenProject> projectIndex, List<InterimResult> interimResults,
+                           ProjectBuildingRequest config, Map<File, Boolean> profilesXmls )
     {
         boolean noErrors = true;
 
@@ -523,10 +530,11 @@ public class DefaultProjectBuilder
                 ModelBuildingResult result = modelBuilder.build( interimResult.request, interimResult.result );
 
                 MavenProject project = interimResult.listener.getProject();
-                initProject( project, result, profilesXmls );
+                initProject( project, projectIndex, result, profilesXmls );
 
                 List<MavenProject> modules = new ArrayList<MavenProject>();
-                noErrors = build( results, modules, interimResult.modules, config, profilesXmls ) && noErrors;
+                noErrors =
+                    build( results, modules, projectIndex, interimResult.modules, config, profilesXmls ) && noErrors;
 
                 projects.addAll( modules );
                 projects.add( project );
@@ -547,7 +555,8 @@ public class DefaultProjectBuilder
         return noErrors;
     }
 
-    private void initProject( MavenProject project, ModelBuildingResult result, Map<File, Boolean> profilesXmls )
+    private void initProject( MavenProject project, Map<String, MavenProject> projects, ModelBuildingResult result,
+                              Map<File, Boolean> profilesXmls )
     {
         Model model = result.getEffectiveModel();
 
@@ -559,6 +568,8 @@ public class DefaultProjectBuilder
         File parentPomFile = result.getRawModel( result.getModelIds().get( 1 ) ).getPomFile();
         project.setParentFile( parentPomFile );
 
+        project.setParent( projects.get( result.getModelIds().get( 1 ) ) );
+
         Artifact projectArtifact =
             repositorySystem.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), null,
                                              project.getPackaging() );