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