Author: jvanzyl
Date: Mon Mar  9 04:51:13 2009
New Revision: 751582

URL: http://svn.apache.org/viewvc?rev=751582&view=rev
Log:
o a test which demonstrates the difficulting in testing the execution of a 
single mojo, indicates some work to isolate the system and make it easier
  for people to reuse this code. igor had to jump through these same hoops to 
get isolated mojo execution working in m2e. needs some love.

Added:
    
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/
    
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
   (with props)
Removed:
    
maven/components/branches/MNG-2766/maven-core/src/test/resources/org/apache/maven/lifecycle/plan/
Modified:
    
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
    
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    
maven/components/branches/MNG-2766/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
    
maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
    
maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java

Modified: 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java?rev=751582&r1=751581&r2=751582&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
 Mon Mar  9 04:51:13 2009
@@ -63,6 +63,17 @@
 
     private Map reports = new LinkedHashMap();
 
+    //For testing
+    private ArtifactRepository localRepository;
+    
+    private MavenRealmManager realmManager;
+    
+    public MavenSession( ArtifactRepository localRepository, MavenRealmManager 
realmManager )    
+    {        
+        this.localRepository = localRepository;
+        this.realmManager = realmManager;
+    }
+    
     public MavenSession( PlexusContainer container, MavenExecutionRequest 
request, EventDispatcher eventDispatcher, ReactorManager reactorManager )
     {
         this.container = container;
@@ -76,11 +87,15 @@
 
     public MavenRealmManager getRealmManager()
     {
+        if ( realmManager != null )
+        {
+            return realmManager;
+        }
+        
         return request.getRealmManager();
     }
 
-    public Map getPluginContext( PluginDescriptor pluginDescriptor,
-                                 MavenProject project )
+    public Map getPluginContext( PluginDescriptor pluginDescriptor, 
MavenProject project )
     {
         return reactorManager.getPluginContext( pluginDescriptor, project );
     }
@@ -89,9 +104,14 @@
     {
         return container;
     }
-
+    
     public ArtifactRepository getLocalRepository()
     {
+        if ( localRepository != null )
+        {
+            return localRepository;            
+        }
+        
         return request.getLocalRepository();
     }
 

Modified: 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=751582&r1=751581&r2=751582&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 Mon Mar  9 04:51:13 2009
@@ -927,7 +927,7 @@
         return lifecycle;
     }
 
