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;
+ }
+
}