You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2011/07/22 17:50:40 UTC

svn commit: r1149642 - in /maven/sandbox/trunk/mae: mae-booter/src/main/java/org/apache/maven/mae/boot/services/ mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/

Author: jdcasey
Date: Fri Jul 22 15:50:39 2011
New Revision: 1149642

URL: http://svn.apache.org/viewvc?rev=1149642&view=rev
Log:
enable the MAEServiceManager to create a new ProjectBuildingRequest based on a template, from the execution request, if available, or even just another project-building request if that's available.

Modified:
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/MAEServiceManager.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/DefaultSessionInjector.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/ProjectToolsSession.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/SimpleProjectToolsSession.java

Modified: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java?rev=1149642&r1=1149641&r2=1149642&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java (original)
+++ maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java Fri Jul 22 15:50:39 2011
@@ -27,11 +27,13 @@ import org.apache.maven.execution.MavenE
 import org.apache.maven.execution.MavenExecutionRequestPopulationException;
 import org.apache.maven.execution.MavenExecutionRequestPopulator;
 import org.apache.maven.mae.DefaultMAEExecutionRequest;
+import org.apache.maven.mae.MAEExecutionRequest;
 import org.apache.maven.mae.boot.embed.MAEEmbeddingException;
 import org.apache.maven.mae.internal.container.ServiceAuthorizer;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.ProjectBuilder;
+import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.repository.RepositorySystem;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
@@ -101,13 +103,61 @@ public class DefaultMAEServiceManager
     public DefaultProjectBuildingRequest createProjectBuildingRequest()
         throws MAEEmbeddingException
     {
-        final DefaultProjectBuildingRequest req = new DefaultProjectBuildingRequest();
-        req.setLocalRepository( defaultLocalRepository() );
+        return createProjectBuildingRequest( (ProjectBuildingRequest) null );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public DefaultProjectBuildingRequest createProjectBuildingRequest( final MAEExecutionRequest executionRequest )
+        throws MAEEmbeddingException
+    {
+        return createProjectBuildingRequest( executionRequest == null ? null
+                        : executionRequest.getProjectBuildingRequest() );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public DefaultProjectBuildingRequest createProjectBuildingRequest( final MavenExecutionRequest executionRequest )
+        throws MAEEmbeddingException
+    {
+        return createProjectBuildingRequest( executionRequest == null ? null
+                        : executionRequest.getProjectBuildingRequest() );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public DefaultProjectBuildingRequest createProjectBuildingRequest( final ProjectBuildingRequest templateProjectBuildingRequest )
+        throws MAEEmbeddingException
+    {
+        final DefaultProjectBuildingRequest req;
+        if ( templateProjectBuildingRequest != null )
+        {
+            req = new DefaultProjectBuildingRequest( templateProjectBuildingRequest );
+        }
+        else
+        {
+            req = new DefaultProjectBuildingRequest();
+        }
+
+        if ( req.getLocalRepository() == null )
+        {
+            req.setLocalRepository( defaultLocalRepository() );
+        }
+
         req.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL );
         req.setProcessPlugins( false );
         req.setResolveDependencies( false );
 
-        req.setRepositorySession( createAetherRepositorySystemSession() );
+        if ( req.getRepositorySession() == null )
+        {
+            req.setRepositorySession( createAetherRepositorySystemSession() );
+        }
 
         return req;
     }
@@ -147,8 +197,7 @@ public class DefaultMAEServiceManager
         catch ( final MavenExecutionRequestPopulationException e )
         {
             throw new MAEEmbeddingException( "Failed to populate default Maven execution request, "
-                            + " for use in constructing a repository system session." + "\nReason: %s", e,
-                                             e.getMessage() );
+                + " for use in constructing a repository system session." + "\nReason: %s", e, e.getMessage() );
         }
     }
 
@@ -173,13 +222,12 @@ public class DefaultMAEServiceManager
                     request.setRepositoryCache( new DefaultRepositoryCache() );
                 }
             }
-            catch ( MavenExecutionRequestPopulationException e )
+            catch ( final MavenExecutionRequestPopulationException e )
             {
                 throw new MAEEmbeddingException( "Failed to populate default Maven execution request, "
-                                                 + " for use in constructing a repository system session." + "\nReason: %s", e,
-                                                                  e.getMessage() );
+                    + " for use in constructing a repository system session." + "\nReason: %s", e, e.getMessage() );
             }
