Author: olamy
Date: Sat Aug  1 22:01:51 2009
New Revision: 799937

URL: http://svn.apache.org/viewvc?rev=799937&view=rev
Log:
start working
Issue id: MNG-4162

Modified:
    
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
    maven/components/branches/MNG-4162/pom.xml

Modified: 
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=799937&r1=799936&r2=799937&view=diff
==============================================================================
--- 
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Sat Aug  1 22:01:51 2009
@@ -491,7 +491,7 @@
         throw new PluginManagerException( plugin, "Could not create ClassRealm 
for plugin " + baseRealmId, (Throwable) null );
     }
 
-    private Mojo getConfiguredMojo( MavenSession session, MavenProject 
project, MojoExecution mojoExecution, ClassRealm pluginRealm )
+    public Mojo getConfiguredMojo( MavenSession session, MavenProject project, 
MojoExecution mojoExecution, ClassRealm pluginRealm )
         throws PluginConfigurationException, PluginManagerException
     {
         MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
@@ -564,6 +564,81 @@
         }
 
     }
+    
+    public Object getConfiguredMojo(Class<?> clazz,  MavenSession session, 
MavenProject project, MojoExecution mojoExecution, ClassRealm pluginRealm )
+    throws PluginConfigurationException, PluginManagerException
+{
+    MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
+
+    PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor();
+
+    // We are forcing the use of the plugin realm for all lookups that might 
occur during
+    // the lifecycle that is part of the lookup. Here we are specifically 
trying to keep
+    // lookups that occur in contextualize calls in line with the right realm.
+    ClassRealm oldLookupRealm = container.setLookupRealm( pluginRealm );
+
+    ClassLoader oldClassLoader = 
Thread.currentThread().getContextClassLoader();
+    Thread.currentThread().setContextClassLoader( pluginRealm );
+    container.setLookupRealm( pluginRealm );
+
+    try
+    {
+        Object mojo;
+
+        try
+        {
+            mojo = container.lookup( clazz, mojoDescriptor.getRoleHint() );
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new PluginContainerException( mojoDescriptor, pluginRealm, 
"Unable to find the mojo '"
+                + mojoDescriptor.getGoal() + "' in the plugin '" + 
pluginDescriptor.getId() + "'", e );
+        }
+
+        if ( mojo instanceof ContextEnabled )
+        {
+            //TODO: find somewhere better to put the plugin context.
+            Map<String, Object> pluginContext = session.getPluginContext( 
pluginDescriptor, project );
+
+            if ( pluginContext != null )
+            {
+                pluginContext.put( "project", project );
+
+                pluginContext.put( "pluginDescriptor", pluginDescriptor );
+
+                ( (ContextEnabled) mojo ).setPluginContext( pluginContext );
+            }
+        }
+
+        // FIXME 
+        //mojo.setLog( new DefaultLog( logger ) );
+
+        Xpp3Dom dom = mojoExecution.getConfiguration();
+
+        PlexusConfiguration pomConfiguration;
+
+        if ( dom == null )
+        {
+            pomConfiguration = new XmlPlexusConfiguration( "configuration" );
+        }
+        else
+        {
+            pomConfiguration = new XmlPlexusConfiguration( dom );
+        }
+
+        ExpressionEvaluator expressionEvaluator = new 
PluginParameterExpressionEvaluator( session, mojoExecution );
+
+        populatePluginFields( (Mojo) mojo, mojoDescriptor, pluginRealm, 
pomConfiguration, expressionEvaluator );
+
+        return mojo;
+    }
+    finally
+    {
+        Thread.currentThread().setContextClassLoader( oldClassLoader );
+        container.setLookupRealm( oldLookupRealm );
+    }
+
+}    
 
     // ----------------------------------------------------------------------
     // Mojo Parameter Handling

Modified: 
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=799937&r1=799936&r2=799937&view=diff
==============================================================================
--- 
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
 (original)
