Author: sisbell
Date: Thu Aug 21 11:26:28 2008
New Revision: 687823

URL: http://svn.apache.org/viewvc?rev=687823&view=rev
Log:
Removed project lineage. Builder now constructs parent maven projects.

Modified:
    
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
    
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.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=687823&r1=687822&r2=687823&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
 Thu Aug 21 11:26:28 2008
@@ -262,7 +262,7 @@
 
         MavenProject project;
         try {
-            project = new MavenProject(superModel, artifactFactory, 
mavenTools, repositoryHelper);
+            project = new MavenProject(superModel, artifactFactory, 
mavenTools, repositoryHelper, this);
         } catch (InvalidRepositoryException e) {
             throw new ProjectBuildingException(STANDALONE_SUPERPOM_GROUPID + 
":"
                     + STANDALONE_SUPERPOM_ARTIFACTID,
@@ -271,32 +271,28 @@
         }
 
         getLogger().debug("Activated the following profiles for standalone 
super-pom: " + activeProfiles);
-        project.setActiveProfiles(activeProfiles);
+        //project.setActiveProfiles(activeProfiles);
 
         try {
-            processProjectLogic(project, null, config);
+            interpolateModelAndInjectDefault(project.getModel(), null, config, 
activeProfiles);
 
             
project.setRemoteArtifactRepositories(mavenTools.buildArtifactRepositories(superModel.getRepositories()));
             
project.setPluginArtifactRepositories(mavenTools.buildArtifactRepositories(superModel.getRepositories()));
         }
         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);
         }
         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);
         }
 
-        project.setOriginalModel(superModel);
+     //   project.setOriginalModel(superModel);
 
         project.setExecutionRoot(true);
 
@@ -330,19 +326,6 @@
                                                                    
