Author: sisbell Date: Wed Mar 25 17:26:55 2009 New Revision: 758357 URL: http://svn.apache.org/viewvc?rev=758357&view=rev Log: [MNG-3811] - Report plugins don't inherit configuration
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java?rev=758357&r1=758356&r2=758357&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java Wed Mar 25 17:26:55 2009 @@ -20,11 +20,14 @@ */ import java.util.ArrayList; +import java.util.List; import org.apache.maven.model.Model; +import org.apache.maven.model.Plugin; import org.apache.maven.model.ReportPlugin; import org.apache.maven.model.ReportSet; import org.apache.maven.model.Reporting; +import org.codehaus.plexus.util.xml.Xpp3Dom; public class ReportingProcessor extends BaseProcessor { @@ -51,9 +54,7 @@ } copy(c.getReporting(), t.getReporting()); - } - - + } } private static void copy(Reporting source, Reporting target) @@ -68,11 +69,67 @@ for ( ReportPlugin plugin : source.getPlugins() ) { - target.addPlugin( copyPlugin( plugin ) ); + ReportPlugin match = contains(plugin, target.getPlugins()); + if(match == null) + { + target.addPlugin( copyNewPlugin( plugin ) ); + } + else + { + copyPluginToPlugin(plugin, match); + } + + } + } + + private static ReportPlugin contains(ReportPlugin plugin, List<ReportPlugin> list) + { + for(ReportPlugin p :list) + { + if(match(p, plugin)) + { + return p; + } + } + return null; + } + + private static void copyPluginToPlugin(ReportPlugin source, ReportPlugin target) + { + if(source.getInherited() != null) + { + target.setInherited( source.getInherited() ); + } + + if(source.getVersion() != null) + { + target.setVersion( source.getVersion() ); + } + + if(source.getConfiguration() != null) + { + if(target.getConfiguration() != null) + { + target.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() )); + } + else + { + target.setConfiguration( source.getConfiguration() ); + } } + + for(ReportSet rs : source.getReportSets()) + { + ReportSet r = new ReportSet(); + r.setId( rs.getId() ); + r.setInherited( rs.getInherited() ); + r.setReports( new ArrayList<String>(rs.getReports()) ); + r.setConfiguration( rs.getConfiguration() ); + target.addReportSet( r ); + } } - private static ReportPlugin copyPlugin(ReportPlugin plugin) + private static ReportPlugin copyNewPlugin(ReportPlugin plugin) { ReportPlugin rp = new ReportPlugin(); rp.setArtifactId( plugin.getArtifactId() ); @@ -92,4 +149,16 @@ } return rp; } + + private static boolean match( ReportPlugin d1, ReportPlugin d2 ) + { + return getId( d1 ).equals( getId( d2 )); + } + + private static String getId( ReportPlugin d ) + { + StringBuilder sb = new StringBuilder(); + sb.append( d.getGroupId() ).append( ":" ).append( d.getArtifactId() ).append( ":" ); + return sb.toString(); + } } Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=758357&r1=758356&r2=758357&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java (original) +++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java Wed Mar 25 17:26:55 2009 @@ -953,6 +953,18 @@ assertEquals( pom.getBasedir().toURI().toString(), pom.getValue( "properties/prop1" ).toString() ); } + /* MNG-3811*/ + public void testReportingPluginConfig() + throws Exception + { + PomTestWrapper pom = buildPom( "reporting-plugin-config/sub" ); + + assertEquals(2, ( (List<?>) pom.getValue( "reporting/plugins[1]/configuration/stringParams" ) ).size()); + assertEquals("parentParam", pom.getValue( "reporting/plugins[1]/configuration/stringParams[1]/stringParam[1]")); + assertEquals("childParam", pom.getValue( "reporting/plugins[1]/configuration/stringParams[1]/stringParam[2]")); + assertEquals("true", pom.getValue( "reporting/plugins[1]/configuration/booleanParam")); + } + public void testCompleteModelWithoutParent() throws Exception {