You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/08/26 11:29:14 UTC
svn commit: r240197 - in /maven/components/trunk/maven-project/src:
main/java/org/apache/maven/project/
main/java/org/apache/maven/project/inheritance/
test/java/org/apache/maven/project/inheritance/
Author: brett
Date: Fri Aug 26 02:29:05 2005
New Revision: 240197
URL: http://svn.apache.org/viewcvs?rev=240197&view=rev
Log:
PR: MNG-693
added tests for reporting inheritence to mirror plugin inheritence, cleanup and utilise executions element
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java?rev=240197&r1=240196&r2=240197&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java Fri Aug 26 02:29:05 2005
@@ -21,6 +21,9 @@
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginContainer;
import org.apache.maven.model.PluginExecution;
+import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.model.ReportSet;
+import org.apache.maven.model.Reporting;
import org.apache.maven.model.Repository;
import org.apache.maven.project.inheritance.DefaultModelInheritanceAssembler;
import org.apache.maven.project.inheritance.ModelInheritanceAssembler;
@@ -69,7 +72,7 @@
{
assembledPlugin = childPlugin;
- ModelUtils.mergePluginDefinitions( childPlugin, parentPlugin, handleAsInheritance );
+ mergePluginDefinitions( childPlugin, parentPlugin, handleAsInheritance );
}
if ( handleAsInheritance && parentInherited == null )
@@ -97,6 +100,68 @@
}
}
+ public static void mergeReportPluginLists( Reporting child, Reporting parent, boolean handleAsInheritance )
+ {
+ if ( child == null || parent == null )
+ {
+ // nothing to do.
+ return;
+ }
+
+ List parentPlugins = parent.getPlugins();
+
+ if ( parentPlugins != null && !parentPlugins.isEmpty() )
+ {
+ Map assembledPlugins = new TreeMap();
+
+ Map childPlugins = child.getReportPluginsAsMap();
+
+ for ( Iterator it = parentPlugins.iterator(); it.hasNext(); )
+ {
+ ReportPlugin parentPlugin = (ReportPlugin) it.next();
+
+ String parentInherited = parentPlugin.getInherited();
+
+ if ( !handleAsInheritance || parentInherited == null ||
+ Boolean.valueOf( parentInherited ).booleanValue() )
+ {
+
+ ReportPlugin assembledPlugin = parentPlugin;
+
+ ReportPlugin childPlugin = (ReportPlugin) childPlugins.get( parentPlugin.getKey() );
+
+ if ( childPlugin != null )
+ {
+ assembledPlugin = childPlugin;
+
+ mergeReportPluginDefinitions( childPlugin, parentPlugin, handleAsInheritance );
+ }
+
+ if ( handleAsInheritance && parentInherited == null )
+ {
+ assembledPlugin.unsetInheritanceApplied();
+ }
+
+ assembledPlugins.put( assembledPlugin.getKey(), assembledPlugin );
+ }
+ }
+
+ for ( Iterator it = childPlugins.values().iterator(); it.hasNext(); )
+ {
+ ReportPlugin childPlugin = (ReportPlugin) it.next();
+
+ if ( !assembledPlugins.containsKey( childPlugin.getKey() ) )
+ {
+ assembledPlugins.put( childPlugin.getKey(), childPlugin );
+ }
+ }
+
+ child.setPlugins( new ArrayList( assembledPlugins.values() ) );
+
+ child.flushReportPluginMap();
+ }
+ }
+
public static void mergePluginDefinitions( Plugin child, Plugin parent, boolean handleAsInheritance )
{
if ( child == null || parent == null )
@@ -116,7 +181,7 @@
}
// merge the lists of goals that are not attached to an <execution/>
- ModelUtils.mergeGoalContainerDefinitions( child, parent );
+ mergeGoalContainerDefinitions( child, parent );
// from here to the end of the method is dealing with merging of the <executions/> section.
String parentInherited = parent.getInherited();
@@ -143,7 +208,7 @@
if ( childExecution != null )
{
- ModelUtils.mergePluginExecutionDefinitions( childExecution, parentExecution );
+ mergePluginExecutionDefinitions( childExecution, parentExecution );
assembled = childExecution;
}
@@ -175,6 +240,77 @@
}
+ public static void mergeReportPluginDefinitions( ReportPlugin child, ReportPlugin parent,
+ boolean handleAsInheritance )
+ {
+ if ( child == null || parent == null )
+ {
+ // nothing to do.
+ return;
+ }
+
+ if ( child.getVersion() == null && parent.getVersion() != null )
+ {
+ child.setVersion( parent.getVersion() );
+ }
+
+ // from here to the end of the method is dealing with merging of the <executions/> section.
+ String parentInherited = parent.getInherited();
+
+ boolean parentIsInherited = parentInherited == null || Boolean.valueOf( parentInherited ).booleanValue();
+
+ List parentReportSets = parent.getReportSets();
+
+ if ( parentReportSets != null && !parentReportSets.isEmpty() )
+ {
+ Map assembledReportSets = new TreeMap();
+
+ Map childReportSets = child.getReportSetsAsMap();
+
+ for ( Iterator it = parentReportSets.iterator(); it.hasNext(); )
+ {
+ ReportSet parentReportSet = (ReportSet) it.next();
+
+ if ( !handleAsInheritance || parentIsInherited )
+ {
+ ReportSet assembledReportSet = parentReportSet;
+
+ ReportSet childReportSet = (ReportSet) childReportSets.get( parentReportSet.getId() );
+
+ if ( childReportSet != null )
+ {
+ mergeReportSetDefinitions( childReportSet, parentReportSet );
+
+ assembledReportSet = childReportSet;
+ }
+ else if ( handleAsInheritance && parentInherited == null )
+ {
+ parentReportSet.unsetInheritanceApplied();
+ }
+
+ assembledReportSets.put( assembledReportSet.getId(), assembledReportSet );
+ }
+ }
+
+ for ( Iterator it = childReportSets.entrySet().iterator(); it.hasNext(); )
+ {
+ Map.Entry entry = (Map.Entry) it.next();
+
+ String id = (String) entry.getKey();
+
+ if ( !assembledReportSets.containsKey( id ) )
+ {
+ assembledReportSets.put( id, entry.getValue() );
+ }
+ }
+
+ child.setReportSets( new ArrayList( assembledReportSets.values() ) );
+
+ child.flushReportSetMap();
+ }
+
+ }
+
/**
* @param child
* @param parent
@@ -249,30 +385,30 @@
{
child.setPhase( parent.getPhase() );
}
-
+
List parentGoals = parent.getGoals();
List childGoals = child.getGoals();
-
+
List goals = new ArrayList();
-
+
if ( childGoals != null && !childGoals.isEmpty() )
{
goals.addAll( childGoals );
}
-
+
if ( parentGoals != null )
{
for ( Iterator goalIterator = parentGoals.iterator(); goalIterator.hasNext(); )
{
String goal = (String) goalIterator.next();
-
+
if ( !goals.contains( goal ) )
{
goals.add( goal );
}
}
}
-
+
child.setGoals( goals );
Xpp3Dom childConfiguration = (Xpp3Dom) child.getConfiguration();
@@ -283,6 +419,41 @@
child.setConfiguration( childConfiguration );
}
+ private static void mergeReportSetDefinitions( ReportSet child, ReportSet parent )
+ {
+ List parentReports = parent.getReports();
+ List childReports = child.getReports();
+
+ List reports = new ArrayList();
+
+ if ( childReports != null && !childReports.isEmpty() )
+ {
+ reports.addAll( childReports );
+ }
+
+ if ( parentReports != null )
+ {
+ for ( Iterator i = parentReports.iterator(); i.hasNext(); )
+ {
+ String report = (String) i.next();
+
+ if ( !reports.contains( report ) )
+ {
+ reports.add( report );
+ }
+ }
+ }
+
+ child.setReports( reports );
+
+ Xpp3Dom childConfiguration = (Xpp3Dom) child.getConfiguration();
+ Xpp3Dom parentConfiguration = (Xpp3Dom) parent.getConfiguration();
+
+ childConfiguration = Xpp3Dom.mergeXpp3Dom( childConfiguration, parentConfiguration );
+
+ child.setConfiguration( childConfiguration );
+ }
+
static Model cloneModel( Model model )
{
// TODO: would be nice for the modello:java code to generate this as a copy constructor
@@ -297,24 +468,24 @@
public static List mergeRepositoryLists( List dominant, List recessive )
{
List repositories = new ArrayList();
-
+
for ( Iterator it = dominant.iterator(); it.hasNext(); )
{
Repository repository = (Repository) it.next();
-
+
repositories.add( repository );
}
-
+
for ( Iterator it = recessive.iterator(); it.hasNext(); )
{
Repository repository = (Repository) it.next();
-
+
if ( !repositories.contains( repository ) )
{
repositories.add( repository );
}
}
-
+
return repositories;
}
}
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java?rev=240197&r1=240196&r2=240197&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java Fri Aug 26 02:29:05 2005
@@ -23,15 +23,12 @@
import org.apache.maven.model.Extension;
import org.apache.maven.model.Model;
import org.apache.maven.model.PluginManagement;
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.model.ReportSet;
import org.apache.maven.model.Reporting;
import org.apache.maven.model.Repository;
import org.apache.maven.model.Scm;
import org.apache.maven.model.Site;
import org.apache.maven.project.ModelUtils;
import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
import java.util.ArrayList;
import java.util.HashMap;
@@ -152,17 +149,18 @@
}
// Build
- assembleBuildInheritance( child, parent.getBuild() );
-
+ assembleBuildInheritance( child, parent );
+
assembleDependencyInheritance( child, parent );
child.setRepositories( ModelUtils.mergeRepositoryLists( child.getRepositories(), parent.getRepositories() ) );
- child.setPluginRepositories( ModelUtils.mergeRepositoryLists( child.getPluginRepositories(), parent.getPluginRepositories() ) );
-
+ child.setPluginRepositories(
+ ModelUtils.mergeRepositoryLists( child.getPluginRepositories(), parent.getPluginRepositories() ) );
+
assembleReportingInheritance( child, parent );
-
+
assembleDependencyManagementInheritance( child, parent );
-
+
assembleDistributionManagementInheritance( child, parent );
}
@@ -170,7 +168,7 @@
{
DistributionManagement cDistMgmt = child.getDistributionManagement();
DistributionManagement pDistMgmt = parent.getDistributionManagement();
-
+
if ( cDistMgmt == null )
{
child.setDistributionManagement( pDistMgmt );
@@ -181,27 +179,27 @@
{
cDistMgmt.setRepository( pDistMgmt.getRepository() );
}
-
+
if ( cDistMgmt.getSnapshotRepository() == null )
{
cDistMgmt.setSnapshotRepository( pDistMgmt.getSnapshotRepository() );
}
-
+
if ( StringUtils.isEmpty( cDistMgmt.getDownloadUrl() ) )
{
cDistMgmt.setDownloadUrl( pDistMgmt.getDownloadUrl() );
}
-
+
if ( cDistMgmt.getRelocation() == null )
{
cDistMgmt.setRelocation( pDistMgmt.getRelocation() );
}
-
+
if ( cDistMgmt.getSite() == null )
{
cDistMgmt.setSite( pDistMgmt.getSite() );
}
-
+
// NOTE: We SHOULD NOT be inheriting status, since this is an assessment of the POM quality.
}
}
@@ -247,161 +245,29 @@
Reporting childReporting = child.getReporting();
Reporting parentReporting = parent.getReporting();
- if ( childReporting != null && parentReporting != null )
+ if ( parentReporting != null )
{
- if ( StringUtils.isEmpty( childReporting.getOutputDirectory() ) )
+ if ( childReporting == null )
{
- childReporting.setOutputDirectory( parentReporting.getOutputDirectory() );
- }
-
- Map mergedReportPlugins = new HashMap();
-
- Map childReportersByKey = childReporting.getReportPluginsAsMap();
-
- List parentReportPlugins = parentReporting.getPlugins();
-
- if ( parentReportPlugins != null )
- {
- for ( Iterator it = parentReportPlugins.iterator(); it.hasNext(); )
- {
- ReportPlugin parentReportPlugin = (ReportPlugin) it.next();
-
- String inherited = parentReportPlugin.getInherited();
-
- if ( StringUtils.isEmpty( inherited ) || Boolean.valueOf( inherited ).booleanValue() )
- {
- ReportPlugin childReportPlugin = (ReportPlugin) childReportersByKey.get(
- parentReportPlugin.getKey() );
-
- ReportPlugin mergedReportPlugin = parentReportPlugin;
-
- if ( childReportPlugin != null )
- {
- mergedReportPlugin = childReportPlugin;
-
- mergeReportPlugins( childReportPlugin, parentReportPlugin );
- }
- else if ( StringUtils.isEmpty( inherited ) )
- {
- mergedReportPlugin.unsetInheritanceApplied();
- }
-
- mergedReportPlugins.put( mergedReportPlugin.getKey(), mergedReportPlugin );
- }
- }
+ childReporting = new Reporting();
+ child.setReporting( childReporting );
}
- for ( Iterator it = childReportersByKey.entrySet().iterator(); it.hasNext(); )
+ if ( StringUtils.isEmpty( childReporting.getOutputDirectory() ) )
{
- Map.Entry entry = (Map.Entry) it.next();
-
- String key = (String) entry.getKey();
-
- if ( !mergedReportPlugins.containsKey( key ) )
- {
- mergedReportPlugins.put( key, entry.getValue() );
- }
+ childReporting.setOutputDirectory( parentReporting.getOutputDirectory() );
}
- childReporting.setPlugins( new ArrayList( mergedReportPlugins.values() ) );
-
- childReporting.flushReportPluginMap();
+ ModelUtils.mergeReportPluginLists( childReporting, parentReporting, true );
}
}
- private void mergeReportPlugins( ReportPlugin childReportPlugin, ReportPlugin parentReportPlugin )
- {
- if ( StringUtils.isEmpty( childReportPlugin.getVersion() ) )
- {
- childReportPlugin.setVersion( parentReportPlugin.getVersion() );
- }
-
- Xpp3Dom childConfig = (Xpp3Dom) childReportPlugin.getConfiguration();
- Xpp3Dom parentConfig = (Xpp3Dom) parentReportPlugin.getConfiguration();
-
- childReportPlugin.setConfiguration( Xpp3Dom.mergeXpp3Dom( childConfig, parentConfig ) );
-
- Map mergedReportSets = new HashMap();
-
- Map childReportSetsById = childReportPlugin.getReportSetsAsMap();
-
- for ( Iterator it = parentReportPlugin.getReportSets().iterator(); it.hasNext(); )
- {
- ReportSet parentReportSet = (ReportSet) it.next();
-
- String inherited = parentReportSet.getInherited();
-
- if ( StringUtils.isEmpty( inherited ) || Boolean.valueOf( inherited ).booleanValue() )
- {
- ReportSet childReportSet = (ReportSet) childReportSetsById.get( parentReportSet.getId() );
-
- ReportSet merged = parentReportSet;
-
- if ( childReportSet != null )
- {
- merged = childReportSet;
-
- Xpp3Dom parentRSConfig = (Xpp3Dom) parentReportSet.getConfiguration();
- Xpp3Dom mergedRSConfig = (Xpp3Dom) merged.getConfiguration();
-
- merged.setConfiguration( Xpp3Dom.mergeXpp3Dom( mergedRSConfig, parentRSConfig ) );
-
- List mergedReports = merged.getReports();
-
- if ( mergedReports == null )
- {
- mergedReports = new ArrayList();
-
- merged.setReports( mergedReports );
- }
-
- List parentRSReports = parentReportSet.getReports();
-
- if ( parentRSReports != null )
- {
- for ( Iterator reportIterator = parentRSReports.iterator(); reportIterator.hasNext(); )
- {
- String report = (String) reportIterator.next();
-
- if ( !mergedReports.contains( report ) )
- {
- mergedReports.add( report );
- }
- }
- }
- }
- else if ( StringUtils.isEmpty( inherited ) )
- {
- merged.unsetInheritanceApplied();
- }
-
- mergedReportSets.put( merged.getId(), merged );
- }
- }
-
- for ( Iterator rsIterator = childReportSetsById.entrySet().iterator(); rsIterator.hasNext(); )
- {
- Map.Entry entry = (Map.Entry) rsIterator.next();
-
- String key = (String) entry.getKey();
-
- if ( !mergedReportSets.containsKey( key ) )
- {
- mergedReportSets.put( key, entry.getValue() );
- }
- }
-
- childReportPlugin.setReportSets( new ArrayList( mergedReportSets.values() ) );
-
- childReportPlugin.flushReportSetMap();
- }
-
private void assembleDependencyInheritance( Model child, Model parent )
{
Map depsMap = new HashMap();
-
+
List deps = parent.getDependencies();
-
+
if ( deps != null )
{
for ( Iterator it = deps.iterator(); it.hasNext(); )
@@ -410,9 +276,9 @@
depsMap.put( dependency.getManagementKey(), dependency );
}
}
-
+
deps = child.getDependencies();
-
+
if ( deps != null )
{
for ( Iterator it = deps.iterator(); it.hasNext(); )
@@ -421,13 +287,14 @@
depsMap.put( dependency.getManagementKey(), dependency );
}
}
-
+
child.setDependencies( new ArrayList( depsMap.values() ) );
}
- private void assembleBuildInheritance( Model child, Build parentBuild )
+ private void assembleBuildInheritance( Model child, Model parent )
{
Build childBuild = child.getBuild();
+ Build parentBuild = parent.getBuild();
if ( parentBuild != null )
{
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java?rev=240197&r1=240196&r2=240197&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java Fri Aug 26 02:29:05 2005
@@ -18,10 +18,13 @@
import junit.framework.TestCase;
import org.apache.maven.model.Build;
-import org.apache.maven.model.Goal;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginExecution;
+import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.model.ReportSet;
+import org.apache.maven.model.Reporting;
import org.apache.maven.model.Repository;
import org.apache.maven.model.Resource;
import org.apache.maven.model.Scm;
@@ -382,28 +385,167 @@
assertEquals( "Plugin keys don't match", reference.getKey(), test.getKey() );
assertEquals( "Plugin configurations don't match", reference.getConfiguration(), test.getConfiguration() );
- List referenceGoals = reference.getGoals();
- Map testGoalsMap = test.getGoalsAsMap();
+ List referenceExecutions = reference.getExecutions();
+ Map testExecutionsMap = test.getExecutionsAsMap();
- if ( referenceGoals != null && !referenceGoals.isEmpty() )
+ if ( referenceExecutions != null && !referenceExecutions.isEmpty() )
{
- assertTrue( "Missing goals specification", ( testGoalsMap != null && !testGoalsMap.isEmpty() ) );
+ assertTrue( "Missing goals specification", ( testExecutionsMap != null && !testExecutionsMap.isEmpty() ) );
- for ( Iterator it = referenceGoals.iterator(); it.hasNext(); )
+ for ( Iterator it = referenceExecutions.iterator(); it.hasNext(); )
{
- Goal referenceGoal = (Goal) it.next();
- Goal testGoal = (Goal) testGoalsMap.get( referenceGoal.getId() );
+ PluginExecution referenceExecution = (PluginExecution) it.next();
+ PluginExecution testExecution = (PluginExecution) testExecutionsMap.get( referenceExecution.getId() );
- assertNotNull( "Goal from reference not found in test", testGoal );
+ assertNotNull( "Goal from reference not found in test", testExecution );
- assertEquals( "Goal IDs don't match", referenceGoal.getId(), testGoal.getId() );
- assertEquals( "Goal configurations don't match", referenceGoal.getConfiguration(),
- testGoal.getConfiguration() );
+ assertEquals( "Goal IDs don't match", referenceExecution.getId(), testExecution.getId() );
+ assertEquals( "Goal configurations don't match", referenceExecution.getConfiguration(),
+ testExecution.getConfiguration() );
+ assertEquals( "Goal lists don't match", referenceExecution.getGoals(), testExecution.getGoals() );
}
}
else
{
- assertTrue( "Unexpected goals specification", ( testGoalsMap == null || testGoalsMap.isEmpty() ) );
+ assertTrue( "Unexpected goals specification",
+ ( testExecutionsMap == null || testExecutionsMap.isEmpty() ) );
+ }
+ }
+
+ public void testReportInheritanceWhereParentReportWithoutInheritFlagAndChildHasNoReports()
+ {
+ Model parent = makeBaseModel( "parent" );
+
+ Model child = makeBaseModel( "child" );
+
+ ReportPlugin parentReport = new ReportPlugin();
+ parentReport.setArtifactId( "maven-testInheritance-report-plugin" );
+ parentReport.setGroupId( "org.apache.maven.plugins" );
+ parentReport.setVersion( "1.0" );
+
+ List parentPlugins = Collections.singletonList( parentReport );
+
+ Reporting parentBuild = new Reporting();
+ parentBuild.setPlugins( parentPlugins );
+
+ parent.setReporting( parentBuild );
+
+ assembler.assembleModelInheritance( child, parent );
+
+ assertReports( parentPlugins, child );
+ }
+
+ public void testReportInheritanceWhereParentReportWithTrueInheritFlagAndChildHasNoReports()
+ {
+ Model parent = makeBaseModel( "parent" );
+
+ Model child = makeBaseModel( "child" );
+
+ ReportPlugin parentPlugin = new ReportPlugin();
+ parentPlugin.setArtifactId( "maven-testInheritance2-report-plugin" );
+ parentPlugin.setGroupId( "org.apache.maven.plugins" );
+ parentPlugin.setVersion( "1.0" );
+ parentPlugin.setInherited( "true" );
+
+ List parentPlugins = Collections.singletonList( parentPlugin );
+
+ Reporting parentBuild = new Reporting();
+ parentBuild.setPlugins( parentPlugins );
+
+ parent.setReporting( parentBuild );
+
+ assembler.assembleModelInheritance( child, parent );
+
+ assertReports( parentPlugins, child );
+ }
+
+ public void testReportInheritanceWhereParentReportWithFalseInheritFlagAndChildHasNoReports()
+ {
+ Model parent = makeBaseModel( "parent" );
+
+ Model child = makeBaseModel( "child" );
+
+ ReportPlugin parentPlugin = new ReportPlugin();
+ parentPlugin.setArtifactId( "maven-testInheritance3-report-plugin" );
+ parentPlugin.setGroupId( "org.apache.maven.plugins" );
+ parentPlugin.setVersion( "1.0" );
+ parentPlugin.setInherited( "false" );
+
+ List parentPlugins = Collections.singletonList( parentPlugin );
+
+ Reporting parentBuild = new Reporting();
+ parentBuild.setPlugins( parentPlugins );
+
+ parent.setReporting( parentBuild );
+
+ assembler.assembleModelInheritance( child, parent );
+
+ assertReports( new ArrayList(), child );
+ }
+
+ private void assertReports( List expectedPlugins, Model child )
+ {
+ Reporting childBuild = child.getReporting();
+
+ if ( expectedPlugins != null && !expectedPlugins.isEmpty() )
+ {
+ assertNotNull( childBuild );
+
+ Map childPluginsMap = childBuild.getReportPluginsAsMap();
+
+ if ( childPluginsMap != null )
+ {
+ assertEquals( expectedPlugins.size(), childPluginsMap.size() );
+
+ for ( Iterator it = expectedPlugins.iterator(); it.hasNext(); )
+ {
+ ReportPlugin expectedPlugin = (ReportPlugin) it.next();
+
+ ReportPlugin childPlugin = (ReportPlugin) childPluginsMap.get( expectedPlugin.getKey() );
+
+ assertReportsEqual( expectedPlugin, childPlugin );
+ }
+ }
+ else
+ {
+ fail( "child plugins collection is null, but expectations map is not." );
+ }
+ }
+ else
+ {
+ assertTrue( childBuild == null || childBuild.getPlugins() == null || childBuild.getPlugins().isEmpty() );
+ }
+ }
+
+ private void assertReportsEqual( ReportPlugin reference, ReportPlugin test )
+ {
+ assertEquals( "Plugin keys don't match", reference.getKey(), test.getKey() );
+ assertEquals( "Plugin configurations don't match", reference.getConfiguration(), test.getConfiguration() );
+
+ List referenceReportSets = reference.getReportSets();
+ Map testReportSetsMap = test.getReportSetsAsMap();
+
+ if ( referenceReportSets != null && !referenceReportSets.isEmpty() )
+ {
+ assertTrue( "Missing goals specification", ( testReportSetsMap != null && !testReportSetsMap.isEmpty() ) );
+
+ for ( Iterator it = referenceReportSets.iterator(); it.hasNext(); )
+ {
+ ReportSet referenceReportSet = (ReportSet) it.next();
+ ReportSet testReportSet = (ReportSet) testReportSetsMap.get( referenceReportSet.getId() );
+
+ assertNotNull( "Goal from reference not found in test", testReportSet );
+
+ assertEquals( "Goal IDs don't match", referenceReportSet.getId(), testReportSet.getId() );
+ assertEquals( "Goal configurations don't match", referenceReportSet.getConfiguration(),
+ testReportSet.getConfiguration() );
+ assertEquals( "Reports don't match", referenceReportSet.getReports(), testReportSet.getReports() );
+ }
+ }
+ else
+ {
+ assertTrue( "Unexpected goals specification",
+ ( testReportSetsMap == null || testReportSetsMap.isEmpty() ) );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org