-            
+
             return defaultMaven.newRepositorySession( request );
         }
     }
@@ -199,7 +247,8 @@ public class DefaultMAEServiceManager
             }
             catch ( final InvalidRepositoryException e )
             {
-                throw new MAEEmbeddingException( "Failed to create default local-repository instance: {0}", e,
+                throw new MAEEmbeddingException( "Failed to create default local-repository instance: {0}",
+                                                 e,
                                                  e.getMessage() );
             }
         }
@@ -230,7 +279,9 @@ public class DefaultMAEServiceManager
         }
         catch ( final ComponentLookupException e )
         {
-            throw new MAEEmbeddingException( "Failed to retrieve service: %s. Reason: %s", e, type.getName(),
+            throw new MAEEmbeddingException( "Failed to retrieve service: %s. Reason: %s",
+                                             e,
+                                             type.getName(),
                                              e.getMessage() );
         }
     }
@@ -258,8 +309,11 @@ public class DefaultMAEServiceManager
         }
         catch ( final ComponentLookupException e )
         {
-            throw new MAEEmbeddingException( "Failed to retrieve service: %s with hint: %s. Reason: %s", e,
-                                             type.getName(), hint, e.getMessage() );
+            throw new MAEEmbeddingException( "Failed to retrieve service: %s with hint: %s. Reason: %s",
+                                             e,
+                                             type.getName(),
+                                             hint,
+                                             e.getMessage() );
         }
     }
 

Modified: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/MAEServiceManager.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/MAEServiceManager.java?rev=1149642&r1=1149641&r2=1149642&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/MAEServiceManager.java (original)
+++ maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/MAEServiceManager.java Fri Jul 22 15:50:39 2011
@@ -21,6 +21,7 @@ package org.apache.maven.mae.boot.servic
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.mae.MAEExecutionRequest;
 import org.apache.maven.mae.boot.embed.MAEEmbeddingException;
 import org.apache.maven.mae.conf.MAELibrary;
 import org.apache.maven.project.DefaultProjectBuildingRequest;
@@ -30,10 +31,9 @@ import org.apache.maven.repository.Repos
 import org.sonatype.aether.RepositorySystemSession;
 
 /**
- * Service manager used as an aid in constructing complex objects correctly for use in Maven, such 
- * as {@link RepositorySystemSession} instances, which are used to resolve artifacts, or 
- * {@link ProjectBuildingRequest} instances, used to build maven projects from their corresponding
- * POM files or artifact coordinates.
+ * Service manager used as an aid in constructing complex objects correctly for use in Maven, such as
+ * {@link RepositorySystemSession} instances, which are used to resolve artifacts, or {@link ProjectBuildingRequest}
+ * instances, used to build maven projects from their corresponding POM files or artifact coordinates.
  * 
  * @author John Casey
  */
@@ -47,13 +47,34 @@ public interface MAEServiceManager
         throws MAEEmbeddingException;
 
     /**
-     * Create a new {@link ProjectBuildingRequest} to be used in building project instances from
-     * POM files or artifact coordinates.
+     * Create a new {@link ProjectBuildingRequest} to be used in building project instances from POM files or artifact
+     * coordinates.
      */
     DefaultProjectBuildingRequest createProjectBuildingRequest()
         throws MAEEmbeddingException;
 
     /**
+     * Create a new {@link ProjectBuildingRequest} to be used in building project instances from POM files or artifact
+     * coordinates.
+     */
+    DefaultProjectBuildingRequest createProjectBuildingRequest( ProjectBuildingRequest templateProjectBuildingRequest )
+        throws MAEEmbeddingException;
+
+    /**
+     * Create a new {@link ProjectBuildingRequest} to be used in building project instances from POM files or artifact
+     * coordinates.
+     */
+    DefaultProjectBuildingRequest createProjectBuildingRequest( MAEExecutionRequest executionRequest )
+        throws MAEEmbeddingException;
+
+    /**
+     * Create a new {@link ProjectBuildingRequest} to be used in building project instances from POM files or artifact
+     * coordinates.
+     */
+    DefaultProjectBuildingRequest createProjectBuildingRequest( MavenExecutionRequest executionRequest )
+        throws MAEEmbeddingException;
+
+    /**
      * Retrieve the Maven {@link RepositorySystem} component.
      */
     RepositorySystem mavenRepositorySystem()
