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 2009/05/08 16:40:47 UTC

svn commit: r773012 - /maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java

Author: bentmann
Date: Fri May  8 14:40:47 2009
New Revision: 773012

URL: http://svn.apache.org/viewvc?rev=773012&view=rev
Log:
o Continued work on model merging

Modified:
    maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java

Modified: maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java?rev=773012&r1=773011&r2=773012&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java (original)
+++ maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java Fri May  8 14:40:47 2009
@@ -96,7 +96,8 @@
     }
 
     /*
-     * TODO: Whether the merge continues recursively into an existing node or not could be an option for the generated merger
+     * TODO: Whether the merge continues recursively into an existing node or not could be an option for the generated
+     * merger
      */
     @Override
     protected void mergeModel_Organization( Model target, Model source, boolean sourceDominant,
@@ -241,6 +242,26 @@
     }
 
     @Override
+    protected void mergeBuildBase_Resources( BuildBase target, BuildBase source, boolean sourceDominant,
+                                             Map<Object, Object> context )
+    {
+        if ( sourceDominant || target.getResources().isEmpty() )
+        {
+            super.mergeBuildBase_Resources( target, source, sourceDominant, context );
+        }
+    }
+
+    @Override
+    protected void mergeBuildBase_TestResources( BuildBase target, BuildBase source, boolean sourceDominant,
+                                                 Map<Object, Object> context )
+    {
+        if ( sourceDominant || target.getTestResources().isEmpty() )
+        {
+            super.mergeBuildBase_TestResources( target, source, sourceDominant, context );
+        }
+    }
+
+    @Override
     protected void mergeDistributionManagement_Repository( DistributionManagement target,
                                                            DistributionManagement source, boolean sourceDominant,
                                                            Map<Object, Object> context )
@@ -437,6 +458,65 @@
     }
 
     @Override
+    protected void mergePlugin_Executions( Plugin target, Plugin source, boolean sourceDominant,
+                                           Map<Object, Object> context )
+    {
+        List<PluginExecution> src = source.getExecutions();
+        if ( !src.isEmpty() )
+        {
+            List<PluginExecution> tgt = target.getExecutions();
+            Map<Object, PluginExecution> merged =
+                new LinkedHashMap<Object, PluginExecution>( ( src.size() + tgt.size() ) * 2 );
+
+            for ( Iterator<PluginExecution> it = tgt.iterator(); it.hasNext(); )
+            {
+                PluginExecution element = it.next();
+                Object key = getPluginExecutionKey( element );
+                merged.put( key, element );
+            }
+
+            for ( Iterator<PluginExecution> it = src.iterator(); it.hasNext(); )
+            {
+                PluginExecution element = it.next();
+                Object key = getPluginExecutionKey( element );
+                PluginExecution existing = merged.get( key );
+                if ( existing != null )
+                {
+                    mergePluginExecution( existing, element, sourceDominant, context );
+                }
+                else
+                {
+                    merged.put( key, element );
+                }
+            }
+
+            target.setExecutions( new ArrayList<PluginExecution>( merged.values() ) );
+        }
+    }
+
+    @Override
+    protected void mergePluginExecution_Goals( PluginExecution target, PluginExecution source, boolean sourceDominant,
+                                               Map<Object, Object> context )
+    {
+        List<String> src = source.getGoals();
+        if ( !src.isEmpty() )
+        {
+            List<String> tgt = target.getGoals();
+            Set<String> excludes = new LinkedHashSet<String>( tgt );
+            List<String> merged = new ArrayList<String>( tgt.size() + src.size() );
+            merged.addAll( tgt );
+            for ( String s : src )
+            {
+                if ( !excludes.contains( s ) )
+                {
+                    merged.add( s );
+                }
+            }
+            target.setGoals( merged );
+        }
+    }
+
+    @Override
     protected Object getDependencyKey( Dependency dependency )
     {
         return dependency.getManagementKey();