Author: markh
Date: Mon May 28 13:27:23 2012
New Revision: 1343248

URL: http://svn.apache.org/viewvc?rev=1343248&view=rev
Log:
[MSHARED-165] Mediate dependency versions for stricter Maven3 ProjectSorter

o Deep copy projects before mediating versions

Modified:
    
maven/shared/trunk/maven-runtime/src/main/java/org/apache/maven/shared/runtime/MavenProjectUtils.java
    
maven/shared/trunk/maven-runtime/src/main/java/org/apache/maven/shared/runtime/XMLMavenRuntimeVisitor.java

Modified: 
maven/shared/trunk/maven-runtime/src/main/java/org/apache/maven/shared/runtime/MavenProjectUtils.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-runtime/src/main/java/org/apache/maven/shared/runtime/MavenProjectUtils.java?rev=1343248&r1=1343247&r2=1343248&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-runtime/src/main/java/org/apache/maven/shared/runtime/MavenProjectUtils.java
 (original)
+++ 
maven/shared/trunk/maven-runtime/src/main/java/org/apache/maven/shared/runtime/MavenProjectUtils.java
 Mon May 28 13:27:23 2012
@@ -19,6 +19,8 @@ package org.apache.maven.shared.runtime;
  * under the License.
  */
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -46,6 +48,24 @@ final class MavenProjectUtils
     // public methods ---------------------------------------------------------
 
     /**
+     * Deep copies the specified list of projects.
+     * 
+     * @param projects the projects to copy
+     * @return a deep copy of the specified projects
+     */
+    public static List<MavenProject> cloneProjects( Collection<MavenProject> 
projects )
+    {
+        List<MavenProject> clonedProjects = new ArrayList<MavenProject>();
+
+        for ( MavenProject project : projects )
+        {
+            clonedProjects.add( project.clone() );
+        }
+
+        return clonedProjects;
+    }
+
+    /**
      * Aligns dependency versions to their corresponding project version for 
the specified projects.
      * 
      * @param projects the projects whose dependency versions to align

Modified: 
maven/shared/trunk/maven-runtime/src/main/java/org/apache/maven/shared/runtime/XMLMavenRuntimeVisitor.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-runtime/src/main/java/org/apache/maven/shared/runtime/XMLMavenRuntimeVisitor.java?rev=1343248&r1=1343247&r2=1343248&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-runtime/src/main/java/org/apache/maven/shared/runtime/XMLMavenRuntimeVisitor.java
 (original)
+++ 
maven/shared/trunk/maven-runtime/src/main/java/org/apache/maven/shared/runtime/XMLMavenRuntimeVisitor.java
 Mon May 28 13:27:23 2012
@@ -104,7 +104,7 @@ class XMLMavenRuntimeVisitor implements 
     public List<MavenProject> getSortedProjects() throws MavenRuntimeException
     {
         // mediate dependency versions since declared versions can differ from 
runtime versions
-        List<MavenProject> mediatedProjects = new ArrayList<MavenProject>( 
projects );
+        List<MavenProject> mediatedProjects = MavenProjectUtils.cloneProjects( 
projects );
         MavenProjectUtils.mediateDependencyVersions( mediatedProjects );
         
         try


Reply via email to