You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/05/25 17:49:45 UTC
svn commit: r778441 - in /maven/components/branches/MNG-2766:
maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
Author: bentmann
Date: Mon May 25 15:49:43 2009
New Revision: 778441
URL: http://svn.apache.org/viewvc?rev=778441&view=rev
Log:
o Removed static processor context and move its remaining bits into the project builder
Removed:
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
Modified:
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=778441&r1=778440&r2=778441&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Mon May 25 15:49:43 2009
@@ -20,6 +20,7 @@
import java.io.Reader;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import org.apache.maven.artifact.Artifact;
@@ -36,15 +37,17 @@
import org.apache.maven.model.DomainModel;
import org.apache.maven.model.Model;
import org.apache.maven.model.ModelEventListener;
-import org.apache.maven.model.ProcessorContext;
import org.apache.maven.model.Profile;
import org.apache.maven.model.Repository;
+import org.apache.maven.model.inheritance.InheritanceAssembler;
import org.apache.maven.model.interpolator.Interpolator;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.model.lifecycle.LifecycleBindingsInjector;
+import org.apache.maven.model.management.ManagementInjector;
import org.apache.maven.model.normalization.ModelNormalizer;
import org.apache.maven.model.plugin.PluginConfigurationExpander;
import org.apache.maven.model.profile.ProfileActivationException;
+import org.apache.maven.model.profile.ProfileInjector;
import org.apache.maven.model.profile.ProfileSelector;
import org.apache.maven.profiles.ProfileManager;
import org.apache.maven.project.validation.ModelValidationResult;
@@ -83,12 +86,21 @@
private ModelNormalizer normalizer;
@Requirement
+ private InheritanceAssembler inheritanceAssembler;
+
+ @Requirement
private Interpolator interpolator;
@Requirement
private ProfileSelector profileSelector;
@Requirement
+ private ProfileInjector profileInjector;
+
+ @Requirement
+ private ManagementInjector managementInjector;
+
+ @Requirement
private LifecycleBindingsInjector lifecycleBindingsInjector;
@Requirement
@@ -152,17 +164,15 @@
try
{
- List<Profile> externalProfiles = new ArrayList<Profile>();
for ( Profile p : projectProfiles )
{
if ( !"pom".equals( p.getSource() ) )
{
- logger.debug( "Merging profile into model (build): Model = " + domainModel.getId() + ", Profile = " + p.getId() );
- externalProfiles.add( p );
+ logger.debug( "Merging profile into model (build): Model = " + domainModel.getId() + ", Profile = "
+ + p.getId() );
+ profileInjector.injectProfile( domainModel.getModel(), p );
}
}
-
- domainModel = ProcessorContext.mergeProfilesIntoModel( externalProfiles, domainModel );
}
catch ( IOException e )
{
@@ -178,7 +188,7 @@
lifecycleBindingsInjector.injectLifecycleBindings( model );
}
- ProcessorContext.processManagementNodes( model );
+ managementInjector.injectManagement( model );
project = this.fromDomainModelToMavenProject( model, domainModel.getParentFile(), configuration, pomFile );
@@ -473,27 +483,103 @@
for ( Profile p : profiles )
{
logger.debug( "Merging profile into model: Model = " + dm.getId() + ", Profile = " + p.getId() );
+ profileInjector.injectProfile( dm.getModel(), p );
}
- profileModels.add( ProcessorContext.mergeProfilesIntoModel( profiles, dm ) );
+ }
+ }
+ profileModels.add( dm );
+ }
+
+ DomainModel transformedDomainModel = build( profileModels, listeners );
+
+ // Lineage count is inclusive to add the POM read in itself.
+ transformedDomainModel.setLineageCount( lineageCount + 1 );
+ transformedDomainModel.setParentFile( parentFile );
+
+ return transformedDomainModel;
+ }
+
+ /**
+ * Parent domain models on bottom.
+ *
+ * @param domainModels
+ * @param listeners
+ * @return
+ * @throws IOException
+ */
+ private DomainModel build( List<DomainModel> domainModels, List<ModelEventListener> listeners )
+ throws IOException
+ {
+ DomainModel child = null;
+ for ( DomainModel domainModel : domainModels )
+ {
+ if ( domainModel.isMostSpecialized() )
+ {
+ child = domainModel;
+ }
+ }
+ if ( child == null )
+ {
+ throw new IOException( "Could not find child model" );
+ }
+
+ Model target = processModelsForInheritance( convertDomainModelsToMavenModels( domainModels ) );
+ if ( listeners != null )
+ {
+ for ( ModelEventListener listener : listeners )
+ {
+ listener.fire( target );
+ }
+ }
+ DomainModel domainModel = new DomainModel( target, child.isMostSpecialized() );
+ domainModel.setProjectDirectory( child.getProjectDirectory() );
+ domainModel.setParentFile( child.getParentFile() );
+
+ return domainModel;
+ }
+
+ private List<Model> convertDomainModelsToMavenModels( List<DomainModel> domainModels )
+ throws IOException
+ {
+ List<Model> models = new ArrayList<Model>();
+ for ( DomainModel domainModel : domainModels )
+ {
+ DomainModel dm = domainModel;
+ if ( dm.getModel() != null )
+ {
+ if ( dm.isMostSpecialized() )
+ {
+ models.add( 0, dm.getModel() );
}
else
{
- profileModels.add( dm );
+ models.add( dm.getModel() );
}
+
}
else
{
- profileModels.add( dm );
+ throw new IOException( "model: null" );
}
+
}
- DomainModel transformedDomainModel = ProcessorContext.build( profileModels, listeners );
+ return models;
+ }
- // Lineage count is inclusive to add the POM read in itself.
- transformedDomainModel.setLineageCount( lineageCount + 1 );
- transformedDomainModel.setParentFile( parentFile );
+ private Model processModelsForInheritance( List<Model> models )
+ {
+ Collections.reverse( models );
- return transformedDomainModel;
+ Model previousModel = null;
+
+ for ( Model currentModel : models )
+ {
+ inheritanceAssembler.assembleModelInheritance( currentModel, previousModel );
+ previousModel = currentModel;
+ }
+
+ return previousModel;
}
private void validateModel( Model model, File pomFile, boolean lenient )