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/08/24 21:57:40 UTC

svn commit: r1161257 - 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/ mae-components/mae-project-tools/src/main/java/org/apache/mave...

Author: jdcasey
Date: Wed Aug 24 19:57:39 2011
New Revision: 1161257

URL: http://svn.apache.org/viewvc?rev=1161257&view=rev
Log:
renaming *SessionInjector to *SessionInitializer, and consolidating all the methods within into one coordinated initializeSessionComponents method...then, adjusting that method implementation until it works.

Added:
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/DefaultSessionInitializer.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/SessionInitializer.java   (with props)
Removed:
    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/SessionInjector.java
Modified:
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/DefaultModelLoader.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/DefaultProjectLoader.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
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/test/java/org/apache/maven/mae/project/testutil/TestFixture.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=1161257&r1=1161256&r2=1161257&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 Wed Aug 24 19:57:39 2011
@@ -133,13 +133,13 @@ public class DefaultMAEServiceManager
      * {@inheritDoc}
      */
     @Override
-    public DefaultProjectBuildingRequest createProjectBuildingRequest( final ProjectBuildingRequest templateProjectBuildingRequest )
+    public DefaultProjectBuildingRequest createProjectBuildingRequest( final ProjectBuildingRequest template )
         throws MAEEmbeddingException
     {
         final DefaultProjectBuildingRequest req;
-        if ( templateProjectBuildingRequest != null )
+        if ( template != null )
         {
-            req = new DefaultProjectBuildingRequest( templateProjectBuildingRequest );
+            req = new DefaultProjectBuildingRequest( template );
         }
         else
         {

Modified: maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/DefaultModelLoader.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/DefaultModelLoader.java?rev=1161257&r1=1161256&r2=1161257&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/DefaultModelLoader.java (original)
+++ maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/DefaultModelLoader.java Wed Aug 24 19:57:39 2011
@@ -39,7 +39,7 @@ import org.apache.maven.mae.project.even
 import org.apache.maven.mae.project.internal.SimpleModelResolver;
 import org.apache.maven.mae.project.key.FullProjectKey;
 import org.apache.maven.mae.project.session.ProjectToolsSession;
-import org.apache.maven.mae.project.session.SessionInjector;
+import org.apache.maven.mae.project.session.SessionInitializer;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.FileModelSource;
 import org.apache.maven.model.building.ModelSource;
@@ -70,7 +70,7 @@ public class DefaultModelLoader
     private ModelReader modelReader;
 
     @Requirement
-    private SessionInjector sessionInjector;
+    private SessionInitializer sessionInitializer;
 
     @Override
     public List<Model> loadRawModels( final ProjectToolsSession session, final boolean processModules,
@@ -158,10 +158,12 @@ public class DefaultModelLoader
                                      final ProjectToolsSession session )
         throws ProjectToolsException
     {
+        sessionInitializer.initializeSessionComponents( session );
+
         try
         {
-            RepositorySystemSession rss = sessionInjector.getRepositorySystemSession( session );
-            List<RemoteRepository> repos = sessionInjector.getRemoteRepositories( session );
+            RepositorySystemSession rss = session.getRepositorySystemSession();
+            List<RemoteRepository> repos = session.getRemoteRepositoriesForResolution();
 
             SimpleModelResolver resolver =
                 new SimpleModelResolver( rss, repos, new DefaultRequestTrace( key ), artifactResolver,

Modified: maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/DefaultProjectLoader.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/DefaultProjectLoader.java?rev=1161257&r1=1161256&r2=1161257&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/DefaultProjectLoader.java (original)
+++ maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/DefaultProjectLoader.java Wed Aug 24 19:57:39 2011
@@ -39,7 +39,7 @@ import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.mae.project.key.FullProjectKey;
 import org.apache.maven.mae.project.session.ProjectToolsSession;
-import org.apache.maven.mae.project.session.SessionInjector;
+import org.apache.maven.mae.project.session.SessionInitializer;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.building.ModelProblem;
@@ -78,15 +78,15 @@ public class DefaultProjectLoader
     private ProjectBuilder projectBuilder;
 
     @Requirement
-    private SessionInjector sessionInjector;
+    private SessionInitializer sessionInitializer;
 
     @Override
     public List<MavenProject> buildReactorProjectInstances( final ProjectToolsSession session, final boolean recursive,
                                                             final File... rootPoms )
         throws ProjectToolsException
     {
-        sessionInjector.getRemoteRepositories( session );
-        final ProjectBuildingRequest pbr = sessionInjector.getProjectBuildingRequest( session );
+        sessionInitializer.initializeSessionComponents( session );
+        final ProjectBuildingRequest pbr = session.getProjectBuildingRequest();
 
         try
         {
@@ -97,7 +97,7 @@ public class DefaultProjectLoader
             for ( final ProjectBuildingResult result : results )
             {
                 final MavenProject project = result.getProject();
-                project.setRemoteArtifactRepositories( session.getRemoteArtifactRepositories() );
+                project.setRemoteArtifactRepositories( session.getArtifactRepositoriesForResolution() );
 
                 projects.add( project );
             }
@@ -218,15 +218,15 @@ public class DefaultProjectLoader
     public MavenProject buildProjectInstance( final File pomFile, final ProjectToolsSession session )
         throws ProjectToolsException
     {
-        sessionInjector.getRemoteRepositories( session );
-        final ProjectBuildingRequest pbr = sessionInjector.getProjectBuildingRequest( session );
+        sessionInitializer.initializeSessionComponents( session );
+        final ProjectBuildingRequest pbr = session.getProjectBuildingRequest();
 
         try
         {
             final ProjectBuildingResult result = projectBuilder.build( pomFile, pbr );
 
             final MavenProject project = result.getProject();
-            project.setRemoteArtifactRepositories( session.getRemoteArtifactRepositories() );
+            project.setRemoteArtifactRepositories( session.getArtifactRepositoriesForResolution() );
 
             addProjects( session, project );
 
@@ -291,7 +291,8 @@ public class DefaultProjectLoader
                                               final ProjectToolsSession session )
         throws ProjectToolsException
     {
-        final ProjectBuildingRequest req = sessionInjector.getProjectBuildingRequest( session );
+        sessionInitializer.initializeSessionComponents( session );
+        final ProjectBuildingRequest pbr = session.getProjectBuildingRequest();
 
         try
         {
@@ -301,16 +302,16 @@ public class DefaultProjectLoader
             final Artifact aetherPomArtifact = RepositoryUtils.toArtifact( pomArtifact );
 
             final ArtifactRequest artifactRequest =
-                new ArtifactRequest( aetherPomArtifact, sessionInjector.getRemoteRepositories( session ), "project" );
+                new ArtifactRequest( aetherPomArtifact, session.getRemoteRepositoriesForResolution(), "project" );
 
             final ArtifactResult artifactResult =
-                aetherRepositorySystem.resolveArtifact( req.getRepositorySession(), artifactRequest );
+                aetherRepositorySystem.resolveArtifact( pbr.getRepositorySession(), artifactRequest );
 
             final File pomFile = artifactResult.getArtifact().getFile();
-            final ProjectBuildingResult result = projectBuilder.build( pomFile, req );
+            final ProjectBuildingResult result = projectBuilder.build( pomFile, pbr );
 
             final MavenProject project = result.getProject();
-            project.setRemoteArtifactRepositories( session.getRemoteArtifactRepositories() );
+            project.setRemoteArtifactRepositories( session.getArtifactRepositoriesForResolution() );
 
             project.setFile( pomFile );
 

Added: maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/DefaultSessionInitializer.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/DefaultSessionInitializer.java?rev=1161257&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/DefaultSessionInitializer.java (added)
+++ maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/DefaultSessionInitializer.java Wed Aug 24 19:57:39 2011
@@ -0,0 +1,266 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.mae.project.session;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.apache.maven.artifact.InvalidRepositoryException;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.MavenArtifactRepository;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.mae.MAEException;
+import org.apache.maven.mae.boot.embed.MAEEmbeddingException;
+import org.apache.maven.mae.boot.services.MAEServiceManager;
+import org.apache.maven.mae.project.ProjectToolsException;
+import org.apache.maven.model.Repository;
+import org.apache.maven.plugin.LegacySupport;
+import org.apache.maven.project.DefaultProjectBuildingRequest;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.repository.RepositorySystem;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+import org.sonatype.aether.RepositorySystemSession;
+import org.sonatype.aether.impl.internal.EnhancedLocalRepositoryManager;
+import org.sonatype.aether.repository.AuthenticationSelector;
+import org.sonatype.aether.repository.ProxySelector;
+import org.sonatype.aether.repository.RemoteRepository;
+import org.sonatype.aether.util.DefaultRepositorySystemSession;
+
+@Component( role = SessionInitializer.class )
+public class DefaultSessionInitializer
+    implements SessionInitializer
+{
+
+    private static final Logger LOGGER = Logger.getLogger( DefaultSessionInitializer.class );
+
+    @Requirement
+    private MAEServiceManager serviceManager;
+
+    @Requirement
+    private RepositorySystem mavenRepositorySystem;
+
+    @Requirement
+    private LegacySupport legacySupport;
+
+    @Requirement
+    private PlexusContainer container;
+
+    @Override
+    public synchronized void initializeSessionComponents( final ProjectToolsSession session )
+        throws ProjectToolsException
+    {
+        if ( session.isInitialized() )
+        {
+            return;
+        }
+
+        RepositorySystemSession rss = getRepositorySystemSession( session );
+
+        MavenSession mavenSession =
+            new MavenSession( container, rss, session.getExecutionRequest(), session.getExecutionResult() );
+
+        legacySupport.setSession( mavenSession );
+
+        List<ArtifactRepository> artifactRepos =
+            getArtifactRepositories( session.getRepositoryDefinitionsForResolution(), rss );
+
+        List<RemoteRepository> remoteRepositories = getRemoteRepositories( rss, artifactRepos );
+
+        ProjectBuildingRequest pbr = getProjectBuildingRequest( session, rss, artifactRepos );
+        pbr = pbr.setRemoteRepositories( artifactRepos );
+        pbr.setRepositorySession( rss );
+
+        session.initialize( rss, pbr, artifactRepos, remoteRepositories );
+    }
+
+    private RepositorySystemSession getRepositorySystemSession( final ProjectToolsSession session )
+        throws ProjectToolsException
+    {
+        final File localRepo = session.getLocalRepositoryDirectory();
+
+        RepositorySystemSession sess = session.getRepositorySystemSession();
+        if ( sess == null )
+        {
+            DefaultRepositorySystemSession rss;
+            try
+            {
+                rss =
+                    new DefaultRepositorySystemSession(
+                                                        serviceManager.createAetherRepositorySystemSession( session.getExecutionRequest() ) );
+            }
+            catch ( MAEEmbeddingException e )
+            {
+                throw new ProjectToolsException( "Failed to create RepositorySystemSession instance: %s", e,
+                                                 e.getMessage() );
+            }
+
+            if ( localRepo != null )
+            {
+                localRepo.mkdirs();
+                rss.setLocalRepositoryManager( new EnhancedLocalRepositoryManager( localRepo ) );
+            }
+
+            rss.setWorkspaceReader( new SessionWorkspaceReader( session ) );
+
+            sess = rss;
+        }
+
+        sess.getData().set( ProjectToolsSession.SESSION_KEY, session );
+
+        return sess;
+    }
+
+    private ProjectBuildingRequest getProjectBuildingRequest( final ProjectToolsSession session,
+                                                              final RepositorySystemSession rss,
+                                                              final List<ArtifactRepository> artifactRepos )
+        throws ProjectToolsException
+    {
+        ProjectBuildingRequest pbr = session.getProjectBuildingRequest();
+        try
+        {
+            if ( pbr == null )
+            {
+                pbr = serviceManager.createProjectBuildingRequest( session.getTemplateProjectBuildingRequest() );
+
+                pbr.setValidationLevel( session.getPomValidationLevel() );
+                pbr.setProcessPlugins( session.isProcessPomPlugins() );
+                pbr.setResolveDependencies( false );
+                pbr.setSystemProperties( System.getProperties() );
+                pbr.setInactiveProfileIds( new ArrayList<String>() );
+                pbr.setRepositoryMerging( ProjectBuildingRequest.RepositoryMerging.REQUEST_DOMINANT );
+
+                pbr.setRepositorySession( rss );
+                pbr.setLocalRepository( mavenRepositorySystem.createLocalRepository( rss.getLocalRepository().getBasedir() ) );
+                pbr.setRemoteRepositories( artifactRepos );
+            }
+            else
+            {
+                pbr = new DefaultProjectBuildingRequest( pbr );
+                pbr.setRepositorySession( getRepositorySystemSession( session ) );
+            }
+        }
+        catch ( final MAEException e )
+        {
+            throw new ProjectToolsException( "Failed to create project-building request: %s", e, e.getMessage() );
+        }
+        catch ( final InvalidRepositoryException e )
+        {
+            throw new ProjectToolsException( "Failed to create local-repository instance. Reason: %s", e,
+                                             e.getMessage() );
+        }
+
+        return pbr;
+    }
+
+    private List<RemoteRepository> getRemoteRepositories( final RepositorySystemSession rss,
+                                                          final List<ArtifactRepository> artifactRepos )
+        throws ProjectToolsException
+    {
+        List<RemoteRepository> result = new ArrayList<RemoteRepository>();
+
+        for ( final ArtifactRepository repo : artifactRepos )
+        {
+            RemoteRepository r = null;
+            if ( repo instanceof RemoteRepository )
+            {
+                r = (RemoteRepository) repo;
+            }
+            else if ( repo instanceof MavenArtifactRepository )
+            {
+                r = new RemoteRepository( repo.getId(), "default", repo.getUrl() );
+            }
+
+            if ( r != null )
+            {
+                result.add( r );
+            }
+        }
+
+        boolean selectorsEnabled = false;
+        AuthenticationSelector authSelector = null;
+        ProxySelector proxySelector = null;
+        if ( rss != null )
+        {
+            selectorsEnabled = true;
+            authSelector = rss.getAuthenticationSelector();
+            proxySelector = rss.getProxySelector();
+        }
+        else
+        {
+            LOGGER.warn( "Cannot set proxy or authentication information on new RemoteRepositories; "
+                + "RepositorySystemSession is not available in ProjectToolsSession instance." );
+        }
+
+        if ( selectorsEnabled )
+        {
+            for ( RemoteRepository r : result )
+            {
+                r.setAuthentication( authSelector.getAuthentication( r ) );
+                r.setProxy( proxySelector.getProxy( r ) );
+            }
+        }
+
+        return result;
+    }
+
+    private List<ArtifactRepository> getArtifactRepositories( final Repository[] repoDefinitions,
+                                                              final RepositorySystemSession rss )
+        throws ProjectToolsException
+    {
+        List<ArtifactRepository> repos =
+            new ArrayList<ArtifactRepository>( repoDefinitions == null ? 0 : repoDefinitions.length );
+
+        if ( repoDefinitions != null )
+        {
+            for ( final Repository repo : repoDefinitions )
+            {
+                try
+                {
+                    repos.add( mavenRepositorySystem.buildArtifactRepository( repo ) );
+                }
+                catch ( final InvalidRepositoryException e )
+                {
+                    throw new ProjectToolsException(
+                                                     "Failed to create remote artifact repository instance from: %s\nReason: %s",
+                                                     e, repo, e.getMessage() );
+                }
+            }
+        }
+
+        try
+        {
+            repos.add( mavenRepositorySystem.createDefaultRemoteRepository() );
+        }
+        catch ( final InvalidRepositoryException e )
+        {
+            throw new ProjectToolsException( "Failed to create default (central) repository instance: %s", e,
+                                             e.getMessage() );
+        }
+
+        mavenRepositorySystem.injectAuthentication( rss, repos );
+
+        return repos;
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/DefaultSessionInitializer.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=1161257&r1=1161256&r2=1161257&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 Wed Aug 24 19:57:39 2011
@@ -25,6 +25,7 @@ import java.util.List;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.mae.project.event.EventDispatcher;
 import org.apache.maven.model.Repository;
 import org.apache.maven.project.MavenProject;
@@ -40,26 +41,24 @@ public interface ProjectToolsSession
 
     public static final String SESSION_KEY = "dependency-resolver-session";
 
-    List<ArtifactRepository> getRemoteArtifactRepositories();
+    List<ArtifactRepository> getArtifactRepositoriesForResolution();
 
-    ProjectToolsSession setRemoteArtifactRepositories( final List<ArtifactRepository> remoteArtifactRepositories );
+    ProjectToolsSession setArtifactRepositoriesForResolution( final List<ArtifactRepository> remoteArtifactRepositories );
 
-    Repository[] getResolveRepositories();
+    Repository[] getRepositoryDefinitionsForResolution();
 
     File getLocalRepositoryDirectory();
 
-    List<RemoteRepository> getRemoteRepositories();
+    List<RemoteRepository> getRemoteRepositoriesForResolution();
 
-    ProjectToolsSession setRemoteRepositories( final List<RemoteRepository> remoteRepositories );
+    ProjectToolsSession setRemoteRepositoriesForResolution( final List<RemoteRepository> remoteRepositories );
 
     ProjectBuildingRequest getProjectBuildingRequest();
 
-    ProjectToolsSession setProjectBuildingRequest( final ProjectBuildingRequest projectBuildingRequest );
+    ProjectToolsSession setProjectBuildingRequest( final ProjectBuildingRequest pbr );
 
     RepositorySystemSession getRepositorySystemSession();
 
-    ProjectToolsSession setRepositorySystemSession( final RepositorySystemSession repositorySystemSession );
-
     ProjectToolsSession addReactorProject( final MavenProject project );
 
     ProjectToolsSession setReactorProjects( final MavenProject... projects );
@@ -80,6 +79,10 @@ public interface ProjectToolsSession
 
     MavenExecutionRequest getExecutionRequest();
 
+    ProjectToolsSession setExecutionResult( MavenExecutionResult result );
+
+    MavenExecutionResult getExecutionResult();
+
     ProjectToolsSession setResolveThreads( int threads );
 
     int getResolveThreads();
@@ -117,4 +120,8 @@ public interface ProjectToolsSession
 
     <E> ProjectToolsSession setEventDispatcher( Class<E> eventType, EventDispatcher<E> dispatcher );
 
+    void initialize( RepositorySystemSession rss, ProjectBuildingRequest pbr, List<ArtifactRepository> artifactRepos,
+                     List<RemoteRepository> remoteRepos );
+
+    boolean isInitialized();
 }

Added: maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/SessionInitializer.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/SessionInitializer.java?rev=1161257&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/SessionInitializer.java (added)
+++ maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/SessionInitializer.java Wed Aug 24 19:57:39 2011
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.mae.project.session;
+
+import org.apache.maven.mae.project.ProjectToolsException;
+
+public interface SessionInitializer
+{
+
+    void initializeSessionComponents( final ProjectToolsSession session )
+        throws ProjectToolsException;
+
+}

Propchange: maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/main/java/org/apache/maven/mae/project/session/SessionInitializer.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=1161257&r1=1161256&r2=1161257&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 Wed Aug 24 19:57:39 2011
@@ -30,7 +30,10 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.DefaultMavenExecutionResult;
 import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.mae.project.event.EventDispatcher;
 import org.apache.maven.model.Repository;
 import org.apache.maven.model.building.ModelBuildingRequest;
@@ -78,6 +81,8 @@ public class SimpleProjectToolsSession
 
     private transient Map<Class<?>, Object> states = new HashMap<Class<?>, Object>();
 
+    private MavenExecutionResult executionResult;
+
     public SimpleProjectToolsSession()
     {
     }
@@ -85,10 +90,10 @@ public class SimpleProjectToolsSession
     /**
      * {@inheritDoc}
      * 
-     * @see org.apache.maven.mae.project.session.ProjectToolsSession#getRemoteArtifactRepositories()
+     * @see org.apache.maven.mae.project.session.ProjectToolsSession#getArtifactRepositoriesForResolution()
      */
     @Override
-    public List<ArtifactRepository> getRemoteArtifactRepositories()
+    public List<ArtifactRepository> getArtifactRepositoriesForResolution()
     {
         return remoteArtifactRepositories;
     }
@@ -96,10 +101,10 @@ public class SimpleProjectToolsSession
     /**
      * {@inheritDoc}
      * 
-     * @see org.apache.maven.mae.project.session.ProjectToolsSession#setRemoteArtifactRepositories(java.util.List)
+     * @see org.apache.maven.mae.project.session.ProjectToolsSession#setArtifactRepositoriesForResolution(java.util.List)
      */
     @Override
-    public ProjectToolsSession setRemoteArtifactRepositories( final List<ArtifactRepository> remoteArtifactRepositories )
+    public ProjectToolsSession setArtifactRepositoriesForResolution( final List<ArtifactRepository> remoteArtifactRepositories )
     {
         this.remoteArtifactRepositories = remoteArtifactRepositories;
         return this;
@@ -108,10 +113,10 @@ public class SimpleProjectToolsSession
     /**
      * {@inheritDoc}
      * 
-     * @see org.apache.maven.mae.project.session.ProjectToolsSession#getResolveRepositories()
+     * @see org.apache.maven.mae.project.session.ProjectToolsSession#getRepositoryDefinitionsForResolution()
      */
     @Override
-    public Repository[] getResolveRepositories()
+    public Repository[] getRepositoryDefinitionsForResolution()
     {
         return resolveRepositories;
     }
@@ -119,10 +124,10 @@ public class SimpleProjectToolsSession
     /**
      * {@inheritDoc}
      * 
-     * @see org.apache.maven.mae.project.session.ProjectToolsSession#getRemoteRepositories()
+     * @see org.apache.maven.mae.project.session.ProjectToolsSession#getRemoteRepositoriesForResolution()
      */
     @Override
-    public List<RemoteRepository> getRemoteRepositories()
+    public List<RemoteRepository> getRemoteRepositoriesForResolution()
     {
         return remoteRepositories;
     }
@@ -142,10 +147,10 @@ public class SimpleProjectToolsSession
     /**
      * {@inheritDoc}
      * 
-     * @see org.apache.maven.mae.project.session.ProjectToolsSession#setRemoteRepositories(java.util.List)
+     * @see org.apache.maven.mae.project.session.ProjectToolsSession#setRemoteRepositoriesForResolution(java.util.List)
      */
     @Override
-    public ProjectToolsSession setRemoteRepositories( final List<RemoteRepository> remoteRepositories )
+    public ProjectToolsSession setRemoteRepositoriesForResolution( final List<RemoteRepository> remoteRepositories )
     {
         this.remoteRepositories = remoteRepositories;
         return this;
@@ -162,15 +167,10 @@ public class SimpleProjectToolsSession
         return projectBuildingRequest;
     }
 
-    /**
-     * {@inheritDoc}
-     * 
-     * @see org.apache.maven.mae.project.session.ProjectToolsSession#setProjectBuildingRequest(org.apache.maven.project.ProjectBuildingRequest)
-     */
     @Override
-    public ProjectToolsSession setProjectBuildingRequest( final ProjectBuildingRequest projectBuildingRequest )
+    public ProjectToolsSession setProjectBuildingRequest( final ProjectBuildingRequest pbr )
     {
-        this.projectBuildingRequest = projectBuildingRequest;
+        this.projectBuildingRequest = pbr;
         return this;
     }
 
@@ -188,18 +188,6 @@ public class SimpleProjectToolsSession
     /**
      * {@inheritDoc}
      * 
-     * @see org.apache.maven.mae.project.session.ProjectToolsSession#setRepositorySystemSession(org.sonatype.aether.RepositorySystemSession)
-     */
-    @Override
-    public ProjectToolsSession setRepositorySystemSession( final RepositorySystemSession repositorySystemSession )
-    {
-        this.repositorySystemSession = repositorySystemSession;
-        return this;
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
      * @see org.apache.maven.mae.project.session.ProjectToolsSession#addReactorProject(org.apache.maven.project.MavenProject)
      */
     @Override
@@ -330,9 +318,9 @@ public class SimpleProjectToolsSession
      * @see org.apache.maven.mae.project.session.ProjectToolsSession#setExecutionRequest(org.apache.maven.execution.MavenExecutionRequest)
      */
     @Override
-    public ProjectToolsSession setExecutionRequest( final MavenExecutionRequest request )
+    public ProjectToolsSession setExecutionRequest( final MavenExecutionRequest executionRequest )
     {
-        executionRequest = request;
+        this.executionRequest = executionRequest;
         return this;
     }
 
@@ -342,11 +330,34 @@ public class SimpleProjectToolsSession
      * @see org.apache.maven.mae.project.session.ProjectToolsSession#getExecutionRequest()
      */
     @Override
-    public MavenExecutionRequest getExecutionRequest()
+    public synchronized MavenExecutionRequest getExecutionRequest()
     {
+        if ( executionRequest == null )
+        {
+            executionRequest = new DefaultMavenExecutionRequest();
+        }
+
         return executionRequest;
     }
 
+    @Override
+    public ProjectToolsSession setExecutionResult( final MavenExecutionResult executionResult )
+    {
+        this.executionResult = executionResult;
+        return this;
+    }
+
+    @Override
+    public synchronized MavenExecutionResult getExecutionResult()
+    {
+        if ( executionResult == null )
+        {
+            this.executionResult = new DefaultMavenExecutionResult();
+        }
+
+        return executionResult;
+    }
+
     /**
      * {@inheritDoc}
      * 
@@ -522,6 +533,8 @@ public class SimpleProjectToolsSession
 
     private final Map<Class<?>, EventDispatcher<?>> eventDispatchers = new HashMap<Class<?>, EventDispatcher<?>>();
 
+    private boolean initialized;
+
     @SuppressWarnings( "unchecked" )
     @Override
     public <E> EventDispatcher<E> getEventDispatcher( final Class<E> eventType )
@@ -536,4 +549,23 @@ public class SimpleProjectToolsSession
         return this;
     }
 
+    @Override
+    public void initialize( final RepositorySystemSession rss, final ProjectBuildingRequest pbr,
+                            final List<ArtifactRepository> artifactRepos, final List<RemoteRepository> remoteRepos )
+    {
+        this.repositorySystemSession = rss;
+        this.projectBuildingRequest = pbr;
+
+        setArtifactRepositoriesForResolution( artifactRepos );
+        setRemoteRepositoriesForResolution( remoteRepos );
+
+        this.initialized = true;
+    }
+
+    @Override
+    public boolean isInitialized()
+    {
+        return initialized;
+    }
+
 }

Modified: maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/test/java/org/apache/maven/mae/project/testutil/TestFixture.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/test/java/org/apache/maven/mae/project/testutil/TestFixture.java?rev=1161257&r1=1161256&r2=1161257&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/test/java/org/apache/maven/mae/project/testutil/TestFixture.java (original)
+++ maven/sandbox/trunk/mae/mae-components/mae-project-tools/src/test/java/org/apache/maven/mae/project/testutil/TestFixture.java Wed Aug 24 19:57:39 2011
@@ -250,7 +250,7 @@ public final class TestFixture
         session.setLocalRepositoryDirectory( localRepoDir );
         session.setResolveRepositories( rawRemoteRepo );
 
-        session.setRemoteArtifactRepositories( Collections.singletonList( remoteRepository ) );
+        session.setArtifactRepositoriesForResolution( Collections.singletonList( remoteRepository ) );
 
         if ( projects != null && projects.length > 0 )
         {