ProjectBuilderConfiguration config)
             throws ProjectBuildingException {
         MavenProject project = build(projectDescriptor, config);
-
-        // 
----------------------------------------------------------------------
-        // Typically when the project builder is being used from maven proper
-        // the transitive dependencies will not be resolved here because this
-        // requires a lot of work when we may only be interested in running
-        // something simple like 'm2 clean'. So the artifact collector is used
-        // in the dependency resolution phase if it is required by any of the
-        // goals being executed. But when used as a component in another piece
-        // of code people may just want to build maven projects and have the
-        // dependencies resolved for whatever reason: this is why we keep
-        // this snippet of code here.
-        // 
----------------------------------------------------------------------
-
         Artifact projectArtifact = project.getArtifact();
 
         String projectId = safeVersionlessKey(project.getGroupId(), 
project.getArtifactId());
@@ -391,10 +374,6 @@
         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,
@@ -404,9 +383,9 @@
                                        boolean fromSourceTree)
             throws ProjectBuildingException {
 
-        MavenProject superProject = null;
+        MavenProject superProject;
         try {
-            superProject = new MavenProject(getSuperModel(), artifactFactory, 
mavenTools, repositoryHelper);
+            superProject = new MavenProject(getSuperModel(), artifactFactory, 
mavenTools, repositoryHelper, this);
         } catch (InvalidRepositoryException e) {
             throw new ProjectBuildingException(STANDALONE_SUPERPOM_GROUPID + 
":"
                     + STANDALONE_SUPERPOM_ARTIFACTID,
@@ -447,57 +426,9 @@
 
         superProject.setActiveProfiles(activated);
 
-        //noinspection CollectionDeclaredAsConcreteClass
-        LinkedList lineage = new LinkedList();
-
-        LinkedHashSet aggregatedRemoteWagonRepositories = 
repositoryHelper.collectInitialRepositories(model, getSuperModel(),
-                parentSearchRepositories,
-                projectDescriptor,
-                isReactorProject,
-                profileActivationContext);
-
-        Model originalModel = ModelUtils.cloneModel(model);
-
         MavenProject project;
-
         try {
-            project = assembleLineage(model, lineage, config, 
projectDescriptor, aggregatedRemoteWagonRepositories, strict, isReactorProject);
-        }
-        catch (InvalidRepositoryException e) {
-            throw new ProjectBuildingException(projectId, e.getMessage(), e);
-        }
-
-        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();) {
-            MavenProject currentProject = (MavenProject) i.next();
-
-            Model current = currentProject.getModel();
-
-            String pathAdjustment = null;
-
-            try {
-                pathAdjustment = 
previousProject.getModulePathAdjustment(currentProject);
-            }
-            catch (IOException e) {
-                getLogger().debug(
-                        "Cannot determine whether " + currentProject.getId() + 
" is a module of " + previousProject.getId() + ". Reason: " + e.getMessage(),
-                        e);
-            }
-
-            modelInheritanceAssembler.assembleModelInheritance(current, 
previous, pathAdjustment);
-
-            previous = current;
-            previousProject = currentProject;
-        }
-
-        try {
-            project = processProjectLogic(project, projectDescriptor, config);
+            project = interpolateModelAndInjectDefault(model, 
projectDescriptor, config, activated);
         }
         catch (ModelInterpolationException e) {
             throw new InvalidProjectModelException(projectId, e.getMessage(), 
projectDescriptor, e);
@@ -527,24 +458,13 @@
         return project;
     }
 
-    /**
-     * @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
-     * model that supported parents which were also the wrapper so that 
inheritence was assembled. We don't really need
-     * the resolved source roots, etc for the parent - that occurs for the 
parent when it is constructed independently
-     * and projects are not cached or reused
-     */
-    private MavenProject processProjectLogic(MavenProject project,
+    private MavenProject interpolateModelAndInjectDefault(Model model,
                                              File pomFile,
-                                             ProjectBuilderConfiguration config
+                                             ProjectBuilderConfiguration 
config,
+                                             List activeProfiles
     )
             throws ProjectBuildingException, ModelInterpolationException, 
InvalidRepositoryException {
-        Model model = project.getModel();
-
-        List activeProfiles = project.getActiveProfiles();
-
         File projectDir = null;
-
         if (pomFile != null) {
             projectDir = pomFile.getAbsoluteFile().getParentFile();
         }
@@ -560,29 +480,13 @@
         // interpolation is before injection, because interpolation is 
off-limits in the injected variables
         modelDefaultsInjector.injectDefaults(model);
 
-        MavenProject parentProject = project.getParent();
-
-        Model originalModel = project.getOriginalModel();
-
-        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, mavenTools, 
repositoryHelper);
-
-        project.setOriginalModel(originalModel);
-
+        MavenProject project = new MavenProject(model, artifactFactory, 
mavenTools, repositoryHelper, this);
         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);
-        project.setParent(parentProject);
-
-        if (parentProject != null) {
-            project.setParentArtifact(parentArtifact);
-        }
 
         validateModel(model, pomFile);
         return project;
@@ -641,6 +545,7 @@
      * @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,
@@ -671,7 +576,7 @@
 
             File currentPom = it.getPOMFile();
 
-            MavenProject project = new MavenProject(currentModel, 
artifactFactory, mavenTools, repositoryHelper);
+            MavenProject project = new MavenProject(currentModel, 
artifactFactory, mavenTools, repositoryHelper, this);
             project.setFile(currentPom);
 
             if (lastProject != null) {
@@ -707,7 +612,7 @@
 
         return result;
     }
-
+    */
     private Model superModel;
 
     private Model getSuperModel()

Modified: 
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=687823&r1=687822&r2=687823&view=diff
==============================================================================
--- 
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
 (original)
+++ 
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
 Thu Aug 21 11:26:28 2008
@@ -137,6 +137,8 @@
 
     private RepositoryHelper repositoryHelper;
 
+    private MavenProjectBuilder mavenProjectBuilder;
+
     public MavenProject()
     {
         Model model = new Model();
@@ -153,13 +155,15 @@
         setModel( model );
     }
 
-    public MavenProject(Model model, ArtifactFactory artifactFactory, 
MavenTools mavenTools, RepositoryHelper repositoryHelper) 
+    public MavenProject(Model model, ArtifactFactory artifactFactory, 
MavenTools mavenTools,
+                        RepositoryHelper repositoryHelper, MavenProjectBuilder 
mavenProjectBuilder)
             throws InvalidRepositoryException {
         setModel( model );
         this.artifactFactory = artifactFactory;
         this.mavenTools = mavenTools;
         this.repositoryHelper = repositoryHelper;
-
+        this.mavenProjectBuilder = mavenProjectBuilder;
+        originalModel = ModelUtils.cloneModel( getOriginalModel() );
         DistributionManagement dm = model.getDistributionManagement();
 
         if (dm != null) {

Modified: 
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java?rev=687823&r1=687822&r2=687823&view=diff
==============================================================================
--- 
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
 (original)
+++ 
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
 Thu Aug 21 11:26:28 2008
@@ -34,10 +34,7 @@
 import org.apache.maven.project.builder.ProjectBuilder;
 import org.apache.maven.project.validation.ModelValidationResult;
 import org.apache.maven.project.validation.ModelValidator;
-import org.apache.maven.shared.model.DomainModel;
-import org.apache.maven.shared.model.InterpolatorProperty;
-import org.apache.maven.shared.model.ModelTransformerContext;
-import org.apache.maven.shared.model.ImportModel;
+import org.apache.maven.shared.model.*;
 import org.apache.maven.MavenTools;
 import org.codehaus.plexus.logging.LogEnabled;
 import org.codehaus.plexus.logging.Logger;
@@ -141,16 +138,27 @@
         List<DomainModel> domainModels = new ArrayList<DomainModel>();
         domainModels.add( domainModel );
 
+        MavenProject mavenParent = null;
+
         if ( domainModel.getModel().getParent() != null )
         {
+            List<DomainModel> mavenParents;
             if ( isParentLocal( domainModel.getModel().getParent(), 
projectDirectory ) )
             {
-                domainModels.addAll( getDomainModelParentsFromLocalPath( 
domainModel, resolver, projectDirectory ) );
+                mavenParents = getDomainModelParentsFromLocalPath( 
domainModel, resolver, projectDirectory );
             }
             else
             {
-                domainModels.addAll( getDomainModelParentsFromRepository( 
domainModel, resolver ) );
+                mavenParents =  getDomainModelParentsFromRepository( 
domainModel, resolver ) ;
+            }
+
+            if(mavenParents.size() > 0) {
+
+                mavenParent = buildFromLocalPath( ((InputStreamDomainModel) 
mavenParents.get(0)).getInputStream(), inheritedModels,
+                        importModels, interpolatorProperties, resolver, 
projectDirectory);
             }
+            
+            domainModels.addAll(mavenParents);
         }
 
         for ( Model model : inheritedModels )
@@ -167,7 +175,9 @@
 
         Model model = transformedDomainModel.getModel();
         try {
-            return new MavenProject( model, artifactFactory, mavenTools, 
repositoryHelper);
+            MavenProject mavenProject = new MavenProject( model, 
artifactFactory, mavenTools, repositoryHelper, null);
+            mavenProject.setParent(mavenParent);
+            return mavenProject;
         } catch (InvalidRepositoryException e) {
             throw new IOException(e.getMessage());
         }


Reply via email to