[MNG-1999] fix reporting > excludeDefaults inheritance

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@379311 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Leslie Porter 2006-02-21 02:30:32 +00:00
parent 33e508a29d
commit ad38e46b4b
2 changed files with 68 additions and 39 deletions

View File

@ -16,15 +16,6 @@ package org.apache.maven.project.inheritance;
* limitations under the License. * limitations under the License.
*/ */
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.TreeMap;
import org.apache.maven.model.Build; import org.apache.maven.model.Build;
import org.apache.maven.model.Dependency; import org.apache.maven.model.Dependency;
import org.apache.maven.model.DependencyManagement; import org.apache.maven.model.DependencyManagement;
@ -38,6 +29,15 @@ import org.apache.maven.model.Site;
import org.apache.maven.project.ModelUtils; import org.apache.maven.project.ModelUtils;
import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.TreeMap;
/** /**
* @author <a href="mailto:jason@maven.org">Jason van Zyl </a> * @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
* @version $Id: DefaultModelInheritanceAssembler.java,v 1.4 2004/08/23 20:24:54 * @version $Id: DefaultModelInheritanceAssembler.java,v 1.4 2004/08/23 20:24:54
@ -275,6 +275,8 @@ public class DefaultModelInheritanceAssembler
child.setReporting( childReporting ); child.setReporting( childReporting );
} }
childReporting.setExcludeDefaults( parentReporting.isExcludeDefaults() );
if ( StringUtils.isEmpty( childReporting.getOutputDirectory() ) ) if ( StringUtils.isEmpty( childReporting.getOutputDirectory() ) )
{ {
childReporting.setOutputDirectory( parentReporting.getOutputDirectory() ); childReporting.setOutputDirectory( parentReporting.getOutputDirectory() );
@ -422,25 +424,28 @@ public class DefaultModelInheritanceAssembler
if ( StringUtils.isEmpty( childScm.getConnection() ) && !StringUtils.isEmpty( parentScm.getConnection() ) ) if ( StringUtils.isEmpty( childScm.getConnection() ) && !StringUtils.isEmpty( parentScm.getConnection() ) )
{ {
childScm.setConnection( appendPath( parentScm.getConnection(), child.getArtifactId(), childPathAdjustment, appendPaths ) ); childScm.setConnection(
appendPath( parentScm.getConnection(), child.getArtifactId(), childPathAdjustment, appendPaths ) );
} }
if ( StringUtils.isEmpty( childScm.getDeveloperConnection() ) && if ( StringUtils.isEmpty( childScm.getDeveloperConnection() ) &&
!StringUtils.isEmpty( parentScm.getDeveloperConnection() ) ) !StringUtils.isEmpty( parentScm.getDeveloperConnection() ) )
{ {
childScm childScm
.setDeveloperConnection( .setDeveloperConnection( appendPath( parentScm.getDeveloperConnection(), child.getArtifactId(),
appendPath( parentScm.getDeveloperConnection(), child.getArtifactId(), childPathAdjustment, appendPaths ) ); childPathAdjustment, appendPaths ) );
} }
if ( StringUtils.isEmpty( childScm.getUrl() ) && !StringUtils.isEmpty( parentScm.getUrl() ) ) if ( StringUtils.isEmpty( childScm.getUrl() ) && !StringUtils.isEmpty( parentScm.getUrl() ) )
{ {
childScm.setUrl( appendPath( parentScm.getUrl(), child.getArtifactId(), childPathAdjustment, appendPaths ) ); childScm.setUrl(
appendPath( parentScm.getUrl(), child.getArtifactId(), childPathAdjustment, appendPaths ) );
} }
} }
} }
private void assembleDistributionInheritence( Model child, Model parent, String childPathAdjustment, boolean appendPaths ) private void assembleDistributionInheritence( Model child, Model parent, String childPathAdjustment,
boolean appendPaths )
{ {
if ( parent.getDistributionManagement() != null ) if ( parent.getDistributionManagement() != null )
{ {
@ -471,7 +476,8 @@ public class DefaultModelInheritanceAssembler
if ( site.getUrl() != null ) if ( site.getUrl() != null )
{ {
site.setUrl( appendPath( site.getUrl(), child.getArtifactId(), childPathAdjustment, appendPaths ) ); site.setUrl(
appendPath( site.getUrl(), child.getArtifactId(), childPathAdjustment, appendPaths ) );
} }
} }
} }
@ -517,56 +523,56 @@ public class DefaultModelInheritanceAssembler
protected String appendPath( String parentPath, String childPath, String pathAdjustment, boolean appendPaths ) protected String appendPath( String parentPath, String childPath, String pathAdjustment, boolean appendPaths )
{ {
List pathFragments = new ArrayList(); List pathFragments = new ArrayList();
String rootPath = parentPath; String rootPath = parentPath;
String protocol = null; String protocol = null;
int protocolIdx = rootPath.indexOf( "://" ); int protocolIdx = rootPath.indexOf( "://" );
if ( protocolIdx > -1 ) if ( protocolIdx > -1 )
{ {
protocol = rootPath.substring( 0, protocolIdx + 3 ); protocol = rootPath.substring( 0, protocolIdx + 3 );
rootPath = rootPath.substring( protocolIdx + 3 ); rootPath = rootPath.substring( protocolIdx + 3 );
} }
pathFragments.add( rootPath ); pathFragments.add( rootPath );
if ( appendPaths ) if ( appendPaths )
{ {
if ( pathAdjustment != null ) if ( pathAdjustment != null )
{ {
pathFragments.add( pathAdjustment ); pathFragments.add( pathAdjustment );
} }
pathFragments.add( childPath ); pathFragments.add( childPath );
} }
StringBuffer cleanedPath = new StringBuffer(); StringBuffer cleanedPath = new StringBuffer();
if ( protocol != null ) if ( protocol != null )
{ {
cleanedPath.append( protocol ); cleanedPath.append( protocol );
} }
if ( rootPath.startsWith( "/" ) ) if ( rootPath.startsWith( "/" ) )
{ {
cleanedPath.append( '/' ); cleanedPath.append( '/' );
} }
String lastToken = null; String lastToken = null;
String currentToken = null; String currentToken = null;
for ( Iterator it = pathFragments.iterator(); it.hasNext(); ) for ( Iterator it = pathFragments.iterator(); it.hasNext(); )
{ {
String pathFragment = (String) it.next(); String pathFragment = (String) it.next();
StringTokenizer tokens = new StringTokenizer( pathFragment, "/" ); StringTokenizer tokens = new StringTokenizer( pathFragment, "/" );
while( tokens.hasMoreTokens() ) while ( tokens.hasMoreTokens() )
{ {
lastToken = currentToken; lastToken = currentToken;
currentToken = tokens.nextToken(); currentToken = tokens.nextToken();
if ( "..".equals( currentToken ) ) if ( "..".equals( currentToken ) )
{ {
// trim the previous path part off... // trim the previous path part off...
@ -579,12 +585,12 @@ public class DefaultModelInheritanceAssembler
} }
} }
} }
if ( !childPath.endsWith( "/" ) && appendPaths ) if ( !childPath.endsWith( "/" ) && appendPaths )
{ {
cleanedPath.setLength( cleanedPath.length() - 1 ); cleanedPath.setLength( cleanedPath.length() - 1 );
} }
return cleanedPath.toString(); return cleanedPath.toString();
} }

View File

@ -17,7 +17,6 @@ package org.apache.maven.project.inheritance;
*/ */
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.maven.model.Build; import org.apache.maven.model.Build;
import org.apache.maven.model.Model; import org.apache.maven.model.Model;
import org.apache.maven.model.Parent; import org.apache.maven.model.Parent;
@ -43,17 +42,18 @@ public class DefaultModelInheritanceAssemblerTest
extends TestCase extends TestCase
{ {
private ModelInheritanceAssembler assembler = new DefaultModelInheritanceAssembler(); private ModelInheritanceAssembler assembler = new DefaultModelInheritanceAssembler();
public void testShouldAppendPathWithChildPathAdjustment() public void testShouldAppendPathWithChildPathAdjustment()
{ {
String parentPath = "http://maven.apache.org/shared/maven-shared-parent"; String parentPath = "http://maven.apache.org/shared/maven-shared-parent";
String childPath = "file-management"; String childPath = "file-management";
String pathAdjustment = ".."; String pathAdjustment = "..";
String result = ((DefaultModelInheritanceAssembler) assembler).appendPath( parentPath, childPath, pathAdjustment, true ); String result =
( (DefaultModelInheritanceAssembler) assembler ).appendPath( parentPath, childPath, pathAdjustment, true );
System.out.println( "Resulting path is: \'" + result + "\'" ); System.out.println( "Resulting path is: \'" + result + "\'" );
assertEquals( "Append with path adjustment failed.", "http://maven.apache.org/shared/file-management", result ); assertEquals( "Append with path adjustment failed.", "http://maven.apache.org/shared/file-management", result );
} }
@ -151,8 +151,8 @@ public class DefaultModelInheritanceAssemblerTest
Model artifact1_1 = makeScmModel( "artifact1-1" ); Model artifact1_1 = makeScmModel( "artifact1-1" );
Model artifact2 = makeScmModel( "artifact2", "scm:foo:/scm-root/yay-artifact2", Model artifact2 =
"scm:foo:/scm-dev-root/yay-artifact2", null ); makeScmModel( "artifact2", "scm:foo:/scm-root/yay-artifact2", "scm:foo:/scm-dev-root/yay-artifact2", null );
Model artifact2_1 = makeScmModel( "artifact2-1" ); Model artifact2_1 = makeScmModel( "artifact2-1" );
@ -426,6 +426,29 @@ public class DefaultModelInheritanceAssemblerTest
} }
} }
public void testReportingExcludeDefaultsInheritance()
{
Model parent = makeBaseModel( "parent" );
Model child = makeBaseModel( "child" );
Reporting parentBuild = new Reporting();
parentBuild.setExcludeDefaults( false );
parent.setReporting( parentBuild );
assembler.assembleModelInheritance( child, parent );
assertFalse( "Check excludeDefaults is inherited", child.getReporting().isExcludeDefaults() );
child = makeBaseModel( "child" );
parentBuild.setExcludeDefaults( true );
assembler.assembleModelInheritance( child, parent );
assertTrue( "Check excludeDefaults is inherited", child.getReporting().isExcludeDefaults() );
}
public void testReportInheritanceWhereParentReportWithoutInheritFlagAndChildHasNoReports() public void testReportInheritanceWhereParentReportWithoutInheritFlagAndChildHasNoReports()
{ {
Model parent = makeBaseModel( "parent" ); Model parent = makeBaseModel( "parent" );