Author: jdcasey
Date: Thu Sep 11 10:40:00 2008
New Revision: 694376

URL: http://svn.apache.org/viewvc?rev=694376&view=rev
Log:
Merging in fix for MNG-3729, for real this time.

Modified:
    maven/components/branches/maven-2.1.x/   (props changed)
    
maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    
maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java
   (props changed)

Propchange: maven/components/branches/maven-2.1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 11 10:40:00 2008
@@ -1,4 +1,4 @@
 /maven/components/branches/maven-2.0.10-RC:679193-679867,680477-688882
 /maven/components/branches/maven-2.0.x:679552-679867
 /maven/components/branches/maven-2.1.0-M1-RC:690315,691793-694304
-/maven/components/branches/maven-2.1.0-RC:688883,689695,689990
+/maven/components/branches/maven-2.1.0-RC:688883,689695,689976,689990

Modified: 
maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=694376&r1=694375&r2=694376&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 (original)
+++ 
maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 Thu Sep 11 10:40:00 2008
@@ -601,22 +601,21 @@
             
             if ( hasFork )
             {
+                // NOTE: This must always happen, regardless of treatment of 
reactorProjects below, because
+                // if we're in a forked execution right now, the current 
project will itself be an execution project of
+                // something in the reactorProjects list, and won't have a 
next-stage executionProject created
+                // for it otherwise, which leaves the project == null for the 
upcoming forked execution.
+                createExecutionProject( project, session, true );
+                
                 if ( usesReactorProjects )
                 {
                     List reactorProjects = session.getSortedProjects();
                     for ( Iterator it = reactorProjects.iterator(); 
it.hasNext(); )
                     {
                         MavenProject reactorProject = (MavenProject) it.next();
-                        if ( reactorProject.getExecutionProject() == null )
-                        {
-                            createExecutionProject( reactorProject, session, 
false );
-                        }
+                        createExecutionProject( reactorProject, session, false 
);
                     }
                 }
-                else
-                {
-                    createExecutionProject( project, session, true );
-                }
             }
 
             if ( mojoDescriptor.getExecutePhase() != null || 
mojoDescriptor.getExecuteGoal() != null )
@@ -652,6 +651,12 @@
             
             if ( hasFork )
             {
+                // NOTE: This must always happen, regardless of treatment of 
reactorProjects below, because
+                // if we're in a forked execution right now, the current 
project will itself be an execution project of
+                // something in the reactorProjects list, and may not have had 
its own executionProject instance reset to 
+                // a concrete state again after the previous forked executions.
+                calculateConcreteState( project.getExecutionProject(), 
session, true );
+                
                 // FIXME: Would be nice to find a way to cause the execution 
project to stay in a concrete state...
                 // TODO: Test this! It should be fixed, but I don't want to 
destabilize until I have the issue I'm working on fixed.
                 if ( usesReactorProjects )
@@ -664,10 +669,6 @@
                         calculateConcreteState( 
reactorProject.getExecutionProject(), session, false );
                     }
                 }
-                else
-                {
-                    calculateConcreteState( project.getExecutionProject(), 
session, true );
-                }
             }
 
             try
@@ -703,44 +704,17 @@
             {
                 throw new LifecycleExecutionException( e.getMessage(), e );
             }
-            
-            if ( hasFork )
-            {
-                project.setExecutionProject( null );
-                
-                if ( usesReactorProjects )
-                {
-                    List reactorProjects = session.getSortedProjects();
-                    for ( Iterator it = reactorProjects.iterator(); 
it.hasNext(); )
-                    {
-                        MavenProject reactorProject = (MavenProject) it.next();
-                        reactorProject.setExecutionProject( null );
-                    }
-                }
-            }
-            
-//            if ( usesReactorProjects )
-//            {
-//                restoreAllDynamicStates( session );
-//            }
-//            else
-//            {
-//                restoreDynamicState( project, session, true );
-//            }
         }
     }
     
     private void createExecutionProject( MavenProject project, MavenSession 
session, boolean processProjectReferences )
         throws LifecycleExecutionException
     {
-        if ( project.getExecutionProject() == null )
-        {
-            MavenProject executionProject = new MavenProject( project );
-            
-            calculateConcreteState( executionProject, session, 
processProjectReferences );
-            
-            project.setExecutionProject( executionProject );
-        }
+        MavenProject executionProject = new MavenProject( project );
+        
+        calculateConcreteState( executionProject, session, 
processProjectReferences );
+        
+        project.setExecutionProject( executionProject );
     }
 
     private boolean usesSessionOrReactorProjects( PlexusConfiguration 
configuration )

Propchange: 
maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 11 10:40:00 2008
@@ -1,3 +1,3 @@
 
/maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:688259
 
/maven/components/branches/maven-2.1.0-M1-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:690315,691793
-/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:688883,689695,689990
+/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:688883,689695,689976,689990


Reply via email to