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/06/06 12:38:43 UTC

svn commit: r782223 - in /maven/components/trunk: maven-core/src/main/java/org/apache/maven/project/ maven-model-builder/src/main/java/org/apache/maven/model/

Author: bentmann
Date: Sat Jun  6 10:38:42 2009
New Revision: 782223

URL: http://svn.apache.org/viewvc?rev=782223&view=rev
Log:
o Decoupled project building request from model building request
o Moved model resolver into model building request

Modified:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuildingRequest.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuilder.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuildingRequest.java

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=782223&r1=782222&r2=782223&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Sat Jun  6 10:38:42 2009
@@ -28,10 +28,12 @@
 import org.apache.maven.lifecycle.LifecycleExecutionException;
 import org.apache.maven.lifecycle.LifecycleExecutor;
 import org.apache.maven.model.Build;
+import org.apache.maven.model.DefaultModelBuildingRequest;
 import org.apache.maven.model.FileModelSource;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.ModelBuilder;
 import org.apache.maven.model.ModelBuildingException;
+import org.apache.maven.model.ModelBuildingRequest;
 import org.apache.maven.model.ModelBuildingResult;
 import org.apache.maven.model.io.ModelReader;
 import org.apache.maven.model.resolution.ModelResolver;
@@ -86,18 +88,25 @@
             new RepositoryModelResolver( repositorySystem, resolutionErrorHandler, configuration.getLocalRepository(),
                                          configuration.getRemoteRepositories() );
 
+        ModelBuildingRequest request = new DefaultModelBuildingRequest();
+        request.setLenientValidation( configuration.istLenientValidation() );
+        request.setProcessPlugins( configuration.isProcessPlugins() );
+        request.setProfiles( configuration.getProfiles() );
+        request.setActiveProfileIds( configuration.getActiveProfileIds() );
+        request.setInactiveProfileIds( configuration.getInactiveProfileIds() );
+        request.setExecutionProperties( configuration.getExecutionProperties() );
+        request.setModelResolver( resolver );
+
         ModelBuildingResult result;
         try
         {
             if ( localProject )
             {
-                result = modelBuilder.build( pomFile, configuration.getModelBuildingRequest(), resolver );
+                result = modelBuilder.build( pomFile, request );
             }
             else
             {
-                result =
-                    modelBuilder.build( new FileModelSource( pomFile ), configuration.getModelBuildingRequest(),
-                                        resolver );
+                result = modelBuilder.build( new FileModelSource( pomFile ), request );
             }
         }
         catch ( ModelBuildingException e )

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java?rev=782223&r1=782222&r2=782223&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java Sat Jun  6 10:38:42 2009
@@ -24,8 +24,6 @@
 import java.util.Properties;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.model.DefaultModelBuildingRequest;
-import org.apache.maven.model.ModelBuildingRequest;
 import org.apache.maven.model.ModelEventListener;
 import org.apache.maven.model.Profile;
 
@@ -40,7 +38,26 @@
     
     private MavenProject topProject;
 
