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 2007/03/27 23:24:41 UTC

svn commit: r523087 - in /maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan: DefaultBuildPlanner.java SimpleDirectInvocationModifier.java

Author: jdcasey
Date: Tue Mar 27 14:24:41 2007
New Revision: 523087

URL: http://svn.apache.org/viewvc?view=rev&rev=523087
Log:
Fixing the case for site:run where a direct mojo invocation needs reports.

Added:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java   (with props)
Modified:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultBuildPlanner.java

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultBuildPlanner.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultBuildPlanner.java?view=diff&rev=523087&r1=523086&r2=523087
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultBuildPlanner.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultBuildPlanner.java Tue Mar 27 14:24:41 2007
@@ -8,6 +8,7 @@
 import org.apache.maven.lifecycle.binding.MojoBindingFactory;
 import org.apache.maven.lifecycle.model.LifecycleBindings;
 import org.apache.maven.lifecycle.model.MojoBinding;
+import org.apache.maven.lifecycle.model.Phase;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.plugin.loader.PluginLoader;
@@ -150,9 +151,29 @@
             {
                 List reportBindings = lifecycleBindingManager.getReportBindings( project );
 
-                BuildPlanModifier modder = new ReportingPlanModifier( mojoBinding, reportBindings );
+                Phase phase = LifecycleUtils.findPhaseForMojoBinding( mojoBinding, lifecycleBindings, true );
+                
+                if ( phase == null )
+                {
+                    if ( planElement instanceof DirectInvocationOriginElement )
+                    {
+                        DirectInvocationModifier modder = new SimpleDirectInvocationModifier( mojoBinding, reportBindings );
+
+                        ((DirectInvocationOriginElement) planElement).addDirectInvocationModifier( modder );
+                    }
+                    else
+                    {
+                        throw new LifecyclePlannerException( "Cannot inject reports for direct invocation: "
+                            + MojoBindingUtils.toString( mojoBinding )
+                            + "; current plan element does not accept direct-invocation modifiers." );
+                    }
+                }
+                else
+                {
+                    BuildPlanModifier modder = new ReportingPlanModifier( mojoBinding, reportBindings );
 
-                planElement.addModifier( modder );
+                    planElement.addModifier( modder );
+                }
 
                 // NOTE: the first sighting of a mojo requiring reports should satisfy this condition.
                 // therefore, we can break out as soon as we find one.

Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java?view=auto&rev=523087
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java Tue Mar 27 14:24:41 2007
@@ -0,0 +1,52 @@
+package org.apache.maven.lifecycle.plan;
+
+import org.apache.maven.lifecycle.binding.LifecycleBindingManager;
+import org.apache.maven.lifecycle.model.MojoBinding;
+import org.apache.maven.project.MavenProject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Inject a list of MojoBindings in place of the forking binding, bracketing the forked bindings with
+ * special mojos to control the forked-execution context.
+ * 
+ * @author jdcasey
+ *
+ */
+public class SimpleDirectInvocationModifier
+    implements DirectInvocationModifier
+{
+
+    private final List reportBindings;
+    private final MojoBinding targetBinding;
+
+    public SimpleDirectInvocationModifier( MojoBinding targetBinding, List reportBindings )
+    {
+        this.targetBinding = targetBinding;
+        this.reportBindings = reportBindings;
+    }
+
+    /**
+     * Return a list containing forked-execution context control MojoBindings, the forked-execution
+     * bindings themselves, and finally the binding that forked off a new execution branch.
+     */
+    public List getModifiedBindings( MavenProject project, LifecycleBindingManager bindingManager )
+    {
+        List result = new ArrayList();
+
+        result.addAll( reportBindings );
+        result.add( targetBinding );
+
+        return result;
+    }
+
+    /**
+     * Return the MojoBinding that forks execution to include the bindings in this modifier.
+     */
+    public MojoBinding getBindingToModify()
+    {
+        return targetBinding;
+    }
+
+}

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"