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() );


Reply via email to