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