-    private MojoDescriptor getMojoDescriptor( PluginDescriptor 
pluginDescriptor, String goal )
+    MojoDescriptor getMojoDescriptor( PluginDescriptor pluginDescriptor, 
String goal )
         throws LifecycleExecutionException
     {
         MojoDescriptor desc = pluginDescriptor.getMojo( goal );

Modified: 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=751582&r1=751581&r2=751582&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Mon Mar  9 04:51:13 2009
@@ -258,7 +258,7 @@
             try
             {
                 pluginRealm = realmManager.createPluginRealm( projectPlugin, 
pluginArtifact, artifacts, coreArtifactFilterManager.getArtifactFilter() );
-
+                
                 logger.debug( "Created realm: " + pluginRealm + " for plugin: 
" + projectPlugin.getKey() );
             }
             catch ( RealmManagementException e )
@@ -288,7 +288,7 @@
             logger.debug( "Checking for plugin descriptor for: " + 
projectPlugin.getKey() + " with version: " + projectPlugin.getVersion() + " in 
collector: " + pluginCollector );
 
             PluginDescriptor pluginDescriptor = 
pluginCollector.getPluginDescriptor( projectPlugin );
-
+            
             if ( pluginDescriptor == null )
             {
                 if ( ( pluginRealm != null ) && logger.isDebugEnabled() )
@@ -1825,8 +1825,7 @@
     
     // Plugin Mapping Manager
     
-    public org.apache.maven.model.Plugin getByPrefix( String pluginPrefix, 
List groupIds, List pluginRepositories,
-                                                      ArtifactRepository 
localRepository )
+    public org.apache.maven.model.Plugin getByPrefix( String pluginPrefix, 
List groupIds, List pluginRepositories, ArtifactRepository localRepository )
     {
         // if not found, try from the remote repository
         if ( !pluginDefinitionsByPrefix.containsKey( pluginPrefix ) )

Added: 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java?rev=751582&view=auto
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
 (added)
+++ 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
 Mon Mar  9 04:51:13 2009
@@ -0,0 +1,92 @@
+package org.apache.maven.lifecycle;
+
+import java.io.File;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.MavenPluginCollector;
+import org.apache.maven.plugin.MavenPluginDiscoverer;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.DefaultProjectBuilderConfiguration;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuilderConfiguration;
+import org.apache.maven.realm.DefaultMavenRealmManager;
+import org.apache.maven.realm.MavenRealmManager;
+import org.apache.maven.repository.RepositorySystem;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
+
+public class LifecycleExecutorTest
+    extends PlexusTestCase
+{
+    private MavenProjectBuilder projectBuilder;
+    
+    private RepositorySystem repositorySystem;
+    
+    private PluginManager pluginManager;
+    
+    private DefaultLifecycleExecutor lifecycleExecutor;
+
+    protected void setUp()
+        throws Exception
+    {
+        projectBuilder = lookup( MavenProjectBuilder.class );        
+        repositorySystem = lookup( RepositorySystem.class );        
+        pluginManager = lookup( PluginManager.class );        
+        lifecycleExecutor = (DefaultLifecycleExecutor) lookup( 
LifecycleExecutor.class );
+    }
+
+    public void testMojoExecution()
+        throws Exception
+    {
+        // - find the plugin [extension point: any client may wish to do 
whatever they choose]
+        // - load the plugin into a classloader [extension point: we want to 
take them from a repository, some may take from disk or whatever]
+        // - configure the plugin [extension point]
+        // - execute the plugin    
+        
+        File pom = new File( getBasedir(), "src/test/pom.xml" );
+       
+        // For testing I want to use my standard local repository and settings.
+        
+        ArtifactRepository localRepository = 
repositorySystem.createLocalRepository( new File( 
"/Users/jvanzyl/.m2/repository" ) ); 
+        
+        ProjectBuilderConfiguration configuration = new 
DefaultProjectBuilderConfiguration()
+            .setLocalRepository( localRepository )
+            .setRemoteRepositories( null );
+        
+        MavenProject project = projectBuilder.build( pom, configuration );
+        
+        // now i want to grab the configuration for the remote resources plugin
+        
+        assertEquals( "maven", project.getArtifactId() );
+        
+        Plugin plugin = new Plugin();
+        plugin.setGroupId( "org.apache.maven.plugins" );
+        plugin.setArtifactId( "maven-remote-resources-plugin" );
+        // The version should be specified in the POM.
+        
+        MavenRealmManager realmManager = new DefaultMavenRealmManager( 
getContainer(), new ConsoleLogger( 0, "logger" ) );        
+        MavenSession session = new MavenSession( localRepository, realmManager 
);
+        
+        PluginDescriptor pd = pluginManager.loadPlugin( plugin, project, 
session );        
+        assertNotNull( pd );
+        assertEquals( "org.apache.maven.plugins", pd.getGroupId() );
+        assertEquals( "maven-remote-resources-plugin", pd.getArtifactId() );
+        assertEquals( "1.0", pd.getVersion() );        
+        
+        MojoDescriptor mojoDescriptor = pd.getMojo( "process" );
+        assertNotNull( mojoDescriptor );
+        System.out.println( "configuration >>> " + 
mojoDescriptor.getConfiguration() );
+    }
+    
+    protected void customizeContainerConfiguration( ContainerConfiguration 
containerConfiguration )
+    {
+        containerConfiguration.addComponentDiscoverer( new 
MavenPluginDiscoverer() );        
+        containerConfiguration.addComponentDiscoveryListener( new 
MavenPluginCollector() );
+    }    
+}

Propchange: 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/components/branches/MNG-2766/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?rev=751582&r1=751581&r2=751582&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
 Mon Mar  9 04:51:13 2009
@@ -482,7 +482,8 @@
             ContainerConfiguration cc = new DefaultContainerConfiguration()
                 .addComponentDiscoverer( new MavenPluginDiscoverer() )
                 .addComponentDiscoveryListener( new MavenPluginCollector() )
-                .setClassWorld( classWorld ).setName( "embedder" );
+                .setClassWorld( classWorld )
+                .setName( "embedder" );
 
             container = new DefaultPlexusContainer( cc );
         }

Modified: 
maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java?rev=751582&r1=751581&r2=751582&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
 Mon Mar  9 04:51:13 2009
@@ -17,6 +17,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.net.MalformedURLException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -96,7 +97,7 @@
     private Map<String, AuthenticationInfo> authenticationInfoMap = new 
HashMap<String, AuthenticationInfo>();
 
     private Map<String, RepositoryPermissions> serverPermissionsMap = new 
HashMap<String, RepositoryPermissions>();
-    
+
     // Artifact Creation
 
     public Artifact createArtifact( String groupId, String artifactId, String 
version, String scope, String type )
@@ -171,17 +172,17 @@
 
     /**
      * @return {...@link Set} &lt; {...@link Artifact} >
-     * @todo desperately needs refactoring. It's just here because it's 
implementation is maven-project specific
+     * @todo desperately needs refactoring. It's just here because it's 
implementation is
+     *       maven-project specific
      */
-    public Set<Artifact> createArtifacts( List<Dependency> dependencies, 
String inheritedScope,
-                                          ArtifactFilter dependencyFilter, 
MavenRepositoryWrapper reactor )
+    public Set<Artifact> createArtifacts( List<Dependency> dependencies, 
String inheritedScope, ArtifactFilter dependencyFilter, MavenRepositoryWrapper 
reactor )
         throws VersionNotFoundException
     {
         return createArtifacts( artifactFactory, dependencies, inheritedScope, 
dependencyFilter, reactor );
     }
 
     @Deprecated
-    public static Set<Artifact> createArtifacts( ArtifactFactory 
artifactFactory,List<Dependency> dependencies, String inheritedScope, 
ArtifactFilter dependencyFilter, MavenRepositoryWrapper reactor )
+    public static Set<Artifact> createArtifacts( ArtifactFactory 
artifactFactory, List<Dependency> dependencies, String inheritedScope, 
ArtifactFilter dependencyFilter, MavenRepositoryWrapper reactor )
         throws VersionNotFoundException
     {
         Set<Artifact> projectArtifacts = new LinkedHashSet<Artifact>( 
dependencies.size() );
@@ -208,9 +209,7 @@
             {
                 throw new VersionNotFoundException( reactor.getId(), d, 
reactor.getFile(), e );
             }
-            Artifact artifact = artifactFactory.createDependencyArtifact( 
d.getGroupId(), d.getArtifactId(),
-                                                                          
versionRange, d.getType(), d.getClassifier(),
-                                                                          
scope, inheritedScope, d.isOptional() );
+            Artifact artifact = artifactFactory.createDependencyArtifact( 
d.getGroupId(), d.getArtifactId(), versionRange, d.getType(), 
d.getClassifier(), scope, inheritedScope, d.isOptional() );
 
             if ( Artifact.SCOPE_SYSTEM.equals( scope ) )
             {
@@ -257,8 +256,8 @@
         }
 
         return projectArtifacts;
-    }    
-    
+    }
+
     public ArtifactRepository buildArtifactRepository( Repository repo )
         throws InvalidRepositoryException
     {
@@ -319,6 +318,19 @@
 
     // From MavenExecutionRequestPopulator
 
+    public ArtifactRepository createLocalRepository( File localRepository )
+        throws InvalidRepositoryException
+    {
+        try
+        {
+            return createRepository( 
localRepository.toURI().toURL().toString(), "maven.repo.local" );
+        }
+        catch ( MalformedURLException e )
+        {
+            throw new InvalidRepositoryException( "Error creating local 
repository.", "maven.repo.local", e );
+        }
+    }
+
     public ArtifactRepository createLocalRepository( String url, String 
repositoryId )
         throws IOException
     {
@@ -373,7 +385,7 @@
     }
 
     public ArtifactResolutionResult resolve( ArtifactResolutionRequest request 
)
-    {                        
+    {
         return artifactResolver.resolve( request );
     }
 
@@ -400,8 +412,7 @@
         proxies.put( protocol, proxyInfo );
     }
 
-    public void addAuthenticationInfo( String repositoryId, String username, 
String password, String privateKey,
-                                       String passphrase )
+    public void addAuthenticationInfo( String repositoryId, String username, 
String password, String privateKey, String passphrase )
     {
         AuthenticationInfo authInfo = new AuthenticationInfo();
         authInfo.setUserName( username );
@@ -437,14 +448,14 @@
             serverPermissionsMap.put( repositoryId, permissions );
         }
     }
-    
+
     // Mirror 
-    
+
     public void addMirror( String id, String mirrorOf, String url )
     {
         mirrorBuilder.addMirror( id, mirrorOf, url );
     }
-    
+
     public List<ArtifactRepository> getMirrors( List<ArtifactRepository> 
repositories )
     {
         return mirrorBuilder.getMirrors( repositories );

Modified: 
maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java?rev=751582&r1=751581&r2=751582&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java
 Mon Mar  9 04:51:13 2009
@@ -15,6 +15,7 @@
  * the License.
  */
 
+import java.io.File;
 import java.io.IOException;
 import java.util.List;
 import java.util.Set;
@@ -61,9 +62,13 @@
     ArtifactRepository buildArtifactRepository( Repository repository )
         throws InvalidRepositoryException;
         
+    //!!jvz Change this to use a file
     ArtifactRepository createLocalRepository( String url, String repositoryId )
         throws IOException;
 
+    ArtifactRepository createLocalRepository( File localRepository )
+        throws InvalidRepositoryException;
+    
     ArtifactResolutionResult resolve( ArtifactResolutionRequest request );
 
     //MetadataResolutionResult resolveMetadata( MetadataResolutionRequest 
request );


Reply via email to