-    private ModelBuildingRequest modelBuildingRequest = new DefaultModelBuildingRequest().setProcessPlugins( true );
+    private boolean lenientValidation;
+
+    private boolean processPlugins;
+
+    private List<Profile> profiles;
+
+    private List<String> activeProfileIds;
+
+    private List<String> inactiveProfileIds;
+
+    private Properties executionProperties;
+
+    public DefaultProjectBuildingRequest()
+    {
+        processPlugins = true;
+        profiles = new ArrayList<Profile>();
+        activeProfileIds = new ArrayList<String>();
+        inactiveProfileIds = new ArrayList<String>();
+        executionProperties = new Properties();
+    }
 
     public MavenProject getTopLevelProjectFromReactor()
     {
@@ -80,12 +97,17 @@
     
     public Properties getExecutionProperties()
     {
-        return modelBuildingRequest.getExecutionProperties();
+        return executionProperties;
     }
 
     public ProjectBuildingRequest setExecutionProperties( Properties executionProperties )
     {
-        modelBuildingRequest.setExecutionProperties( executionProperties );
+        this.executionProperties.clear();
+        if ( executionProperties != null )
+        {
+            this.executionProperties.putAll( executionProperties );
+        }
+
         return this;
     }
 
@@ -102,64 +124,71 @@
 
     public boolean isProcessPlugins()
     {
-        return modelBuildingRequest.isProcessPlugins();
+        return processPlugins;
     }
 
     public ProjectBuildingRequest setProcessPlugins( boolean processPlugins )
     {
-        modelBuildingRequest.setProcessPlugins( processPlugins );
+        this.processPlugins = processPlugins;
         return this;
     }
 
     public ProjectBuildingRequest setLenientValidation( boolean lenientValidation )
     {
-        modelBuildingRequest.setLenientValidation( lenientValidation );
+        this.lenientValidation = lenientValidation;
         return this;
     }
 
     public boolean istLenientValidation()
     {
-        return modelBuildingRequest.istLenientValidation();
+        return lenientValidation;
     }
 
     public List<String> getActiveProfileIds()
     {
-        return modelBuildingRequest.getActiveProfileIds();
+        return activeProfileIds;
     }
 
     public void setActiveProfileIds( List<String> activeProfileIds )
     {
-        modelBuildingRequest.setActiveProfileIds( activeProfileIds );
+        this.activeProfileIds.clear();
+        if ( activeProfileIds != null )
+        {
+            this.activeProfileIds.addAll( activeProfileIds );
+        }
     }
 
     public List<String> getInactiveProfileIds()
     {
-        return modelBuildingRequest.getInactiveProfileIds();
+        return inactiveProfileIds;
     }
 
     public void setInactiveProfileIds( List<String> inactiveProfileIds )
     {
-        modelBuildingRequest.setInactiveProfileIds( inactiveProfileIds );
+        this.inactiveProfileIds.clear();
+        if ( inactiveProfileIds != null )
+        {
+            this.inactiveProfileIds.addAll( inactiveProfileIds );
+        }
     }
 
     public void setProfiles( List<Profile> profiles )
     {
-        modelBuildingRequest.setProfiles( profiles );
+        this.profiles.clear();
+        if ( profiles != null )
+        {
+            this.profiles.addAll( profiles );
+        }
     }
     
     public void addProfile( Profile profile )
     {
-        modelBuildingRequest.getProfiles().add(profile);
+        profiles.add(profile);
     }
 
     public List<Profile> getProfiles()
     {
-        return modelBuildingRequest.getProfiles();
-    }
-
-    public ModelBuildingRequest getModelBuildingRequest()
-    {
-        return modelBuildingRequest;
+        return profiles;
     }
 
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java?rev=782223&r1=782222&r2=782223&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java Sat Jun  6 10:38:42 2009
@@ -72,6 +72,4 @@
     
     List<Profile> getProfiles();
 
-    ModelBuildingRequest getModelBuildingRequest();
-
 }

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java?rev=782223&r1=782222&r2=782223&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java Sat Jun  6 10:38:42 2009
@@ -93,20 +93,19 @@
     @Requirement
     private PluginConfigurationExpander pluginConfigurationExpander;
 
-    public ModelBuildingResult build( File pomFile, ModelBuildingRequest request, ModelResolver modelResolver )
+    public ModelBuildingResult build( File pomFile, ModelBuildingRequest request )
         throws ModelBuildingException
     {
-        return build( new FileModelSource( pomFile ), pomFile, request, modelResolver );
+        return build( new FileModelSource( pomFile ), pomFile, request );
     }
 
-    public ModelBuildingResult build( ModelSource modelSource, ModelBuildingRequest request, ModelResolver modelResolver )
+    public ModelBuildingResult build( ModelSource modelSource, ModelBuildingRequest request )
         throws ModelBuildingException
     {
-        return build( modelSource, null, request, modelResolver );
+        return build( modelSource, null, request );
     }
 
-    private ModelBuildingResult build( ModelSource modelSource, File pomFile, ModelBuildingRequest request,
-                                       ModelResolver modelResolver )
+    private ModelBuildingResult build( ModelSource modelSource, File pomFile, ModelBuildingRequest request )
         throws ModelBuildingException
     {
         DefaultModelBuildingResult result = new DefaultModelBuildingResult();
@@ -121,7 +120,7 @@
         List<Model> rawModels = new ArrayList<Model>();
         List<Model> resultModels = new ArrayList<Model>();
 
-        for ( Model current = model; current != null; current = readParent( current, request, modelResolver ) )
+        for ( Model current = model; current != null; current = readParent( current, request ) )
         {
             Model resultModel = current;
             resultModels.add( resultModel );
@@ -148,7 +147,7 @@
 
             result.setActiveProfiles( rawModel, activeProfiles );
 
-            configureResolver( modelResolver, resultModel );
+            configureResolver( request.getModelResolver(), resultModel );
         }
 
         Model superModel = getSuperModel();
@@ -272,6 +271,11 @@
     private void configureResolver( ModelResolver modelResolver, Model model )
         throws ModelBuildingException
     {
+        if ( modelResolver == null )
+        {
+            return;
+        }
+
         for ( Repository repository : model.getRepositories() )
         {
             try
@@ -311,7 +315,7 @@
         }
     }
 
-    private Model readParent( Model childModel, ModelBuildingRequest request, ModelResolver modelResolver )
+    private Model readParent( Model childModel, ModelBuildingRequest request )
         throws ModelBuildingException
     {
         Model parentModel;
@@ -324,7 +328,7 @@
 
             if ( parentModel == null )
             {
-                parentModel = readParentExternally( childModel, request, modelResolver );
+                parentModel = readParentExternally( childModel, request );
             }
         }
         else
@@ -387,11 +391,20 @@
         return candidateModel;
     }
 
