Author: jdcasey
Date: Wed Sep  3 14:39:32 2008
New Revision: 691793

URL: http://svn.apache.org/viewvc?rev=691793&view=rev
Log:
[MNG-3740] Be more careful to track processed projects through concrete and 
restore methods, to avoid infinite recursion when plugin projects in the 
reactor used by their parents (in an older version) are processed...for 
instance. I'm not sure this is the only case where this can happen, just know 
it's one.

Modified:
    
maven/components/branches/maven-2.1.0-M1-RC/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java

Modified: 
maven/components/branches/maven-2.1.0-M1-RC/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-M1-RC/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=691793&r1=691792&r2=691793&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.1.0-M1-RC/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/components/branches/maven-2.1.0-M1-RC/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Wed Sep  3 14:39:32 2008
@@ -1833,7 +1833,12 @@
     private void calculateConcreteStateInternal( MavenProject project, 
ProjectBuilderConfiguration config, boolean processProjectReferences, Set 
processedProjects )
         throws ModelInterpolationException
     {
-        restoreDynamicState( project, config, false );
+        if ( processProjectReferences )
+        {
+            processedProjects.add( project.getId() );
+        }
+        
+        restoreDynamicStateInternal( project, config, 
processProjectReferences, processProjectReferences ? new HashSet( 
processedProjects ) : null );
         
         if ( !project.isConcrete() )
         {
@@ -1914,7 +1919,6 @@
 
         if ( processProjectReferences )
         {
-            processedProjects.add( project.getId() );
             calculateConcreteProjectReferences( project, config, 
processedProjects );
         }
     }
@@ -2003,6 +2007,11 @@
     private void restoreDynamicStateInternal( MavenProject project, 
ProjectBuilderConfiguration config, boolean processProjectReferences, Set 
processedProjects )
         throws ModelInterpolationException
     {
+        if ( processProjectReferences )
+        {
+            processedProjects.add( project.getId() );
+        }
+        
         if ( project.isConcrete() && projectWasChanged( project ) )
         {
             if ( project.getParent() != null )
@@ -2023,7 +2032,6 @@
 
         if ( processProjectReferences )
         {
-            processedProjects.add( project.getId() );
             restoreDynamicProjectReferences( project, config, 
processedProjects );
         }
     }


Reply via email to