You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2008/12/13 19:16:41 UTC

svn commit: r726247 - in /maven/components/branches/maven-2.1.x: ./ maven-model/src/main/mdo/maven.mdo maven-project/src/main/java/org/apache/maven/project/ModelUtils.java

Author: bentmann
Date: Sat Dec 13 10:16:40 2008
New Revision: 726247

URL: http://svn.apache.org/viewvc?rev=726247&view=rev
Log:
[MNG-3899] Inheritance does not merge extensions with same gid and aid

o Merged from r726244

Modified:
    maven/components/branches/maven-2.1.x/   (props changed)
    maven/components/branches/maven-2.1.x/maven-model/src/main/mdo/maven.mdo
    maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java

Propchange: maven/components/branches/maven-2.1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Dec 13 10:16:40 2008
@@ -1,5 +1,5 @@
 /maven/components/branches/maven-2.0.10-RC:679193-679867,680477-688882,725329-725330,725342,725349,725359
-/maven/components/branches/maven-2.0.x:679552-679867,709032,709208,709241,720042,725949
+/maven/components/branches/maven-2.0.x:679552-679867,709032,709208,709241,720042,725949,726244
 /maven/components/branches/maven-2.1.0-M1-RC:690315,691793-694304
 /maven/components/branches/maven-2.1.0-RC:688883,689695,689976,689990
 /maven/components/trunk:720001,721902

Modified: maven/components/branches/maven-2.1.x/maven-model/src/main/mdo/maven.mdo
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-model/src/main/mdo/maven.mdo?rev=726247&r1=726246&r2=726247&view=diff
==============================================================================
--- maven/components/branches/maven-2.1.x/maven-model/src/main/mdo/maven.mdo (original)
+++ maven/components/branches/maven-2.1.x/maven-model/src/main/mdo/maven.mdo Sat Dec 13 10:16:40 2008
@@ -3365,6 +3365,17 @@
           <code>
             <![CDATA[
     /**
+     * Gets the key of the extension. The key is used to merge extensions inherited from a parent with the extensions
+     * of the current project.
+     * 
+     * @return The key of the extension, i.e. <code>groupId:artifactId</code>.
+     */
+    public String getKey()
+    {
+        return new StringBuffer( 128 ).append( getGroupId() ).append( ':' ).append( getArtifactId() ).toString();
+    }
+
+    /**
      * @see java.lang.Object#equals(java.lang.Object)
      */
     public boolean equals( Object o )

Modified: maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java?rev=726247&r1=726246&r2=726247&view=diff
==============================================================================
--- maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java (original)
+++ maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java Sat Dec 13 10:16:40 2008
@@ -1462,14 +1462,34 @@
 
     public static void mergeExtensionLists( Build childBuild, Build parentBuild )
     {
-        for ( Iterator i = parentBuild.getExtensions().iterator(); i.hasNext(); )
+        Map extMap = new LinkedHashMap();
+
+        List ext = childBuild.getExtensions();
+
+        if ( ext != null )
         {
-            Extension e = (Extension) i.next();
-            if ( !childBuild.getExtensions().contains( e ) )
+            for ( Iterator it = ext.iterator(); it.hasNext(); )
             {
-                childBuild.addExtension( e );
+                Extension extension = (Extension) it.next();
+                extMap.put( extension.getKey(), extension );
             }
         }
+
+        ext = parentBuild.getExtensions();
+
+        if ( ext != null )
+        {
+            for ( Iterator it = ext.iterator(); it.hasNext(); )
+            {
+                Extension extension = (Extension) it.next();
+                if ( !extMap.containsKey( extension.getKey() ) )
+                {
+                    extMap.put( extension.getKey(), extension );
+                }
+            }
+        }
+
+        childBuild.setExtensions( new ArrayList( extMap.values() ) );
     }
 
     public static void mergeResourceLists( List childResources, List parentResources )