-    private Model readParentExternally( Model childModel, ModelBuildingRequest request, ModelResolver modelResolver )
+    private Model readParentExternally( Model childModel, ModelBuildingRequest request )
         throws ModelBuildingException
     {
         Parent parent = childModel.getParent();
 
+        ModelResolver modelResolver = request.getModelResolver();
+
+        if ( modelResolver == null )
+        {
+            Exception e = new IllegalArgumentException( "No model resolver provided" );
+            throw new UnresolvableParentException( "Failed to resolve parent POM " + toId( parent ) + " for POM "
+                + toSourceHint( childModel ), e );
+        }
+
         ModelSource modelSource;
         try
         {

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuildingRequest.java?rev=782223&r1=782222&r2=782223&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuildingRequest.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuildingRequest.java Sat Jun  6 10:38:42 2009
@@ -23,6 +23,8 @@
 import java.util.List;
 import java.util.Properties;
 
+import org.apache.maven.model.resolution.ModelResolver;
+
 /**
  * Collects settings that control building of effective models.
  * 
@@ -44,6 +46,8 @@
 
     private Properties executionProperties;
 
+    private ModelResolver modelResolver;
+    
     public DefaultModelBuildingRequest()
     {
         profiles = new ArrayList<Profile>();
@@ -140,4 +144,16 @@
         return this;
     }
 
+    public ModelResolver getModelResolver()
+    {
+        return this.modelResolver;
+    }
+
+    public DefaultModelBuildingRequest setModelResolver( ModelResolver modelResolver )
+    {
+        this.modelResolver = modelResolver;
+
+        return this;
+    }
+
 }

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuilder.java?rev=782223&r1=782222&r2=782223&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuilder.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuilder.java Sat Jun  6 10:38:42 2009
@@ -38,12 +38,10 @@
      * 
      * @param pomFile The POM file of the project to build the effective model from, must not be {@code null}.
      * @param request The model building request that holds further settings, must not be {@code null}.
-     * @param modelResolver The model resolver used to resolve parent POMs that are not locally reachable from the
-     *            project directory, must not be {@code null}.
      * @return The result of the model building, never {@code null}.
      * @throws ModelBuildingException If the effective model could not be built.
      */
-    ModelBuildingResult build( File pomFile, ModelBuildingRequest request, ModelResolver modelResolver )
+    ModelBuildingResult build( File pomFile, ModelBuildingRequest request )
         throws ModelBuildingException;
 
     /**
@@ -53,11 +51,10 @@
      * 
      * @param modelSource The source of the POM, must not be {@code null}.
      * @param request The model building request that holds further settings, must not be {@code null}.
-     * @param modelResolver The model resolver used to resolve parent POMs, must not be {@code null}.
      * @return The result of the model building, never {@code null}.
      * @throws ModelBuildingException If the effective model could not be built.
      */
-    ModelBuildingResult build( ModelSource modelSource, ModelBuildingRequest request, ModelResolver modelResolver )
+    ModelBuildingResult build( ModelSource modelSource, ModelBuildingRequest request )
         throws ModelBuildingException;
 
 }

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuildingRequest.java?rev=782223&r1=782222&r2=782223&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuildingRequest.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuildingRequest.java Sat Jun  6 10:38:42 2009
@@ -22,6 +22,8 @@
 import java.util.List;
 import java.util.Properties;
 
+import org.apache.maven.model.resolution.ModelResolver;
+
 /**
  * Collects settings that control the building of effective models.
  * 
@@ -127,4 +129,21 @@
      */
     ModelBuildingRequest setExecutionProperties( Properties executionProperties );
 
+    /**
+     * Gets the model resolver to use for resolution of mixins or parents that are not locally reachable from the
+     * project directory.
+     * 
+     * @return The model resolver or {@code null} if not set.
+     */
+    ModelResolver getModelResolver();
+
+    /**
+     * Sets the model resolver to use for resolution of mixins or parents that are not locally reachable from the
+     * project directory.
+     * 
+     * @param modelResolver The model resolver to use, may be {@code null}.
+     * @return This request, never {@code null}.
+     */
+    ModelBuildingRequest setModelResolver( ModelResolver modelResolver );
+
 }