@@ -72,34 +93,31 @@ public interface MAEServiceManager
         throws MAEEmbeddingException;
 
     /**
-     * Create a new {@link RepositorySystemSession} for resolving artifacts, based on the configuration
-     * of a {@link MavenExecutionRequest}.
+     * Create a new {@link RepositorySystemSession} for resolving artifacts, based on the configuration of a
+     * {@link MavenExecutionRequest}.
      */
     RepositorySystemSession createAetherRepositorySystemSession( MavenExecutionRequest request )
         throws MAEEmbeddingException;
 
     /**
-     * Retrieve a component from the Maven component environment, based on its class.
-     * <br/>
-     * <b>NOTE:</b> This method requires that some {@link MAELibrary} present in the current environment
-     * has granted permission to lookup the component in question.
+     * Retrieve a component from the Maven component environment, based on its class. <br/>
+     * <b>NOTE:</b> This method requires that some {@link MAELibrary} present in the current environment has granted
+     * permission to lookup the component in question.
      */
     <T> T service( Class<T> type )
         throws MAEEmbeddingException;
 
     /**
-     * Retrieve a component from the Maven component environment, based on its class and an implementation
-     * hint.
-     * <br/>
-     * <b>NOTE:</b> This method requires that some {@link MAELibrary} present in the current environment
-     * has granted permission to lookup the component in question.
+     * Retrieve a component from the Maven component environment, based on its class and an implementation hint. <br/>
+     * <b>NOTE:</b> This method requires that some {@link MAELibrary} present in the current environment has granted
+     * permission to lookup the component in question.
      */
     <T> T service( Class<T> type, String hint )
         throws MAEEmbeddingException;
 
     /**
-     * Retrieve an {@link ArtifactRepository} instance configured for the default location of the
-     * Maven local repository.
+     * Retrieve an {@link ArtifactRepository} instance configured for the default location of the Maven local
+     * repository.
      */
     ArtifactRepository defaultLocalRepository()
         throws MAEEmbeddingException;

Modified: maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/DefaultSessionInjector.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/DefaultSessionInjector.java?rev=1149642&r1=1149641&r2=1149642&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/DefaultSessionInjector.java (original)
+++ maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/DefaultSessionInjector.java Fri Jul 22 15:50:39 2011
@@ -62,7 +62,9 @@ public class DefaultSessionInjector
         {
             if ( pbr == null )
             {
-                pbr = embedder.serviceManager().createProjectBuildingRequest();
+                pbr =
+                    embedder.serviceManager()
+                            .createProjectBuildingRequest( session.getTemplateProjectBuildingRequest() );
 
                 pbr.setValidationLevel( session.getPomValidationLevel() );
                 pbr.setProcessPlugins( session.isProcessPomPlugins() );

Modified: maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/ProjectToolsSession.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/ProjectToolsSession.java?rev=1149642&r1=1149641&r2=1149642&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/ProjectToolsSession.java (original)
+++ maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/ProjectToolsSession.java Fri Jul 22 15:50:39 2011
@@ -107,4 +107,6 @@ public interface ProjectToolsSession
 
     ProjectToolsSession setPomValidationLevel( int pomValidationLevel );
 
+    ProjectBuildingRequest getTemplateProjectBuildingRequest();
+
 }

Modified: maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/SimpleProjectToolsSession.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/SimpleProjectToolsSession.java?rev=1149642&r1=1149641&r2=1149642&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/SimpleProjectToolsSession.java (original)
+++ maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/SimpleProjectToolsSession.java Fri Jul 22 15:50:39 2011
@@ -70,6 +70,8 @@ public class SimpleProjectToolsSession
 
     private int pomValidationLevel = ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0;
 
+    private ProjectBuildingRequest templateProjectBuildingRequest;
+
     private transient Map<Class<?>, Object> states = new HashMap<Class<?>, Object>();
 
     public SimpleProjectToolsSession()
@@ -492,4 +494,21 @@ public class SimpleProjectToolsSession
         return this;
     }
 
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.apache.maven.mae.project.session.ProjectToolsSession#getTemplateProjectBuildingRequest()
+     */
+    @Override
+    public ProjectBuildingRequest getTemplateProjectBuildingRequest()
+    {
+        return templateProjectBuildingRequest;
+    }
+
+    public ProjectToolsSession setTemplProjectBuildingRequest( final ProjectBuildingRequest templateProjectBuildingRequest )
+    {
+        this.templateProjectBuildingRequest = templateProjectBuildingRequest;
+        return this;
+    }
+
 }