+++ 
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
 Sat Aug  1 22:01:51 2009
@@ -22,6 +22,7 @@
 import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
 
 /**
@@ -30,20 +31,30 @@
 public interface PluginManager
 {
     // igorf: Way too many declared exceptions!
-    PluginDescriptor loadPlugin( Plugin plugin, ArtifactRepository 
localRepository, List<ArtifactRepository> remoteRepositories )
-        throws PluginNotFoundException, PluginResolutionException, 
PluginDescriptorParsingException, CycleDetectedInPluginGraphException, 
InvalidPluginDescriptorException;
+    PluginDescriptor loadPlugin( Plugin plugin, ArtifactRepository 
localRepository,
+                                 List<ArtifactRepository> remoteRepositories )
+        throws PluginNotFoundException, PluginResolutionException, 
PluginDescriptorParsingException,
+        CycleDetectedInPluginGraphException, InvalidPluginDescriptorException;
 
     // igorf: Way too many declared exceptions!
-    MojoDescriptor getMojoDescriptor( String groupId, String artifactId, 
String version, String goal, ArtifactRepository localRepository, 
List<ArtifactRepository> remoteRepositories )
-        throws PluginNotFoundException, PluginResolutionException, 
PluginDescriptorParsingException, CycleDetectedInPluginGraphException, 
MojoNotFoundException, InvalidPluginDescriptorException;
+    MojoDescriptor getMojoDescriptor( String groupId, String artifactId, 
String version, String goal,
+                                      ArtifactRepository localRepository, 
List<ArtifactRepository> remoteRepositories )
+        throws PluginNotFoundException, PluginResolutionException, 
PluginDescriptorParsingException,
+        CycleDetectedInPluginGraphException, MojoNotFoundException, 
InvalidPluginDescriptorException;
 
     // igorf: Way too many declared exceptions!
-    MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, 
ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories 
)
-        throws PluginNotFoundException, PluginResolutionException, 
PluginDescriptorParsingException, CycleDetectedInPluginGraphException, 
MojoNotFoundException, InvalidPluginDescriptorException;
+    MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, 
ArtifactRepository localRepository,
+                                      List<ArtifactRepository> 
remoteRepositories )
+        throws PluginNotFoundException, PluginResolutionException, 
PluginDescriptorParsingException,
+        CycleDetectedInPluginGraphException, MojoNotFoundException, 
InvalidPluginDescriptorException;
 
     void executeMojo( MavenSession session, MojoExecution execution )
         throws MojoFailureException, MojoExecutionException, 
PluginConfigurationException, PluginManagerException;
 
-    ClassRealm getPluginRealm( MavenSession session, PluginDescriptor 
pluginDescriptor ) 
+    ClassRealm getPluginRealm( MavenSession session, PluginDescriptor 
pluginDescriptor )
         throws PluginManagerException;
+
+    Object getConfiguredMojo( Class<?> clazz, MavenSession session, 
MavenProject project,
+                                     MojoExecution mojoExecution, ClassRealm 
pluginRealm )
+        throws PluginConfigurationException, PluginManagerException;    
 }
\ No newline at end of file

Modified: maven/components/branches/MNG-4162/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-4162/pom.xml?rev=799937&r1=799936&r2=799937&view=diff
==============================================================================
--- maven/components/branches/MNG-4162/pom.xml (original)
+++ maven/components/branches/MNG-4162/pom.xml Sat Aug  1 22:01:51 2009
@@ -450,12 +450,16 @@
     </profile>
     <profile>
       <id>m2e</id>
+      <properties>
+        <m2BuildDirectory>target</m2BuildDirectory>
+      </properties>      
       <activation>
         <property>
           <name>m2e.version</name>
         </property>
       </activation>
       <build>
+        <directory>${m2BuildDirectory}</directory>
         <plugins>
           <plugin>
             <groupId>org.maven.ide.eclipse</groupId>


Reply via email to