Author: jdcasey
Date: Fri Jun 1 14:33:49 2007
New Revision: 543624
URL: http://svn.apache.org/viewvc?view=rev&rev=543624
Log:
Merging 543599 from trunk to address MNG-2784
Modified:
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/injection/DefaultProfileInjector.java
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/injection/DefaultProfileInjectorTest.java
Modified:
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/injection/DefaultProfileInjector.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/injection/DefaultProfileInjector.java?view=diff&rev=543624&r1=543623&r2=543624
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/injection/DefaultProfileInjector.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/injection/DefaultProfileInjector.java
Fri Jun 1 14:33:49 2007
@@ -41,10 +41,10 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import java.util.TreeMap;
/**
* Inject profile data into a Model, using the profile as the dominant data
source, and
@@ -141,24 +141,24 @@
/**
* This should be the resulting ordering of plugins after injection:
- *
+ *
* Given:
- *
+ *
* model: X -> A -> B -> D -> E
* profile: Y -> A -> C -> D -> F
- *
- * Result:
- *
+ *
+ * Result:
+ *
* X -> Y -> A -> B -> C -> D -> E -> F
*/
protected void injectPlugins( PluginContainer profileContainer,
PluginContainer modelContainer )
{
- if ( profileContainer == null || modelContainer == null )
+ if ( ( profileContainer == null ) || ( modelContainer == null ) )
{
// nothing to do...
return;
}
-
+
List modelPlugins = modelContainer.getPlugins();
if ( modelPlugins == null )
@@ -177,7 +177,7 @@
Plugin profilePlugin = (Plugin) profilePlugins.get(
modelPlugin.getKey() );
- if ( profilePlugin != null && !mergedPlugins.contains(
profilePlugin ) )
+ if ( ( profilePlugin != null ) && !mergedPlugins.contains(
profilePlugin ) )
{
Plugin mergedPlugin = modelPlugin;
@@ -197,7 +197,7 @@
private void injectPluginDefinition( Plugin profilePlugin, Plugin
modelPlugin )
{
- if ( profilePlugin == null || modelPlugin == null )
+ if ( ( profilePlugin == null ) || ( modelPlugin == null ) )
{
// nothing to do.
return;
@@ -219,13 +219,13 @@
// from here to the end of the method is dealing with merging of the
<executions/> section.
List modelExecutions = modelPlugin.getExecutions();
- if ( modelExecutions == null || modelExecutions.isEmpty() )
+ if ( ( modelExecutions == null ) || modelExecutions.isEmpty() )
{
modelPlugin.setExecutions( profilePlugin.getExecutions() );
}
else
{
- Map executions = new TreeMap();
+ Map executions = new LinkedHashMap();
Map profileExecutions = profilePlugin.getExecutionsAsMap();
@@ -249,7 +249,7 @@
List goals = new ArrayList();
- if ( modelGoals != null && !modelGoals.isEmpty() )
+ if ( ( modelGoals != null ) && !modelGoals.isEmpty() )
{
goals.addAll( modelGoals );
}
@@ -331,7 +331,7 @@
List modelModules = model.getModules();
- if ( modelModules != null && !modelModules.isEmpty() )
+ if ( ( modelModules != null ) && !modelModules.isEmpty() )
{
modules.addAll( modelModules );
}
Modified:
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/injection/DefaultProfileInjectorTest.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/injection/DefaultProfileInjectorTest.java?view=diff&rev=543624&r1=543623&r2=543624
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/injection/DefaultProfileInjectorTest.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/injection/DefaultProfileInjectorTest.java
Fri Jun 1 14:33:49 2007
@@ -42,81 +42,81 @@
/**
* Test that this is the resulting ordering of plugins after merging:
- *
+ *
* Given:
- *
+ *
* model: X -> A -> B -> D -> E
* profile: Y -> A -> C -> D -> F
- *
- * Result:
- *
+ *
+ * Result:
+ *
* X -> Y -> A -> B -> C -> D -> E -> F
*/
public void testShouldPreserveOrderingOfPluginsAfterProfileMerge()
{
PluginContainer profile = new PluginContainer();
-
+
profile.addPlugin( createPlugin( "group", "artifact", "1.0",
Collections.EMPTY_MAP ) );
profile.addPlugin( createPlugin( "group2", "artifact2", "1.0",
Collections.singletonMap( "key", "value" ) ) );
-
+
PluginContainer model = new PluginContainer();
-
+
model.addPlugin( createPlugin( "group3", "artifact3", "1.0",
Collections.EMPTY_MAP ) );
model.addPlugin( createPlugin( "group2", "artifact2", "1.0",
Collections.singletonMap( "key2", "value2" ) ) );
-
+
new DefaultProfileInjector().injectPlugins( profile, model );
-
+
List results = model.getPlugins();
-
+
assertEquals( 3, results.size() );
-
+
Plugin result1 = (Plugin) results.get( 0 );
-
+
assertEquals( "group3", result1.getGroupId() );
assertEquals( "artifact3", result1.getArtifactId() );
-
+
Plugin result2 = (Plugin) results.get( 1 );
-
+
assertEquals( "group", result2.getGroupId() );
assertEquals( "artifact", result2.getArtifactId() );
-
+
Plugin result3 = (Plugin) results.get( 2 );
-
+
assertEquals( "group2", result3.getGroupId() );
assertEquals( "artifact2", result3.getArtifactId() );
-
+
Xpp3Dom result3Config = (Xpp3Dom) result3.getConfiguration();
-
+
assertNotNull( result3Config );
-
+
assertEquals( "value", result3Config.getChild( "key" ).getValue() );
assertEquals( "value2", result3Config.getChild( "key2" ).getValue() );
}
-
+
private Plugin createPlugin( String groupId, String artifactId, String
version, Map configuration )
{
Plugin plugin = new Plugin();
plugin.setGroupId( groupId );
plugin.setArtifactId( artifactId );
plugin.setVersion( version );
-
+
Xpp3Dom config = new Xpp3Dom( "configuration" );
-
+
if( configuration != null )
{
for ( Iterator it = configuration.entrySet().iterator();
it.hasNext(); )
{
Map.Entry entry = (Map.Entry) it.next();
-
+
Xpp3Dom param = new Xpp3Dom( String.valueOf( entry.getKey() )
);
param.setValue( String.valueOf( entry.getValue() ) );
-
+
config.addChild( param );
}
}
-
+
plugin.setConfiguration( config );
-
+
return plugin;
}
@@ -175,7 +175,7 @@
Xpp3Dom rChild = rConfig.getChild( "test" );
assertEquals( "replacedValue", rChild.getValue() );
-
+
Xpp3Dom rChild2 = rConfig.getChild( "test2" );
assertEquals( "value2", rChild2.getValue() );
@@ -213,7 +213,7 @@
PluginExecution pExec = new PluginExecution();
pExec.setId("profile-injected");
-
+
Xpp3Dom pConfigChild = new Xpp3Dom( "test" );
pConfigChild.setValue( "replacedValue" );
@@ -223,7 +223,7 @@
pExec.setConfiguration( pConfig );
pPlugin.addExecution( pExec );
-
+
BuildBase pBuild = new BuildBase();
pBuild.addPlugin( pPlugin );
@@ -236,26 +236,26 @@
Build rBuild = model.getBuild();
Plugin rPlugin = (Plugin) rBuild.getPlugins().get( 0 );
-
+
PluginExecution rExec = (PluginExecution)
rPlugin.getExecutionsAsMap().get( "profile-injected" );
-
+
assertNotNull( rExec );
-
+
Xpp3Dom rExecConfig = (Xpp3Dom) rExec.getConfiguration();
Xpp3Dom rChild = rExecConfig.getChild( "test" );
assertEquals( "replacedValue", rChild.getValue() );
-
+
Xpp3Dom rConfig = (Xpp3Dom) rPlugin.getConfiguration();
-
+
assertNotNull( rConfig );
-
+
Xpp3Dom rChild2 = rConfig.getChild( "test2" );
assertEquals( "value2", rChild2.getValue() );
}
-
+
public void testProfileRepositoryShouldOverrideModelRepository()
{
Repository mRepository = new Repository();
@@ -300,4 +300,75 @@
assertEquals( "module1", rModules.get( 0 ) );
}
+ // NOTE: The execution-id's are important, because they are NOT in
+ // alphabetical order. The trunk version of Maven currently injects
+ // profiles into a TreeMap, then calls map.values(), which puts the
+ // executions in alphabetical order...the WRONG order.
+ public void testShouldPreserveOrderingOfProfileInjectedPluginExecutions()
+ {
+ Plugin profilePlugin = new Plugin();
+ profilePlugin.setGroupId( "group" );
+ profilePlugin.setArtifactId( "artifact" );
+ profilePlugin.setVersion( "version" );
+
+ PluginExecution exec1 = new PluginExecution();
+ exec1.setId( "z" );
+ profilePlugin.addExecution( exec1 );
+
+ PluginExecution exec2 = new PluginExecution();
+ exec2.setId( "y" );
+ profilePlugin.addExecution( exec2 );
+
+ BuildBase buildBase = new BuildBase();
+ buildBase.addPlugin( profilePlugin );
+
+ Profile profile = new Profile();
+ profile.setBuild( buildBase );
+
+ Plugin modelPlugin = new Plugin();
+ modelPlugin.setGroupId( "group" );
+ modelPlugin.setArtifactId( "artifact" );
+ modelPlugin.setVersion( "version" );
+
+ PluginExecution exec3 = new PluginExecution();
+ exec3.setId( "w" );
+ modelPlugin.addExecution( exec3 );
+
+ PluginExecution exec4 = new PluginExecution();
+ exec4.setId( "x" );
+ modelPlugin.addExecution( exec4 );
+
+ Build build = new Build();
+ build.addPlugin( modelPlugin );
+
+ Model model = new Model();
+ model.setBuild( build );
+
+ new DefaultProfileInjector().inject( profile, model );
+
+ List plugins = model.getBuild().getPlugins();
+ assertNotNull( plugins );
+ assertEquals( 1, plugins.size() );
+
+ Plugin plugin = (Plugin) plugins.get( 0 );
+
+ List executions = plugin.getExecutions();
+ assertNotNull( executions );
+ assertEquals( 4, executions.size() );
+
+ Iterator it = executions.iterator();
+
+ PluginExecution e = (PluginExecution) it.next();
+ assertEquals( "w", e.getId() );
+
+ e = (PluginExecution) it.next();
+ assertEquals( "x", e.getId() );
+
+ e = (PluginExecution) it.next();
+ assertEquals( "z", e.getId() );
+
+ e = (PluginExecution) it.next();
+ assertEquals( "y", e.getId() );
+
+ }
}