You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/08/15 19:28:02 UTC

svn commit: r686288 - /maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java

Author: sisbell
Date: Fri Aug 15 10:28:01 2008
New Revision: 686288

URL: http://svn.apache.org/viewvc?rev=686288&view=rev
Log:
Various refactoring.

Modified:
    maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java

Modified: maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=686288&r1=686287&r2=686288&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Fri Aug 15 10:28:01 2008
@@ -29,15 +29,7 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
-import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.model.Build;
-import org.apache.maven.model.DistributionManagement;
-import org.apache.maven.model.Extension;
-import org.apache.maven.model.Model;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.PluginManagement;
-import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.model.*;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.profiles.MavenProfilesBuilder;
 import org.apache.maven.profiles.ProfileManager;
@@ -50,6 +42,8 @@
 import org.apache.maven.project.build.model.ModelLineage;
 import org.apache.maven.project.build.model.ModelLineageBuilder;
 import org.apache.maven.project.build.model.ModelLineageIterator;
+import org.apache.maven.project.builder.PomArtifactResolver;
+import org.apache.maven.project.builder.ProjectBuilder;
 import org.apache.maven.project.inheritance.ModelInheritanceAssembler;
 import org.apache.maven.project.injection.ModelDefaultsInjector;
 import org.apache.maven.project.interpolation.ModelInterpolationException;
@@ -58,8 +52,6 @@
 import org.apache.maven.project.validation.ModelValidationResult;
 import org.apache.maven.project.validation.ModelValidator;
 import org.apache.maven.project.workspace.ProjectWorkspace;
-import org.apache.maven.project.builder.PomArtifactResolver;
-import org.apache.maven.project.builder.ProjectBuilder;
 import org.codehaus.plexus.logging.LogEnabled;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
@@ -110,10 +102,9 @@
  * @version $Id$
  */
 public class DefaultMavenProjectBuilder
