Author: jvanzyl Date: Sat Dec 13 22:17:05 2008 New Revision: 726381 URL: http://svn.apache.org/viewvc?rev=726381&view=rev Log: o preparing to refactor the plugin management and plugin executions calculations
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/Interpolator.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/Interpolator.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/Interpolator.java?rev=726381&r1=726380&r2=726381&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/Interpolator.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/Interpolator.java Sat Dec 13 22:17:05 2008 @@ -1,6 +1,3 @@ -/** - * - */ package org.apache.maven.project.builder; import java.io.ByteArrayInputStream; @@ -19,29 +16,27 @@ import org.apache.maven.shared.model.ModelProperty; import org.apache.maven.shared.model.ModelTransformerContext; -public class Interpolator { +public class Interpolator +{ + // Only used by the plugin manager public static String interpolateXmlString( String xml, List<InterpolatorProperty> interpolatorProperties ) - throws IOException + throws IOException { - List<ModelProperty> modelProperties = - ModelMarshaller.marshallXmlToModelProperties( new ByteArrayInputStream(xml.getBytes()), ProjectUri.baseUri, - PomTransformer.URIS ); + List<ModelProperty> modelProperties = ModelMarshaller.marshallXmlToModelProperties( new ByteArrayInputStream( xml.getBytes() ), ProjectUri.baseUri, PomTransformer.URIS ); Map<String, String> aliases = new HashMap<String, String>(); - aliases.put( "project.", "pom."); + aliases.put( "project.", "pom." ); - List<InterpolatorProperty> ips = new ArrayList<InterpolatorProperty>(interpolatorProperties); - ips.addAll(ModelTransformerContext.createInterpolatorProperties(modelProperties, ProjectUri.baseUri, aliases, - PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false)); + List<InterpolatorProperty> ips = new ArrayList<InterpolatorProperty>( interpolatorProperties ); + ips.addAll( ModelTransformerContext.createInterpolatorProperties( modelProperties, ProjectUri.baseUri, aliases, PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false ) ); - for(ModelProperty mp : modelProperties) + for ( ModelProperty mp : modelProperties ) { - if(mp.getUri().startsWith(ProjectUri.properties) && mp.getValue() != null ) + if ( mp.getUri().startsWith( ProjectUri.properties ) && mp.getValue() != null ) { String uri = mp.getUri(); - ips.add( new InterpolatorProperty( "${" + uri.substring( uri.lastIndexOf( "/" ) + 1, - uri.length() ) + "}", mp.getValue() ) ); + ips.add( new InterpolatorProperty( "${" + uri.substring( uri.lastIndexOf( "/" ) + 1, uri.length() ) + "}", mp.getValue() ) ); } } @@ -49,23 +44,22 @@ return ModelMarshaller.unmarshalModelPropertiesToXml( modelProperties, ProjectUri.baseUri ); } - public static String interpolateModelAsString(Model model, List<InterpolatorProperty> interpolatorProperties, File projectDirectory) - throws IOException + private static String interpolateModelAsString( Model model, List<InterpolatorProperty> interpolatorProperties, File projectDirectory ) + throws IOException { PomClassicDomainModel domainModel = new PomClassicDomainModel( model ); domainModel.setProjectDirectory( projectDirectory ); - List<ModelProperty> modelProperties = - ModelMarshaller.marshallXmlToModelProperties( domainModel.getInputStream(), ProjectUri.baseUri, PomTransformer.URIS ); - interpolateModelProperties( modelProperties, interpolatorProperties, domainModel); + List<ModelProperty> modelProperties = ModelMarshaller.marshallXmlToModelProperties( domainModel.getInputStream(), ProjectUri.baseUri, PomTransformer.URIS ); + interpolateModelProperties( modelProperties, interpolatorProperties, domainModel ); return ModelMarshaller.unmarshalModelPropertiesToXml( modelProperties, ProjectUri.baseUri ); } - public static Model interpolateModel(Model model, List<InterpolatorProperty> interpolatorProperties, File projectDirectory) + public static Model interpolateModel( Model model, List<InterpolatorProperty> interpolatorProperties, File projectDirectory ) throws IOException { String pomXml = interpolateModelAsString( model, interpolatorProperties, projectDirectory ); - PomClassicDomainModel domainModel = new PomClassicDomainModel( new ByteArrayInputStream( pomXml.getBytes() )); + PomClassicDomainModel domainModel = new PomClassicDomainModel( new ByteArrayInputStream( pomXml.getBytes() ) ); return domainModel.getModel(); } @@ -79,7 +73,7 @@ static { - aliases.put( "\\$\\{project\\.", "\\$\\{pom\\."); + aliases.put( "\\$\\{project\\.", "\\$\\{pom\\." ); addProjectAlias( "modelVersion", true ); addProjectAlias( "groupId", true ); addProjectAlias( "artifactId", true ); @@ -100,87 +94,81 @@ addProjectAlias( "ciManagement", false ); } - public static void interpolateModelProperties(List<ModelProperty> modelProperties, - List<InterpolatorProperty> interpolatorProperties, - PomClassicDomainModel domainModel) - throws IOException + public static void interpolateModelProperties( List<ModelProperty> modelProperties, List<InterpolatorProperty> interpolatorProperties, PomClassicDomainModel domainModel ) + throws IOException { - if(!containsProjectVersion(interpolatorProperties)) + if ( !containsProjectVersion( interpolatorProperties ) ) { - aliases.put("\\$\\{project.version\\}", "\\$\\{version\\}"); + aliases.put( "\\$\\{project.version\\}", "\\$\\{version\\}" ); } List<ModelProperty> firstPassModelProperties = new ArrayList<ModelProperty>(); List<ModelProperty> secondPassModelProperties = new ArrayList<ModelProperty>(); - ModelProperty buildProperty = new ModelProperty(ProjectUri.Build.xUri, null); - for(ModelProperty mp : modelProperties) + ModelProperty buildProperty = new ModelProperty( ProjectUri.Build.xUri, null ); + for ( ModelProperty mp : modelProperties ) { - if( mp.getValue() != null && !mp.getUri().contains( "#property" ) && !mp.getUri().contains( "#collection" )) + if ( mp.getValue() != null && !mp.getUri().contains( "#property" ) && !mp.getUri().contains( "#collection" ) ) { - if( (!buildProperty.isParentOf( mp ) && !mp.getUri().equals(ProjectUri.Reporting.outputDirectory) - || mp.getUri().equals(ProjectUri.Build.finalName ) )) + if ( ( !buildProperty.isParentOf( mp ) && !mp.getUri().equals( ProjectUri.Reporting.outputDirectory ) || mp.getUri().equals( ProjectUri.Build.finalName ) ) ) { - firstPassModelProperties.add(mp); + firstPassModelProperties.add( mp ); } else { - secondPassModelProperties.add(mp); + secondPassModelProperties.add( mp ); } } } - List<InterpolatorProperty> standardInterpolatorProperties = new ArrayList<InterpolatorProperty>(); - if(domainModel.isPomInBuild()) + if ( domainModel.isPomInBuild() ) { String basedir = domainModel.getProjectDirectory().getAbsolutePath(); - standardInterpolatorProperties.add(new InterpolatorProperty("${project.basedir}", basedir, - PomInterpolatorTag.PROJECT_PROPERTIES.name() )); - standardInterpolatorProperties.add(new InterpolatorProperty("${basedir}", basedir, - PomInterpolatorTag.PROJECT_PROPERTIES.name() )); - standardInterpolatorProperties.add(new InterpolatorProperty("${pom.basedir}", basedir, - PomInterpolatorTag.PROJECT_PROPERTIES.name() )); + standardInterpolatorProperties.add( new InterpolatorProperty( "${project.basedir}", basedir, PomInterpolatorTag.PROJECT_PROPERTIES.name() ) ); + standardInterpolatorProperties.add( new InterpolatorProperty( "${basedir}", basedir, PomInterpolatorTag.PROJECT_PROPERTIES.name() ) ); + standardInterpolatorProperties.add( new InterpolatorProperty( "${pom.basedir}", basedir, PomInterpolatorTag.PROJECT_PROPERTIES.name() ) ); } - for(ModelProperty mp : modelProperties) + for ( ModelProperty mp : modelProperties ) { - if(mp.getUri().startsWith(ProjectUri.properties) && mp.getValue() != null ) + if ( mp.getUri().startsWith( ProjectUri.properties ) && mp.getValue() != null ) { String uri = mp.getUri(); - standardInterpolatorProperties.add( new InterpolatorProperty( "${" + uri.substring( uri.lastIndexOf( "/" ) + 1, - uri.length() ) + "}", mp.getValue(), PomInterpolatorTag.PROJECT_PROPERTIES.name() ) ); + standardInterpolatorProperties.add( new InterpolatorProperty( "${" + uri.substring( uri.lastIndexOf( "/" ) + 1, uri.length() ) + "}", mp.getValue(), + PomInterpolatorTag.PROJECT_PROPERTIES.name() ) ); } } //FIRST PASS - Withhold using build directories as interpolator properties - List<InterpolatorProperty> ips1 = new ArrayList<InterpolatorProperty>(interpolatorProperties); - ips1.addAll(standardInterpolatorProperties); - ips1.addAll(ModelTransformerContext.createInterpolatorProperties(firstPassModelProperties, ProjectUri.baseUri, aliases, - PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false)); - Collections.sort(ips1, new Comparator<InterpolatorProperty>() + List<InterpolatorProperty> ips1 = new ArrayList<InterpolatorProperty>( interpolatorProperties ); + ips1.addAll( standardInterpolatorProperties ); + ips1.addAll( ModelTransformerContext.createInterpolatorProperties( firstPassModelProperties, ProjectUri.baseUri, aliases, PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false ) ); + Collections.sort( ips1, new Comparator<InterpolatorProperty>() { - public int compare(InterpolatorProperty o, InterpolatorProperty o1) { - return PomInterpolatorTag.valueOf(o.getTag()).compareTo(PomInterpolatorTag.valueOf(o1.getTag())); + public int compare( InterpolatorProperty o, InterpolatorProperty o1 ) + { + return PomInterpolatorTag.valueOf( o.getTag() ).compareTo( PomInterpolatorTag.valueOf( o1.getTag() ) ); } - }); + } ); ModelTransformerContext.interpolateModelProperties( modelProperties, ips1 ); //SECOND PASS - Set absolute paths on build directories - if( domainModel.isPomInBuild() ) - { String basedir = domainModel.getProjectDirectory().getAbsolutePath(); + if ( domainModel.isPomInBuild() ) + { + String basedir = domainModel.getProjectDirectory().getAbsolutePath(); Map<ModelProperty, ModelProperty> buildDirectories = new HashMap<ModelProperty, ModelProperty>(); - for(ModelProperty mp : secondPassModelProperties) + for ( ModelProperty mp : secondPassModelProperties ) { - if(mp.getUri().startsWith( ProjectUri.Build.xUri ) || mp.getUri().equals( ProjectUri.Reporting.outputDirectory )) + if ( mp.getUri().startsWith( ProjectUri.Build.xUri ) || mp.getUri().equals( ProjectUri.Reporting.outputDirectory ) ) { File file = new File(mp.getResolvedValue()); if( !file.isAbsolute() && !mp.getResolvedValue().startsWith("${project.build.") && !mp.getResolvedValue().equals("${project.basedir}")) { - buildDirectories.put(mp, new ModelProperty(mp.getUri(), new File(basedir, file.getPath()).getAbsolutePath())); + buildDirectories.put( mp, new ModelProperty( mp.getUri(), new File( basedir, file.getPath() ).getAbsolutePath() ) ); } } } @@ -188,31 +176,30 @@ for ( Map.Entry<ModelProperty, ModelProperty> e : buildDirectories.entrySet() ) { secondPassModelProperties.remove( e.getKey() ); - secondPassModelProperties.add(e.getValue() ); + secondPassModelProperties.add( e.getValue() ); } } //THIRD PASS - Use build directories as interpolator properties - List<InterpolatorProperty> ips2 = new ArrayList<InterpolatorProperty>(interpolatorProperties); - ips2.addAll(standardInterpolatorProperties); - ips2.addAll(ModelTransformerContext.createInterpolatorProperties(secondPassModelProperties, ProjectUri.baseUri, aliases, - PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false)); - ips2.addAll(interpolatorProperties); - Collections.sort(ips2, new Comparator<InterpolatorProperty>() + List<InterpolatorProperty> ips2 = new ArrayList<InterpolatorProperty>( interpolatorProperties ); + ips2.addAll( standardInterpolatorProperties ); + ips2.addAll( ModelTransformerContext.createInterpolatorProperties( secondPassModelProperties, ProjectUri.baseUri, aliases, PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false ) ); + ips2.addAll( interpolatorProperties ); + Collections.sort( ips2, new Comparator<InterpolatorProperty>() { - public int compare(InterpolatorProperty o, InterpolatorProperty o1) { - return PomInterpolatorTag.valueOf(o.getTag()).compareTo(PomInterpolatorTag.valueOf(o1.getTag())); + public int compare( InterpolatorProperty o, InterpolatorProperty o1 ) + { + return PomInterpolatorTag.valueOf( o.getTag() ).compareTo( PomInterpolatorTag.valueOf( o1.getTag() ) ); } - }); + } ); ModelTransformerContext.interpolateModelProperties( modelProperties, ips2 ); } private static boolean containsProjectVersion( List<InterpolatorProperty> interpolatorProperties ) { - InterpolatorProperty versionInterpolatorProperty = - new ModelProperty( ProjectUri.version, "").asInterpolatorProperty( ProjectUri.baseUri); - for( InterpolatorProperty ip : interpolatorProperties) + InterpolatorProperty versionInterpolatorProperty = new ModelProperty( ProjectUri.version, "" ).asInterpolatorProperty( ProjectUri.baseUri ); + for ( InterpolatorProperty ip : interpolatorProperties ) { if ( ip.equals( versionInterpolatorProperty ) ) { Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java?rev=726381&r1=726380&r2=726381&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java Sat Dec 13 22:17:05 2008 @@ -19,10 +19,13 @@ * under the License. */ -import org.apache.maven.shared.model.*; - import java.io.IOException; -import java.util.*; +import java.util.List; + +import org.apache.maven.shared.model.DomainModel; +import org.apache.maven.shared.model.DomainModelFactory; +import org.apache.maven.shared.model.InterpolatorProperty; +import org.apache.maven.shared.model.ModelProperty; /** * Provides methods for transforming model properties into a domain model for the pom classic format and vice versa. @@ -43,6 +46,5 @@ { Interpolator.interpolateModelProperties( modelProperties, interpolatorProperties, (PomClassicDomainModel) domainModel); } - } Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java?rev=726381&r1=726380&r2=726381&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java Sat Dec 13 22:17:05 2008 @@ -81,20 +81,6 @@ } /** - * Constructor - * - * @param artifactFactory the artifact factory - */ - protected DefaultProjectBuilder( ArtifactFactory artifactFactory ) - { - if ( artifactFactory == null ) - { - throw new IllegalArgumentException( "artifactFactory: null" ); - } - this.artifactFactory = artifactFactory; - } - - /** * @see ProjectBuilder#buildFromLocalPath(java.io.InputStream, java.util.List, java.util.Collection, java.util.Collection, org.apache.maven.project.builder.PomArtifactResolver, java.io.File, org.apache.maven.project.ProjectBuilderConfiguration) */ public MavenProject buildFromLocalPath( InputStream pom, List<Model> inheritedModels, @@ -186,8 +172,10 @@ listeners ) ); try { - MavenProject mavenProject = new MavenProject( transformedDomainModel.getModel(), artifactFactory, - mavenTools, null, + MavenProject mavenProject = new MavenProject( transformedDomainModel.getModel(), + artifactFactory, + mavenTools, + null, projectBuilderConfiguration ); mavenProject.setParentFile( parentFile ); return mavenProject; @@ -227,11 +215,6 @@ PomArtifactResolver artifactResolver ) throws IOException { - if ( artifactFactory == null ) - { - throw new IllegalArgumentException( "artifactFactory: not initialized" ); - } - List<DomainModel> domainModels = new ArrayList<DomainModel>(); Parent parent = domainModel.getModel().getParent(); @@ -241,8 +224,8 @@ return domainModels; } - Artifact artifactParent = - artifactFactory.createParentArtifact( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() ); + Artifact artifactParent = artifactFactory.createParentArtifact( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() ); + artifactResolver.resolve( artifactParent ); PomClassicDomainModel parentDomainModel = new PomClassicDomainModel( artifactParent.getFile() ); @@ -273,12 +256,6 @@ File projectDirectory ) throws IOException { - - if ( artifactFactory == null ) - { - throw new IllegalArgumentException( "artifactFactory: not initialized" ); - } - List<DomainModel> domainModels = new ArrayList<DomainModel>(); Parent parent = domainModel.getModel().getParent();