You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by st...@apache.org on 2012/08/16 10:55:54 UTC

svn commit: r1373761 - /maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java

Author: stephenc
Date: Thu Aug 16 08:55:53 2012
New Revision: 1373761

URL: http://svn.apache.org/viewvc?rev=1373761&view=rev
Log:
[MNG-5280] Inconsistent order of repositories and pluginRepositories from profiles in settings (regression Maven 3)
Submitted by: Anders Hammar

* Applied without change

* This is the fix of the bug.

Modified:
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java?rev=1373761&r1=1373760&r2=1373761&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java Thu Aug 16 08:55:53 2012
@@ -313,6 +313,46 @@ public class MavenModelMerger
         }
     }
 
+    protected void mergeModelBase_PluginRepositories( ModelBase target, ModelBase source, boolean sourceDominant,
+                                                      Map<Object, Object> context )
+    {
+        List<Repository> src = source.getPluginRepositories();
+        if ( !src.isEmpty() )
+        {
+            List<Repository> tgt = target.getPluginRepositories();
+            Map<Object, Repository> merged = new LinkedHashMap<Object, Repository>( ( src.size() + tgt.size() ) * 2 );
+
+            List<Repository> dominant, recessive;
+            if ( sourceDominant )
+            {
+                dominant = src;
+                recessive = tgt;
+            }
+            else
+            {
+                dominant = tgt;
+                recessive = src;
+            }
+
+            for ( Repository element : dominant )
+            {
+                Object key = getRepositoryKey( element );
+                merged.put( key, element );
+            }
+
+            for ( Repository element : recessive )
+            {
+                Object key = getRepositoryKey( element );
+                if ( !merged.containsKey( key ) )
+                {
+                    merged.put( key, element );
+                }
+            }
+
+            target.setPluginRepositories( new ArrayList<Repository>( merged.values() ) );
+        }
+    }
+
     /*
      * TODO: Whether duplicates should be removed looks like an option for the generated merger.
      */