You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/03/09 22:49:55 UTC
svn commit: r516572 - in
/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src:
main/java/org/apache/maven/lifecycle/LifecycleUtils.java
test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java
Author: jdcasey
Date: Fri Mar 9 13:49:54 2007
New Revision: 516572
URL: http://svn.apache.org/viewvc?view=rev&rev=516572
Log:
Finished unit testing LifecycleUtils for now.
Modified:
maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java
maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java
Modified: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java?view=diff&rev=516572&r1=516571&r2=516572
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java (original)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java Fri Mar 9 13:49:54 2007
@@ -184,10 +184,10 @@
LifecycleBindings result = new LifecycleBindings();
result.setPackaging( newBindings.getPackaging() );
- CleanBinding cb = existingBindings.getCleanBinding();
- if ( defaultBindings != null && cb == null )
+ CleanBinding cb = (CleanBinding) cloneBinding( existingBindings.getCleanBinding() );
+ if ( defaultBindings != null && isNullOrEmpty( cb ) )
{
- cb = defaultBindings.getCleanBinding();
+ cb = (CleanBinding) cloneBinding( defaultBindings.getCleanBinding() );
}
if ( cb == null )
@@ -197,10 +197,10 @@
result.setCleanBinding( cb );
- BuildBinding bb = existingBindings.getBuildBinding();
- if ( defaultBindings != null && bb == null )
+ BuildBinding bb = (BuildBinding) cloneBinding( existingBindings.getBuildBinding() );
+ if ( defaultBindings != null && isNullOrEmpty( bb ) )
{
- bb = defaultBindings.getBuildBinding();
+ bb = (BuildBinding) cloneBinding( defaultBindings.getBuildBinding() );
}
if ( bb == null )
@@ -210,10 +210,10 @@
result.setBuildBinding( bb );
- SiteBinding sb = existingBindings.getSiteBinding();
- if ( defaultBindings != null && sb == null )
+ SiteBinding sb = (SiteBinding) cloneBinding( existingBindings.getSiteBinding() );
+ if ( defaultBindings != null && isNullOrEmpty( sb ) )
{
- sb = defaultBindings.getSiteBinding();
+ sb = (SiteBinding) cloneBinding( defaultBindings.getSiteBinding() );
}
if ( sb == null )
@@ -243,20 +243,40 @@
{
MojoBinding mojoBinding = (MojoBinding) phaseIt.next();
+ mojoBinding = cloneMojoBinding( mojoBinding );
+
if ( mergeConfigIfExecutionIdMatches )
{
MojoBinding matchingBinding = findMatchingMojoBinding( mojoBinding, existingBindings, true );
if ( matchingBinding != null )
{
- mojoBinding = cloneMojoBinding( (MojoBinding) phaseIt.next() );
-
Xpp3Dom existingConfig = new Xpp3Dom( (Xpp3Dom) matchingBinding.getConfiguration() );
-
- Xpp3Dom configuration = Xpp3Dom.mergeXpp3Dom( existingConfig,
- (Xpp3Dom) mojoBinding.getConfiguration() );
+ Xpp3Dom configuration = Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) mojoBinding.getConfiguration(), existingConfig );
mojoBinding.setConfiguration( configuration );
+
+ if ( mojoBinding.getOrigin() == null && matchingBinding.getOrigin() != null )
+ {
+ mojoBinding.setOrigin( matchingBinding.getOrigin() );
+ }
+
+ LifecycleBinding resultBinding = findLifecycleBindingForPhase( name, result );
+
+ try
+ {
+ removeMojoBinding( name, matchingBinding, resultBinding, true );
+ }
+ catch ( NoSuchPhaseException e )
+ {
+ IllegalStateException error = new IllegalStateException(
+ e.getMessage()
+ + "\nSomething strange is going on. Merging should not encounter such inconsistencies." );
+
+ error.initCause( e );
+
+ throw error;
+ }
}
}
@@ -285,6 +305,26 @@
return result;
}
+ private static boolean isNullOrEmpty( LifecycleBinding binding )
+ {
+ if ( binding == null )
+ {
+ return true;
+ }
+
+ for ( Iterator it = binding.getPhasesInOrder().iterator(); it.hasNext(); )
+ {
+ Phase phase = (Phase) it.next();
+
+ if ( !phase.getBindings().isEmpty() )
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
public static MojoBinding findMatchingMojoBinding( MojoBinding mojoBinding, LifecycleBindings inBindings,
boolean considerExecutionId )
{
@@ -360,7 +400,7 @@
{
Phase phase = (Phase) phases.get( i );
List phaseBindings = phase.getBindings();
-
+
for ( Iterator mojoIt = phaseBindings.iterator(); mojoIt.hasNext(); )
{
MojoBinding binding = (MojoBinding) mojoIt.next();
@@ -370,7 +410,7 @@
mojoIt.remove();
}
}
-
+
phase.setBindings( phaseBindings );
}
}
@@ -419,6 +459,11 @@
public static LifecycleBinding cloneBinding( LifecycleBinding binding )
{
+ if ( binding == null )
+ {
+ return null;
+ }
+
LifecycleBinding result;
if ( binding instanceof CleanBinding )
{
@@ -509,7 +554,7 @@
{
List revised = new ArrayList( mojoBindings );
revised.removeAll( lastMojoBindings );
-
+
if ( revised.isEmpty() )
{
continue;
@@ -539,28 +584,28 @@
{
return false;
}
-
+
if ( superCandidate.size() < check.size() )
{
return false;
}
-
+
List superKeys = new ArrayList( superCandidate.size() );
for ( Iterator it = superCandidate.iterator(); it.hasNext(); )
{
MojoBinding binding = (MojoBinding) it.next();
-
+
superKeys.add( createMojoBindingKey( binding, true ) );
}
-
+
List checkKeys = new ArrayList( check.size() );
for ( Iterator it = check.iterator(); it.hasNext(); )
{
MojoBinding binding = (MojoBinding) it.next();
-
+
checkKeys.add( createMojoBindingKey( binding, true ) );
}
-
+
return superKeys.subList( 0, checkKeys.size() ).equals( checkKeys );
}
Modified: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java?view=diff&rev=516572&r1=516571&r2=516572
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java (original)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java Fri Mar 9 13:49:54 2007
@@ -1,5 +1,7 @@
package org.apache.maven.lifecycle;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -263,6 +265,187 @@
Phase result = cleanBinding.getClean();
assertEquals( 0, result.getBindings().size() );
+ }
+
+ public void testMergeBindings_SingleMojoCloneFromEachIsPresentInResult_EmptyDefaults()
+ {
+ LifecycleBindings bOrig = new LifecycleBindings();
+ CleanBinding cbOrig = bOrig.getCleanBinding();
+ MojoBinding binding = newMojoBinding( "group", "artifact", "goal" );
+ cbOrig.getClean().addBinding( binding );
+
+ LifecycleBindings bOrig2 = new LifecycleBindings();
+ CleanBinding cbOrig2 = bOrig2.getCleanBinding();
+ MojoBinding binding2 = newMojoBinding( "group", "artifact", "goal2" );
+ cbOrig2.getClean().addBinding( binding2 );
+
+ LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, bOrig2, new LifecycleBindings(), false );
+
+ assertNotNull( result );
+
+ CleanBinding cbResult = result.getCleanBinding();
+ assertNotSame( cbOrig, cbResult );
+
+ List mojos = cbResult.getClean().getBindings();
+ assertNotNull( mojos );
+ assertEquals( 2, mojos.size() );
+
+ MojoBinding bResult = (MojoBinding) mojos.get( 0 );
+
+ assertNotSame( binding, bResult );
+
+ assertEquals( "group", bResult.getGroupId() );
+ assertEquals( "artifact", bResult.getArtifactId() );
+ assertEquals( "goal", bResult.getGoal() );
+
+ bResult = (MojoBinding) mojos.get( 1 );
+
+ assertNotSame( binding2, bResult );
+
+ assertEquals( "group", bResult.getGroupId() );
+ assertEquals( "artifact", bResult.getArtifactId() );
+ assertEquals( "goal2", bResult.getGoal() );
+ }
+
+ public void testMergeBindings_SingleMojoCloneIsPresentFromExistingAndNotFromDefaultsInResult()
+ {
+ LifecycleBindings bOrig = new LifecycleBindings();
+ CleanBinding cbOrig = bOrig.getCleanBinding();
+ MojoBinding binding = newMojoBinding( "group", "artifact", "goal" );
+ cbOrig.getClean().addBinding( binding );
+
+ LifecycleBindings bOrig2 = new LifecycleBindings();
+ CleanBinding cbOrig2 = bOrig2.getCleanBinding();
+ MojoBinding binding2 = newMojoBinding( "group", "artifact", "goal2" );
+ cbOrig2.getClean().addBinding( binding2 );
+
+ LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, new LifecycleBindings(), bOrig2, false );
+
+ assertNotNull( result );
+
+ CleanBinding cbResult = result.getCleanBinding();
+ assertNotSame( cbOrig, cbResult );
+
+ List mojos = cbResult.getClean().getBindings();
+ assertNotNull( mojos );
+ assertEquals( 1, mojos.size() );
+
+ MojoBinding bResult = (MojoBinding) mojos.get( 0 );
+
+ assertNotSame( binding, bResult );
+
+ assertEquals( "group", bResult.getGroupId() );
+ assertEquals( "artifact", bResult.getArtifactId() );
+ assertEquals( "goal", bResult.getGoal() );
+ }
+
+ public void testMergeBindings_MojoCloneIsPresentFromDefaultsInResult()
+ {
+ LifecycleBindings bOrig = new LifecycleBindings();
+ CleanBinding cbOrig = bOrig.getCleanBinding();
+ MojoBinding binding = newMojoBinding( "group", "artifact", "goal" );
+ cbOrig.getClean().addBinding( binding );
+
+ LifecycleBindings bOrig2 = new LifecycleBindings();
+ BuildBinding bbOrig = bOrig2.getBuildBinding();
+ MojoBinding binding2 = newMojoBinding( "group", "artifact", "goal2" );
+ bbOrig.getCompile().addBinding( binding2 );
+
+ LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, new LifecycleBindings(), bOrig2, false );
+
+ assertNotNull( result );
+
+ CleanBinding cbResult = result.getCleanBinding();
+ assertNotSame( cbOrig, cbResult );
+
+ List mojos = cbResult.getClean().getBindings();
+ assertNotNull( mojos );
+ assertEquals( 1, mojos.size() );
+
+ MojoBinding bResult = (MojoBinding) mojos.get( 0 );
+
+ assertNotSame( binding, bResult );
+
+ assertEquals( "group", bResult.getGroupId() );
+ assertEquals( "artifact", bResult.getArtifactId() );
+ assertEquals( "goal", bResult.getGoal() );
+
+ BuildBinding bbResult = result.getBuildBinding();
+ assertNotSame( bbOrig, bbResult );
+
+ mojos = bbResult.getCompile().getBindings();
+ assertNotNull( mojos );
+ assertEquals( 1, mojos.size() );
+
+ bResult = (MojoBinding) mojos.get( 0 );
+
+ assertNotSame( binding, bResult );
+
+ assertEquals( "group", bResult.getGroupId() );
+ assertEquals( "artifact", bResult.getArtifactId() );
+ assertEquals( "goal2", bResult.getGoal() );
+ }
+
+ public void testMergeBindings_MergeConfigsWithNewAsDominant_EmptyDefaults()
+ {
+ LifecycleBindings bOrig = new LifecycleBindings();
+ CleanBinding cbOrig = bOrig.getCleanBinding();
+ MojoBinding binding = newMojoBinding( "group", "artifact", "goal" );
+ binding.setOrigin( "non-default" );
+
+ Xpp3Dom config = new Xpp3Dom( "configuration" );
+ Xpp3Dom child = new Xpp3Dom( "child" );
+ child.setValue( "value" );
+ config.addChild( child );
+
+ binding.setConfiguration( config );
+
+ cbOrig.getClean().addBinding( binding );
+
+ LifecycleBindings bOrig2 = new LifecycleBindings();
+ CleanBinding cbOrig2 = bOrig2.getCleanBinding();
+ MojoBinding binding2 = newMojoBinding( "group", "artifact", "goal" );
+
+ Xpp3Dom config2 = new Xpp3Dom( "configuration" );
+
+ Xpp3Dom child2 = new Xpp3Dom( "child" );
+ child2.setValue( "value2" );
+
+ Xpp3Dom child3 = new Xpp3Dom( "key" );
+ child3.setValue( "val" );
+
+ config2.addChild( child2 );
+ config2.addChild( child3 );
+
+ binding2.setConfiguration( config2 );
+
+ cbOrig2.getClean().addBinding( binding2 );
+
+ LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, bOrig2, new LifecycleBindings(), true );
+
+ assertNotNull( result );
+
+ CleanBinding cbResult = result.getCleanBinding();
+ assertNotSame( cbOrig, cbResult );
+
+ List mojos = cbResult.getClean().getBindings();
+ assertNotNull( mojos );
+ assertEquals( 1, mojos.size() );
+
+ MojoBinding bResult = (MojoBinding) mojos.get( 0 );
+
+ assertNotSame( binding, bResult );
+
+ assertEquals( "group", bResult.getGroupId() );
+ assertEquals( "artifact", bResult.getArtifactId() );
+ assertEquals( "goal", bResult.getGoal() );
+ assertEquals( "non-default", bResult.getOrigin() );
+
+ Xpp3Dom cResult = (Xpp3Dom) bResult.getConfiguration();
+
+ assertNotNull( cResult );
+ assertEquals( "value2", cResult.getChild( "child" ).getValue() );
+ assertEquals( "val", cResult.getChild( "key" ).getValue() );
}
public void testCloneBinding_SingleMojoCloneIsPresentInNewInstance()