-    implements MavenProjectBuilder,
-    Initializable, LogEnabled
-{
-    protected MavenProfilesBuilder profilesBuilder;                        
+        implements MavenProjectBuilder,
+        Initializable, LogEnabled {
+    protected MavenProfilesBuilder profilesBuilder;
 
     protected ArtifactResolver artifactResolver;
 
@@ -146,17 +137,18 @@
 
     private RepositoryHelper repositoryHelper;
 
+    private Logger logger;
+
+
     //DO NOT USE, it is here only for backward compatibility reasons. The existing
     // maven-assembly-plugin (2.2-beta-1) is accessing it via reflection.
 
-// the aspect weaving seems not to work for reflection from plugin.
+    // the aspect weaving seems not to work for reflection from plugin.
     private Map processedProjectCache = new HashMap();
 
+    private static final String MAVEN_MODEL_VERSION = "4.0.0";
 
-    public static final String MAVEN_MODEL_VERSION = "4.0.0";
-
-    public void initialize()
-    {
+    public void initialize() {
         modelReader = new MavenXpp3Reader();
     }
 
@@ -164,173 +156,173 @@
     // MavenProjectBuilder Implementation
     // ----------------------------------------------------------------------
 
-    public MavenProject build( File projectDescriptor,
-                               ArtifactRepository localRepository,
-                               ProfileManager profileManager )
-        throws ProjectBuildingException
-    {
-        ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setLocalRepository( localRepository )
-                                                                                     .setGlobalProfileManager( profileManager );
-
-        return buildFromSourceFileInternal( projectDescriptor, config );
-    }
-
-    public MavenProject build( File projectDescriptor,
-                               ProjectBuilderConfiguration config )
-        throws ProjectBuildingException
-    {
-        return buildFromSourceFileInternal( projectDescriptor, config );
+    public MavenProject build(File projectDescriptor,
+                              ArtifactRepository localRepository,
+                              ProfileManager profileManager)
+            throws ProjectBuildingException {
+        ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setLocalRepository(localRepository)
+                .setGlobalProfileManager(profileManager);
+
+        return build(projectDescriptor, config);
+    }
+
+    public MavenProject build(File projectDescriptor,
+                              ProjectBuilderConfiguration config)
+            throws ProjectBuildingException {
+                MavenProject project = null;//projectWorkspace.getProject( projectDescriptor );
+
+        if (project == null) {
+            Model model = readModelFromLocalPath("unknown", projectDescriptor, new PomArtifactResolver(config.getLocalRepository(),
+                    repositoryHelper.buildArtifactRepositories(getSuperModel()), artifactResolver));
+            project = buildInternal(model,
+                    config,
+                    repositoryHelper.buildArtifactRepositories(getSuperModel()),
+                    projectDescriptor,
+                    STRICT_MODEL_PARSING,
+                    true,
+                    true);
+        }
+        return project;
     }
 
-    /** @deprecated  */
+    /**
+     * @deprecated
+     */
     @Deprecated
-    public MavenProject buildFromRepository( Artifact artifact,
-                                             List remoteArtifactRepositories,
-                                             ArtifactRepository localRepository,
-                                             boolean allowStub )
-        throws ProjectBuildingException
+    public MavenProject buildFromRepository(Artifact artifact,
+                                            List remoteArtifactRepositories,
+                                            ArtifactRepository localRepository,
+                                            boolean allowStub)
+            throws ProjectBuildingException
 
     {
-        return buildFromRepository( artifact, remoteArtifactRepositories, localRepository );
+        return buildFromRepository(artifact, remoteArtifactRepositories, localRepository);
     }
 
 
-    public MavenProject buildFromRepository( Artifact artifact,
-                                             List remoteArtifactRepositories,
-                                             ArtifactRepository localRepository )
-        throws ProjectBuildingException
-    {
+    public MavenProject buildFromRepository(Artifact artifact,
+                                            List remoteArtifactRepositories,
+                                            ArtifactRepository localRepository)
+            throws ProjectBuildingException {
         MavenProject project = null;
-        if ( !Artifact.LATEST_VERSION.equals( artifact.getVersion() ) && !Artifact.RELEASE_VERSION.equals( artifact.getVersion() ) )
-        {
-            project = projectWorkspace.getProject( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
+        if (!Artifact.LATEST_VERSION.equals(artifact.getVersion()) && !Artifact.RELEASE_VERSION.equals(artifact.getVersion())) {
+            project = projectWorkspace.getProject(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion());
         }
 
-        if ( project == null )
-        {
-            Model model = repositoryHelper.findModelFromRepository( artifact, remoteArtifactRepositories, localRepository );
+        if (project == null) {
+            Model model = repositoryHelper.findModelFromRepository(artifact, remoteArtifactRepositories, localRepository);
 
-            ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setLocalRepository( localRepository );
+            ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setLocalRepository(localRepository);
 
-            project = buildInternal( model, config, remoteArtifactRepositories, artifact.getFile(),
-                                  false, false, false );
+            project = buildInternal(model, config, remoteArtifactRepositories, artifact.getFile(),
+                    false, false, false);
         }
 
         return project;
     }
 
-    private Logger logger;
-
     // what is using this externally? jvz.
     public MavenProject buildStandaloneSuperProject()
-        throws ProjectBuildingException
-    {
+            throws ProjectBuildingException {
         //TODO mkleint - use the (Container, Properties) constructor to make system properties embeddable
-        return buildStandaloneSuperProject( new DefaultProjectBuilderConfiguration() );
+        return buildStandaloneSuperProject(new DefaultProjectBuilderConfiguration());
     }
 
-    public MavenProject buildStandaloneSuperProject( ProfileManager profileManager )
-        throws ProjectBuildingException
-    {
+    public MavenProject buildStandaloneSuperProject(ProfileManager profileManager)
+            throws ProjectBuildingException {
         //TODO mkleint - use the (Container, Properties) constructor to make system properties embeddable
-        return buildStandaloneSuperProject( new DefaultProjectBuilderConfiguration().setGlobalProfileManager( profileManager ) );
+        return buildStandaloneSuperProject(new DefaultProjectBuilderConfiguration().setGlobalProfileManager(profileManager));
     }
 
-    public MavenProject buildStandaloneSuperProject( ProjectBuilderConfiguration config )
-        throws ProjectBuildingException
-    {
+    public MavenProject buildStandaloneSuperProject(ProjectBuilderConfiguration config)
+            throws ProjectBuildingException {
         Model superModel = getSuperModel();
 
-        superModel.setGroupId( STANDALONE_SUPERPOM_GROUPID );
+        superModel.setGroupId(STANDALONE_SUPERPOM_GROUPID);
 
-        superModel.setArtifactId( STANDALONE_SUPERPOM_ARTIFACTID );
+        superModel.setArtifactId(STANDALONE_SUPERPOM_ARTIFACTID);
 
-        superModel.setVersion( STANDALONE_SUPERPOM_VERSION );
+        superModel.setVersion(STANDALONE_SUPERPOM_VERSION);
 
-        superModel = ModelUtils.cloneModel( superModel );
+        superModel = ModelUtils.cloneModel(superModel);
 
         ProfileManager profileManager = config.getGlobalProfileManager();
 
         List activeProfiles = new ArrayList();
-        if ( profileManager != null )
-        {
-            List activated = profileAdvisor.applyActivatedProfiles( superModel, null, false, profileManager.getProfileActivationContext() );
-            if ( !activated.isEmpty() )
-            {
-                activeProfiles.addAll( activated );
+        if (profileManager != null) {
+            List activated = profileAdvisor.applyActivatedProfiles(superModel, null, false, profileManager.getProfileActivationContext());
+            if (!activated.isEmpty()) {
+                activeProfiles.addAll(activated);
             }
 
-            activated = profileAdvisor.applyActivatedExternalProfiles( superModel, null, profileManager );
-            if ( !activated.isEmpty() )
-            {
-                activeProfiles.addAll( activated );
+            activated = profileAdvisor.applyActivatedExternalProfiles(superModel, null, profileManager);
+            if (!activated.isEmpty()) {
+                activeProfiles.addAll(activated);
             }
         }
 
-        MavenProject project = new MavenProject( superModel, artifactFactory );
+        MavenProject project = new MavenProject(superModel, artifactFactory);
 
-        getLogger().debug( "Activated the following profiles for standalone super-pom: " + activeProfiles );
-        project.setActiveProfiles( activeProfiles );
+        getLogger().debug("Activated the following profiles for standalone super-pom: " + activeProfiles);
+        project.setActiveProfiles(activeProfiles);
 
-        try
-        {
-            processProjectLogic( project, null, config);
+        try {
+            processProjectLogic(project, null, config);
 
-            project.setRemoteArtifactRepositories( mavenTools.buildArtifactRepositories( superModel.getRepositories() ) );
-            project.setPluginArtifactRepositories( mavenTools.buildArtifactRepositories( superModel.getRepositories() ) );
+            project.setRemoteArtifactRepositories(mavenTools.buildArtifactRepositories(superModel.getRepositories()));
+            project.setPluginArtifactRepositories(mavenTools.buildArtifactRepositories(superModel.getRepositories()));
         }
-        catch ( InvalidRepositoryException e )
-        {
+        catch (InvalidRepositoryException e) {
             // we shouldn't be swallowing exceptions, no matter how unlikely.
             // or, if we do, we should pay attention to the one coming from getSuperModel()...
-            throw new ProjectBuildingException( STANDALONE_SUPERPOM_GROUPID + ":"
-                                             + STANDALONE_SUPERPOM_ARTIFACTID,
-                                                "Maven super-POM contains an invalid repository!",
-                                                e );
+            throw new ProjectBuildingException(STANDALONE_SUPERPOM_GROUPID + ":"
+                    + STANDALONE_SUPERPOM_ARTIFACTID,
+                    "Maven super-POM contains an invalid repository!",
+                    e);
         }
-        catch ( ModelInterpolationException e )
-        {
+        catch (ModelInterpolationException e) {
             // we shouldn't be swallowing exceptions, no matter how unlikely.
             // or, if we do, we should pay attention to the one coming from getSuperModel()...
-            throw new ProjectBuildingException( STANDALONE_SUPERPOM_GROUPID + ":"
-                                             + STANDALONE_SUPERPOM_ARTIFACTID,
-                                                "Maven super-POM contains an invalid expressions!",
-                                                e );
+            throw new ProjectBuildingException(STANDALONE_SUPERPOM_GROUPID + ":"
+                    + STANDALONE_SUPERPOM_ARTIFACTID,
+                    "Maven super-POM contains an invalid expressions!",
+                    e);
         }
 
-        project.setOriginalModel( superModel );
+        project.setOriginalModel(superModel);
 
-        project.setExecutionRoot( true );
+        project.setExecutionRoot(true);
 
         return project;
     }
 
-    /** @since 2.0.x */
-    public MavenProject buildWithDependencies( File projectDescriptor,
-                                               ArtifactRepository localRepository,
-                                               ProfileManager profileManager )
-        throws ProjectBuildingException
-    {
-        return buildProjectWithDependencies( projectDescriptor, localRepository, profileManager ).getProject();
+    /**
+     * @since 2.0.x
+     */
+    public MavenProject buildWithDependencies(File projectDescriptor,
+                                              ArtifactRepository localRepository,
+                                              ProfileManager profileManager)
+            throws ProjectBuildingException {
+        return buildProjectWithDependencies(projectDescriptor, localRepository, profileManager).getProject();
     }
 
-    /** @since 2.1 */
-    public MavenProjectBuildingResult buildProjectWithDependencies( File projectDescriptor,
-                                                             ArtifactRepository localRepository,
-                                                             ProfileManager profileManager )
-        throws ProjectBuildingException
-    {
-        ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setLocalRepository( localRepository )
-                                                                                     .setGlobalProfileManager( profileManager );
-
-        return buildProjectWithDependencies( projectDescriptor, config );
+    /**
+     * @since 2.1
+     */
+    public MavenProjectBuildingResult buildProjectWithDependencies(File projectDescriptor,
+                                                                   ArtifactRepository localRepository,
+                                                                   ProfileManager profileManager)
+            throws ProjectBuildingException {
+        ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setLocalRepository(localRepository)
+                .setGlobalProfileManager(profileManager);
+
+        return buildProjectWithDependencies(projectDescriptor, config);
     }
 
-    public MavenProjectBuildingResult buildProjectWithDependencies( File projectDescriptor,
-                                                                    ProjectBuilderConfiguration config )
-               throws ProjectBuildingException
-   {
-        MavenProject project = build( projectDescriptor, config );
+    public MavenProjectBuildingResult buildProjectWithDependencies(File projectDescriptor,
+                                                                   ProjectBuilderConfiguration config)
+            throws ProjectBuildingException {
+        MavenProject project = build(projectDescriptor, config);
 
         // ----------------------------------------------------------------------
         // Typically when the project builder is being used from maven proper
@@ -346,240 +338,195 @@
 
         Artifact projectArtifact = project.getArtifact();
 
-        String projectId = safeVersionlessKey( project.getGroupId(), project.getArtifactId() );
+        String projectId = safeVersionlessKey(project.getGroupId(), project.getArtifactId());
 
         Map managedVersions = project.getManagedVersionMap();
 
-        try
-        {
-            project.setDependencyArtifacts( project.createArtifacts( artifactFactory, null, null ) );
-        }
-        catch ( InvalidDependencyVersionException e )
-        {
-            throw new ProjectBuildingException( projectId,
-                "Unable to build project due to an invalid dependency version: " +
-                    e.getMessage(), projectDescriptor, e );
+        try {
+            project.setDependencyArtifacts(project.createArtifacts(artifactFactory, null, null));
+        }
+        catch (InvalidDependencyVersionException e) {
+            throw new ProjectBuildingException(projectId,
+                    "Unable to build project due to an invalid dependency version: " +
+                            e.getMessage(), projectDescriptor, e);
         }
 
         ArtifactResolutionRequest request = new ArtifactResolutionRequest()
-            .setArtifact( projectArtifact )
-            .setArtifactDependencies( project.getDependencyArtifacts() )
-            .setLocalRepository( config.getLocalRepository() )
-            .setRemoteRepostories( project.getRemoteArtifactRepositories() )
-            .setManagedVersionMap( managedVersions )
-            .setMetadataSource( artifactMetadataSource );
+                .setArtifact(projectArtifact)
+                .setArtifactDependencies(project.getDependencyArtifacts())
+                .setLocalRepository(config.getLocalRepository())
+                .setRemoteRepostories(project.getRemoteArtifactRepositories())
+                .setManagedVersionMap(managedVersions)
+                .setMetadataSource(artifactMetadataSource);
 
-        ArtifactResolutionResult result = artifactResolver.resolve( request );
+        ArtifactResolutionResult result = artifactResolver.resolve(request);
 
-        project.setArtifacts( result.getArtifacts() );
+        project.setArtifacts(result.getArtifacts());
 
-        return new MavenProjectBuildingResult( project, result );
+        return new MavenProjectBuildingResult(project, result);
+    }
+        public void calculateConcreteState(MavenProject project, ProjectBuilderConfiguration config)
+            throws ModelInterpolationException {
+        new MavenProjectRestorer(pathTranslator, modelInterpolator, getLogger()).calculateConcreteState(project, config);
     }
 
-    private MavenProject buildFromSourceFileInternal( File projectDescriptor,
-                                                      ProjectBuilderConfiguration config )
-        throws ProjectBuildingException
-    {
-        MavenProject project = null;//projectWorkspace.getProject( projectDescriptor );
+    public void restoreDynamicState(MavenProject project, ProjectBuilderConfiguration config)
+            throws ModelInterpolationException {
+        new MavenProjectRestorer(pathTranslator, modelInterpolator, getLogger()).restoreDynamicState(project, config);
+    }
 
-        if ( project == null )
-        {
-            Model model = readModelFromLocalPath( "unknown", projectDescriptor, new PomArtifactResolver(config.getLocalRepository(),
-                    repositoryHelper.buildArtifactRepositories( getSuperModel() ), artifactResolver) );
-            project = buildInternal(model,
-                config,
-                repositoryHelper.buildArtifactRepositories( getSuperModel() ),
-                projectDescriptor,
-                STRICT_MODEL_PARSING,
-                true,
-                true );
-        }
-        return project;
+    public void enableLogging(Logger logger) {
+        this.logger = logger;
     }
 
+    private Logger getLogger() {
+        return logger;
+    }
+
+
     // jvz:note
     // We've got a mixture of things going in the USD and from the repository, sometimes the descriptor
     // is a real file and sometimes null which makes things confusing.
-    private MavenProject buildInternal( Model model,
-                                        ProjectBuilderConfiguration config,
-                                        List parentSearchRepositories,
-                                        File projectDescriptor,
-                                        boolean strict,
-                                        boolean isReactorProject,
-                                        boolean fromSourceTree )
-        throws ProjectBuildingException
-    {
+    private MavenProject buildInternal(Model model,
+                                       ProjectBuilderConfiguration config,
+                                       List parentSearchRepositories,
+                                       File projectDescriptor,
+                                       boolean strict,
+                                       boolean isReactorProject,
+                                       boolean fromSourceTree)
+            throws ProjectBuildingException {
 
-        MavenProject superProject = new MavenProject( getSuperModel(), artifactFactory );
+        MavenProject superProject = new MavenProject(getSuperModel(), artifactFactory);
 
-        String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() );
+        String projectId = safeVersionlessKey(model.getGroupId(), model.getArtifactId());
 
         // FIXME: Find a way to pass in this context, so it's never null!
         ProfileActivationContext profileActivationContext;
 
         ProfileManager externalProfileManager = config.getGlobalProfileManager();
-        if ( externalProfileManager != null )
-        {
+        if (externalProfileManager != null) {
             // used to trigger the caching of SystemProperties in the container context...
-            try
-            {
+            try {
                 externalProfileManager.getActiveProfiles();
             }
-            catch ( ProfileActivationException e )
-            {
-                throw new ProjectBuildingException( projectId, "Failed to activate external profiles.", projectDescriptor, e );
+            catch (ProfileActivationException e) {
+                throw new ProjectBuildingException(projectId, "Failed to activate external profiles.", projectDescriptor, e);
             }
 
             profileActivationContext = externalProfileManager.getProfileActivationContext();
-        }
-        else
-        {
-            profileActivationContext = new DefaultProfileActivationContext( config.getExecutionProperties(), false );
+        } else {
+            profileActivationContext = new DefaultProfileActivationContext(config.getExecutionProperties(), false);
         }
 
         LinkedHashSet activeInSuperPom = new LinkedHashSet();
-        List activated = profileAdvisor.applyActivatedProfiles( getSuperModel(), projectDescriptor, isReactorProject, profileActivationContext );
-        if ( !activated.isEmpty() )
-        {
-            activeInSuperPom.addAll( activated );
+        List activated = profileAdvisor.applyActivatedProfiles(getSuperModel(), projectDescriptor, isReactorProject, profileActivationContext);
+        if (!activated.isEmpty()) {
+            activeInSuperPom.addAll(activated);
         }
 
-        activated = profileAdvisor.applyActivatedExternalProfiles( getSuperModel(), projectDescriptor, externalProfileManager );
-        if ( !activated.isEmpty() )
-        {
-            activeInSuperPom.addAll( activated );
+        activated = profileAdvisor.applyActivatedExternalProfiles(getSuperModel(), projectDescriptor, externalProfileManager);
+        if (!activated.isEmpty()) {
+            activeInSuperPom.addAll(activated);
         }
 
-        superProject.setActiveProfiles( activated );
+        superProject.setActiveProfiles(activated);
 
         //noinspection CollectionDeclaredAsConcreteClass
         LinkedList lineage = new LinkedList();
 
-        LinkedHashSet aggregatedRemoteWagonRepositories = repositoryHelper.collectInitialRepositories( model, getSuperModel(),
-            parentSearchRepositories,
-            projectDescriptor,
-            isReactorProject,
-            profileActivationContext );
+        LinkedHashSet aggregatedRemoteWagonRepositories = repositoryHelper.collectInitialRepositories(model, getSuperModel(),
+                parentSearchRepositories,
+                projectDescriptor,
+                isReactorProject,
+                profileActivationContext);
 
-        Model originalModel = ModelUtils.cloneModel( model );
+        Model originalModel = ModelUtils.cloneModel(model);
 
         MavenProject project;
 
-        try
-        {
-            project = assembleLineage( model, lineage, config, projectDescriptor, aggregatedRemoteWagonRepositories, strict, isReactorProject );
+        try {
+            project = assembleLineage(model, lineage, config, projectDescriptor, aggregatedRemoteWagonRepositories, strict, isReactorProject);
         }
-        catch ( InvalidRepositoryException e )
-        {
-            throw new ProjectBuildingException( projectId, e.getMessage(), e );
+        catch (InvalidRepositoryException e) {
+            throw new ProjectBuildingException(projectId, e.getMessage(), e);
         }
 
-        project.setOriginalModel( originalModel );
+        project.setOriginalModel(originalModel);
 
         // we don't have to force the collision exception for superModel here, it's already been done in getSuperModel()
         MavenProject previousProject = superProject;
 
         Model previous = superProject.getModel();
 
-        for ( Iterator i = lineage.iterator(); i.hasNext(); )
-        {
+        for (Iterator i = lineage.iterator(); i.hasNext();) {
             MavenProject currentProject = (MavenProject) i.next();
 
             Model current = currentProject.getModel();
 
             String pathAdjustment = null;
 
-            try
-            {
-                pathAdjustment = previousProject.getModulePathAdjustment( currentProject );
+            try {
+                pathAdjustment = previousProject.getModulePathAdjustment(currentProject);
             }
-            catch ( IOException e )
-            {
+            catch (IOException e) {
                 getLogger().debug(
-                    "Cannot determine whether " + currentProject.getId() + " is a module of " + previousProject.getId() + ". Reason: " + e.getMessage(),
-                    e );
+                        "Cannot determine whether " + currentProject.getId() + " is a module of " + previousProject.getId() + ". Reason: " + e.getMessage(),
+                        e);
             }
 
-            modelInheritanceAssembler.assembleModelInheritance( current, previous, pathAdjustment );
+            modelInheritanceAssembler.assembleModelInheritance(current, previous, pathAdjustment);
 
             previous = current;
             previousProject = currentProject;
         }
 
         // only add the super repository if it wasn't overridden by a profile or project
-        List repositories = new ArrayList( aggregatedRemoteWagonRepositories );
+        List repositories = new ArrayList(aggregatedRemoteWagonRepositories);
 
-        List superRepositories = repositoryHelper.buildArtifactRepositories( getSuperModel() );
+        List superRepositories = repositoryHelper.buildArtifactRepositories(getSuperModel());
 
-        for ( Iterator i = superRepositories.iterator(); i.hasNext(); )
-        {
+        for (Iterator i = superRepositories.iterator(); i.hasNext();) {
             ArtifactRepository repository = (ArtifactRepository) i.next();
 
-            if ( !repositories.contains( repository ) )
-            {
-                repositories.add( repository );
+            if (!repositories.contains(repository)) {
+                repositories.add(repository);
             }
         }
 
         // merge any duplicated plugin definitions together, using the first appearance as the dominant one.
-        ModelUtils.mergeDuplicatePluginDefinitions( project.getModel().getBuild() );
+        ModelUtils.mergeDuplicatePluginDefinitions(project.getModel().getBuild());
 
-        try
-        {
-            project = processProjectLogic( project, projectDescriptor, config);
+        try {
+            project = processProjectLogic(project, projectDescriptor, config);
         }
-        catch ( ModelInterpolationException e )
-        {
-            throw new InvalidProjectModelException( projectId, e.getMessage(), projectDescriptor, e );
+        catch (ModelInterpolationException e) {
+            throw new InvalidProjectModelException(projectId, e.getMessage(), projectDescriptor, e);
         }
-        catch ( InvalidRepositoryException e )
-        {
-            throw new InvalidProjectModelException( projectId, e.getMessage(), projectDescriptor, e );
+        catch (InvalidRepositoryException e) {
+            throw new InvalidProjectModelException(projectId, e.getMessage(), projectDescriptor, e);
         }
 
-        if ( fromSourceTree )
-        {
+        if (fromSourceTree) {
             Build build = project.getBuild();
 
             // NOTE: setting this script-source root before path translation, because
             // the plugin tools compose basedir and scriptSourceRoot into a single file.
-            project.addScriptSourceRoot( build.getScriptSourceDirectory() );
+            project.addScriptSourceRoot(build.getScriptSourceDirectory());
 
-            project.addCompileSourceRoot( build.getSourceDirectory() );
+            project.addCompileSourceRoot(build.getSourceDirectory());
 
-            project.addTestCompileSourceRoot( build.getTestSourceDirectory() );
+            project.addTestCompileSourceRoot(build.getTestSourceDirectory());
 
             // Only track the file of a POM in the source tree
-            project.setFile( projectDescriptor );
+            project.setFile(projectDescriptor);
         }
 
-        projectWorkspace.storeProjectByCoordinate( project );
-        projectWorkspace.storeProjectByFile( project );
+        projectWorkspace.storeProjectByCoordinate(project);
+        projectWorkspace.storeProjectByFile(project);
 
         return project;
     }
 
-
-    private String safeVersionlessKey( String groupId,
-                                       String artifactId )
-    {
-        String gid = groupId;
-
-        if ( StringUtils.isEmpty( gid ) )
-        {
-            gid = "unknown";
-        }
-
-        String aid = artifactId;
-
-        if ( StringUtils.isEmpty( aid ) )
-        {
-            aid = "unknown";
-        }
-
-        return ArtifactUtils.versionlessKey( gid, aid );
-    }
-
     /**
      * @todo can this take in a model instead of a project and still be successful?
      * @todo In fact, does project REALLY need a MavenProject as a parent? Couldn't it have just a wrapper around a
@@ -591,29 +538,27 @@
                                              File pomFile,
                                              ProjectBuilderConfiguration config
     )
-        throws ProjectBuildingException, ModelInterpolationException, InvalidRepositoryException
-    {
+            throws ProjectBuildingException, ModelInterpolationException, InvalidRepositoryException {
         Model model = project.getModel();
 
         List activeProfiles = project.getActiveProfiles();
 
         File projectDir = null;
 
-        if ( pomFile != null )
-        {
+        if (pomFile != null) {
             projectDir = pomFile.getAbsoluteFile().getParentFile();
         }
 
         Build dynamicBuild = model.getBuild();
-        model.setBuild( ModelUtils.cloneBuild( dynamicBuild ) );
+        model.setBuild(ModelUtils.cloneBuild(dynamicBuild));
 
-        model = modelInterpolator.interpolate( model, projectDir, config, getLogger().isDebugEnabled() );
+        model = modelInterpolator.interpolate(model, projectDir, config, getLogger().isDebugEnabled());
 
-        mergeDeterministicBuildElements( model.getBuild(), dynamicBuild );
-        model.setBuild( dynamicBuild );
+        mergeDeterministicBuildElements(model.getBuild(), dynamicBuild);
+        model.setBuild(dynamicBuild);
 
         // interpolation is before injection, because interpolation is off-limits in the injected variables
-        modelDefaultsInjector.injectDefaults( model );
+        modelDefaultsInjector.injectDefaults(model);
 
         MavenProject parentProject = project.getParent();
 
@@ -622,59 +567,52 @@
         Artifact parentArtifact = project.getParentArtifact();
 
         // We will return a different project object using the new model (hence the need to return a project, not just modify the parameter)
-        project = new MavenProject( model, artifactFactory );
+        project = new MavenProject(model, artifactFactory);
 
-        project.setOriginalModel( originalModel );
+        project.setOriginalModel(originalModel);
 
-        project.setActiveProfiles( activeProfiles );
+        project.setActiveProfiles(activeProfiles);
 
         // TODO: such a call in MavenMetadataSource too - packaging not really the intention of type
         // TODO: maybe not strictly correct, while we should enfore that packaging has a type handler of the same id, we don't
-        Artifact projectArtifact = artifactFactory.createBuildArtifact( project.getGroupId(), project.getArtifactId(),
-            project.getVersion(), project.getPackaging() );
-        project.setArtifact( projectArtifact );
+        Artifact projectArtifact = artifactFactory.createBuildArtifact(project.getGroupId(), project.getArtifactId(),
+                project.getVersion(), project.getPackaging());
+        project.setArtifact(projectArtifact);
 
         DistributionManagement dm = model.getDistributionManagement();
 
-        if ( dm != null )
-        {
-            ArtifactRepository repo = mavenTools.buildDeploymentArtifactRepository( dm.getRepository() );
-            project.setReleaseArtifactRepository( repo );
+        if (dm != null) {
+            ArtifactRepository repo = mavenTools.buildDeploymentArtifactRepository(dm.getRepository());
+            project.setReleaseArtifactRepository(repo);
 
-            if ( dm.getSnapshotRepository() != null )
-            {
-                repo = mavenTools.buildDeploymentArtifactRepository( dm.getSnapshotRepository() );
-                project.setSnapshotArtifactRepository( repo );
+            if (dm.getSnapshotRepository() != null) {
+                repo = mavenTools.buildDeploymentArtifactRepository(dm.getSnapshotRepository());
+                project.setSnapshotArtifactRepository(repo);
             }
         }
 
-        project.setParent( parentProject );
+        project.setParent(parentProject);
 
-        if ( parentProject != null )
-        {
-            project.setParentArtifact( parentArtifact );
+        if (parentProject != null) {
+            project.setParentArtifact(parentArtifact);
         }
 
-        validateModel( model, pomFile );
+        validateModel(model, pomFile);
 
-        try
-        {
+        try {
             LinkedHashSet repoSet = new LinkedHashSet();
-            if ( ( model.getRepositories() != null ) && !model.getRepositories().isEmpty() )
-            {
-                repoSet.addAll( model.getRepositories() );
+            if ((model.getRepositories() != null) && !model.getRepositories().isEmpty()) {
+                repoSet.addAll(model.getRepositories());
             }
 
-            if ( ( model.getPluginRepositories() != null ) && !model.getPluginRepositories().isEmpty() )
-            {
-                repoSet.addAll( model.getPluginRepositories() );
+            if ((model.getPluginRepositories() != null) && !model.getPluginRepositories().isEmpty()) {
+                repoSet.addAll(model.getPluginRepositories());
             }
 
             project.setRemoteArtifactRepositories(
-                                                  mavenTools.buildArtifactRepositories( new ArrayList( repoSet ) ) );
+                    mavenTools.buildArtifactRepositories(new ArrayList(repoSet)));
         }
-        catch( Exception e )
-        {
+        catch (Exception e) {
             e.printStackTrace();
         }
 
@@ -683,259 +621,216 @@
 
     // TODO: Remove this!
     @SuppressWarnings("unchecked")
-    private void mergeDeterministicBuildElements( Build interpolatedBuild,
-                                                  Build dynamicBuild )
-    {
+    private void mergeDeterministicBuildElements(Build interpolatedBuild,
+                                                 Build dynamicBuild) {
         List<Plugin> dPlugins = dynamicBuild.getPlugins();
 
-        if ( dPlugins != null )
-        {
+        if (dPlugins != null) {
             List<Plugin> iPlugins = interpolatedBuild.getPlugins();
 
-            for ( int i = 0; i < dPlugins.size(); i++ )
-            {
-                Plugin dPlugin = dPlugins.get( i );
-                Plugin iPlugin = iPlugins.get( i );
-
-                dPlugin.setGroupId( iPlugin.getGroupId() );
-                dPlugin.setArtifactId( iPlugin.getArtifactId() );
-                dPlugin.setVersion( iPlugin.getVersion() );
-                
-                dPlugin.setDependencies( iPlugin.getDependencies() );
+            for (int i = 0; i < dPlugins.size(); i++) {
+                Plugin dPlugin = dPlugins.get(i);
+                Plugin iPlugin = iPlugins.get(i);
+
+                dPlugin.setGroupId(iPlugin.getGroupId());
+                dPlugin.setArtifactId(iPlugin.getArtifactId());
+                dPlugin.setVersion(iPlugin.getVersion());
+
+                dPlugin.setDependencies(iPlugin.getDependencies());
             }
         }
 
         PluginManagement dPluginMgmt = dynamicBuild.getPluginManagement();
 
-        if ( dPluginMgmt != null )
-        {
+        if (dPluginMgmt != null) {
             PluginManagement iPluginMgmt = interpolatedBuild.getPluginManagement();
             dPlugins = dPluginMgmt.getPlugins();
-            if ( dPlugins != null )
-            {
+            if (dPlugins != null) {
                 List<Plugin> iPlugins = iPluginMgmt.getPlugins();
 
-                for ( int i = 0; i < dPlugins.size(); i++ )
-                {
-                    Plugin dPlugin = dPlugins.get( i );
-                    Plugin iPlugin = iPlugins.get( i );
-
-                    dPlugin.setGroupId( iPlugin.getGroupId() );
-                    dPlugin.setArtifactId( iPlugin.getArtifactId() );
-                    dPlugin.setVersion( iPlugin.getVersion() );
-                    
-                    dPlugin.setDependencies( iPlugin.getDependencies() );
+                for (int i = 0; i < dPlugins.size(); i++) {
+                    Plugin dPlugin = dPlugins.get(i);
+                    Plugin iPlugin = iPlugins.get(i);
+
+                    dPlugin.setGroupId(iPlugin.getGroupId());
+                    dPlugin.setArtifactId(iPlugin.getArtifactId());
+                    dPlugin.setVersion(iPlugin.getVersion());
+
+                    dPlugin.setDependencies(iPlugin.getDependencies());
                 }
             }
         }
 
-        if ( dynamicBuild.getExtensions() != null )
-        {
-            dynamicBuild.setExtensions( interpolatedBuild.getExtensions() );
+        if (dynamicBuild.getExtensions() != null) {
+            dynamicBuild.setExtensions(interpolatedBuild.getExtensions());
         }
     }
 
-    public void calculateConcreteState( MavenProject project, ProjectBuilderConfiguration config )
-        throws ModelInterpolationException
-    {
-        new MavenProjectRestorer(pathTranslator, modelInterpolator, getLogger()).calculateConcreteState(project, config);
-    }
-
-    public void restoreDynamicState( MavenProject project, ProjectBuilderConfiguration config )
-        throws ModelInterpolationException
-    {
-        new MavenProjectRestorer(pathTranslator, modelInterpolator, getLogger()).restoreDynamicState(project, config);
-    }
-
     /**
      * @param isReactorProject
      * @noinspection CollectionDeclaredAsConcreteClass
      * @todo We need to find an effective way to unit test parts of this method!
      * @todo Refactor this into smaller methods with discrete purposes.
      */
-    private MavenProject assembleLineage( Model model,
-                                          LinkedList lineage,
-                                          ProjectBuilderConfiguration config,
-                                          File pomFile,
-                                          Set aggregatedRemoteWagonRepositories,
-                                          boolean strict,
-                                          boolean isReactorProject )
-        throws ProjectBuildingException, InvalidRepositoryException
-    {
+    private MavenProject assembleLineage(Model model,
+                                         LinkedList lineage,
+                                         ProjectBuilderConfiguration config,
+                                         File pomFile,
+                                         Set aggregatedRemoteWagonRepositories,
+                                         boolean strict,
+                                         boolean isReactorProject)
+            throws ProjectBuildingException, InvalidRepositoryException {
         ModelLineage modelLineage = new DefaultModelLineage();
 
-        modelLineage.setOrigin( model, pomFile, new ArrayList( aggregatedRemoteWagonRepositories ), isReactorProject );
+        modelLineage.setOrigin(model, pomFile, new ArrayList(aggregatedRemoteWagonRepositories), isReactorProject);
 
-        modelLineageBuilder.resumeBuildingModelLineage( modelLineage, config, !strict, isReactorProject );
+        modelLineageBuilder.resumeBuildingModelLineage(modelLineage, config, !strict, isReactorProject);
 
         // FIXME: Find a way to pass in this context, so it's never null!
         ProfileActivationContext profileActivationContext;
         ProfileManager externalProfileManager = config.getGlobalProfileManager();
 
-        if ( externalProfileManager != null )
-        {
+        if (externalProfileManager != null) {
             profileActivationContext = externalProfileManager.getProfileActivationContext();
-        }
-        else
-        {
-            profileActivationContext = new DefaultProfileActivationContext( config.getExecutionProperties(), false );
+        } else {
+            profileActivationContext = new DefaultProfileActivationContext(config.getExecutionProperties(), false);
         }
 
         MavenProject lastProject = null;
-        for ( ModelLineageIterator it = modelLineage.lineageIterator(); it.hasNext(); )
-        {
+        for (ModelLineageIterator it = modelLineage.lineageIterator(); it.hasNext();) {
             Model currentModel = (Model) it.next();
 
             File currentPom = it.getPOMFile();
 
-            MavenProject project = new MavenProject( currentModel, artifactFactory );
-            project.setFile( currentPom );
+            MavenProject project = new MavenProject(currentModel, artifactFactory);
+            project.setFile(currentPom);
 
-            if ( lastProject != null )
-            {
+            if (lastProject != null) {
                 // TODO: Use cached parent project here, and stop looping, if possible...
-                lastProject.setParent( project );
+                lastProject.setParent(project);
                 project = lastProject.getParent();
 
-                lastProject.setParentArtifact( artifactFactory.createParentArtifact( project.getGroupId(), project
-                    .getArtifactId(), project.getVersion() ) );
+                lastProject.setParentArtifact(artifactFactory.createParentArtifact(project.getGroupId(), project
+                        .getArtifactId(), project.getVersion()));
             }
 
             // NOTE: the caching aspect may replace the parent project instance, so we apply profiles here.
             // TODO: Review this...is that a good idea, to allow application of profiles when other profiles could have been applied already?
-            project.setActiveProfiles( profileAdvisor.applyActivatedProfiles( project.getModel(), project.getFile(), isReactorProject, profileActivationContext ) );
+            project.setActiveProfiles(profileAdvisor.applyActivatedProfiles(project.getModel(), project.getFile(), isReactorProject, profileActivationContext));
 
-            lineage.addFirst( project );
+            lineage.addFirst(project);
 
             lastProject = project;
         }
 
         MavenProject result = (MavenProject) lineage.getLast();
 
-        if ( externalProfileManager != null )
-        {
+        if (externalProfileManager != null) {
             LinkedHashSet active = new LinkedHashSet();
 
             List existingActiveProfiles = result.getActiveProfiles();
-            if ( ( existingActiveProfiles != null ) && !existingActiveProfiles.isEmpty() )
-            {
-                active.addAll( existingActiveProfiles );
+            if ((existingActiveProfiles != null) && !existingActiveProfiles.isEmpty()) {
+                active.addAll(existingActiveProfiles);
             }
 
-            profileAdvisor.applyActivatedExternalProfiles( result.getModel(), pomFile, externalProfileManager );
+            profileAdvisor.applyActivatedExternalProfiles(result.getModel(), pomFile, externalProfileManager);
         }
 
         return result;
     }
 
-
-    private void checkModelVersion( String modelSource,
-                                    String projectId,
-                                    File file )
-        throws InvalidProjectModelException
-    {
-        if ( modelSource.indexOf( "<modelVersion>" + MAVEN_MODEL_VERSION ) < 0 )
-        {
-            throw new InvalidProjectModelException( projectId, "Not a v" + MAVEN_MODEL_VERSION + " POM.", file );
-        }
-    }
-
-    // ----------------------------------------------------------------------
-    //
-    // ----------------------------------------------------------------------
-
     private Model superModel;
 
     private Model getSuperModel()
-        throws ProjectBuildingException
-    {
-        if ( superModel != null )
-        {
+            throws ProjectBuildingException {
+        if (superModel != null) {
             return superModel;
         }
 
-        URL url = DefaultMavenProjectBuilder.class.getResource( "pom-" + MAVEN_MODEL_VERSION + ".xml" );
+        URL url = DefaultMavenProjectBuilder.class.getResource("pom-" + MAVEN_MODEL_VERSION + ".xml");
 
-        String projectId = safeVersionlessKey( STANDALONE_SUPERPOM_GROUPID, STANDALONE_SUPERPOM_ARTIFACTID );
+        String projectId = safeVersionlessKey(STANDALONE_SUPERPOM_GROUPID, STANDALONE_SUPERPOM_ARTIFACTID);
 
         Reader reader = null;
-        try
-        {
-            reader = ReaderFactory.newXmlReader( url.openStream() );
-            String modelSource = IOUtil.toString( reader );
+        try {
+            reader = ReaderFactory.newXmlReader(url.openStream());
+            String modelSource = IOUtil.toString(reader);
 
-            checkModelVersion( modelSource, projectId, null );
+            if (modelSource.indexOf("<modelVersion>" + MAVEN_MODEL_VERSION) < 0) {
+                throw new InvalidProjectModelException(projectId, "Not a v" + MAVEN_MODEL_VERSION + " POM.", new File("."));
+            }
 
-            StringReader sReader = new StringReader( modelSource );
+            StringReader sReader = new StringReader(modelSource);
 
-            superModel = modelReader.read( sReader, STRICT_MODEL_PARSING );
+            superModel = modelReader.read(sReader, STRICT_MODEL_PARSING);
             return superModel;
         }
-        catch ( XmlPullParserException e )
-        {
-            throw new InvalidProjectModelException( projectId, "Parse error reading POM. Reason: " + e.getMessage(), e );
+        catch (XmlPullParserException e) {
+            throw new InvalidProjectModelException(projectId, "Parse error reading POM. Reason: " + e.getMessage(), e);
         }
-        catch ( IOException e )
-        {
-            throw new ProjectBuildingException( projectId, "Failed build model from URL \'" + url.toExternalForm() +
-                "\'\nError: \'" + e.getLocalizedMessage() + "\'", e );
+        catch (IOException e) {
+            throw new ProjectBuildingException(projectId, "Failed build model from URL \'" + url.toExternalForm() +
+                    "\'\nError: \'" + e.getLocalizedMessage() + "\'", e);
         }
-        finally
-        {
-            IOUtil.close( reader );
+        finally {
+            IOUtil.close(reader);
         }
     }
 
-    protected Logger getLogger()
-    {
-        return logger;
-    }
+    private Model readModelFromLocalPath(String projectId,
+                                         File projectDescriptor,
+                                         PomArtifactResolver resolver)
+            throws ProjectBuildingException {
+        if (projectDescriptor == null) {
+            throw new IllegalArgumentException("projectDescriptor: null, Project Id =" + projectId);
+        }
+
+        if (projectBuilder == null) {
+            throw new IllegalArgumentException("projectBuilder: not initialized");
+        }
+
+        MavenProject mavenProject;
+        try {
+            mavenProject = projectBuilder.buildFromLocalPath(new FileInputStream(projectDescriptor),
+                    null, null, null, resolver,
+                    projectDescriptor.getParentFile());
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new ProjectBuildingException(projectId, "File = " + projectDescriptor.getAbsolutePath(), e);
+        }
+
+        return mavenProject.getModel();
 
-    public void enableLogging( Logger logger )
-    {
-        this.logger = logger;
     }
 
-    private Model readModelFromLocalPath( String projectId,
-                            File projectDescriptor,
-                            PomArtifactResolver resolver )
-       throws ProjectBuildingException
-   {
-       if(projectDescriptor == null) {
-           throw new IllegalArgumentException("projectDescriptor: null, Project Id =" + projectId);
-       }
-
-       if(projectBuilder == null) {
-           throw new IllegalArgumentException("projectBuilder: not initialized");
-       }
-
-       MavenProject mavenProject;
-       try {
-           mavenProject = projectBuilder.buildFromLocalPath(new FileInputStream(projectDescriptor),
-                   null, null, null, resolver,
-                   projectDescriptor.getParentFile());
-       } catch (IOException e) {
-           e.printStackTrace();
-           throw new ProjectBuildingException(projectId, "File = " + projectDescriptor.getAbsolutePath() , e);
-       }
-
-      return mavenProject.getModel();
-
-   }
-
-    private void validateModel( Model model,
-                                File pomFile )
-        throws InvalidProjectModelException
-    {
+    private void validateModel(Model model,
+                               File pomFile)
+            throws InvalidProjectModelException {
         // Must validate before artifact construction to make sure dependencies are good
-        ModelValidationResult validationResult = validator.validate( model );
+        ModelValidationResult validationResult = validator.validate(model);
+
+        String projectId = safeVersionlessKey(model.getGroupId(), model.getArtifactId());
+
+        if (validationResult.getMessageCount() > 0) {
+            throw new InvalidProjectModelException(projectId, "Failed to validate POM", pomFile,
+                    validationResult);
+        }
+    }
+
+    private static String safeVersionlessKey(String groupId,
+                                      String artifactId) {
+        String gid = groupId;
 
-        String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() );
+        if (StringUtils.isEmpty(gid)) {
+            gid = "unknown";
+        }
 
-        if ( validationResult.getMessageCount() > 0 )
-        {
-            throw new InvalidProjectModelException( projectId, "Failed to validate POM", pomFile,
-                validationResult );
+        String aid = artifactId;
+
+        if (StringUtils.isEmpty(aid)) {
+            aid = "unknown";
         }
+
+        return ArtifactUtils.versionlessKey(gid, aid);
     }
 }