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 2008/08/01 22:37:34 UTC
svn commit: r681814 - in
/maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin:
DefaultPluginManager.java PluginParameterExpressionEvaluator.java
Author: jdcasey
Date: Fri Aug 1 13:37:34 2008
New Revision: 681814
URL: http://svn.apache.org/viewvc?rev=681814&view=rev
Log:
[MNG-3694] Calculate concrete states for projects (reactor and the one in direct use) on-demand in the PluginParameterExpressionEvaluator, then restore dynamism after the mojo executes or the report is handed back (just before the latter).
Modified:
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
Modified: maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=681814&r1=681813&r2=681814&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Fri Aug 1 13:37:34 2008
@@ -421,18 +421,6 @@
String artifactId = pluginDescriptor.getArtifactId();
String executionId = mojoExecution.getExecutionId();
- if ( !project.isConcrete() )
- {
- try
- {
- mavenProjectBuilder.calculateConcreteState( project, session.getProjectBuilderConfiguration() );
- }
- catch ( ModelInterpolationException e )
- {
- throw new PluginManagerException( "Failed to calculate concrete state for project: " + project, e );
- }
- }
-
Xpp3Dom dom = project.getGoalConfiguration( groupId, artifactId, executionId, goalId );
Xpp3Dom reportDom = project.getReportConfiguration( groupId, artifactId, executionId );
dom = Xpp3Dom.mergeXpp3Dom( dom, reportDom );
@@ -538,13 +526,27 @@
}
}
- try
- {
- mavenProjectBuilder.restoreDynamicState( project, session.getProjectBuilderConfiguration() );
- }
- catch ( ModelInterpolationException e )
+ restoreAllProjectDynamism( session );
+ }
+
+ private void restoreAllProjectDynamism( MavenSession session )
+ throws PluginManagerException
+ {
+ List reactorProjects = session.getSortedProjects();
+ if ( reactorProjects != null )
{
- throw new PluginManagerException( "Failed to restore dynamic state for project: " + project, e );
+ for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
+ {
+ MavenProject project = (MavenProject) it.next();
+ try
+ {
+ mavenProjectBuilder.restoreDynamicState( project, session.getProjectBuilderConfiguration() );
+ }
+ catch ( ModelInterpolationException e )
+ {
+ throw new PluginManagerException( "Failed to restore dynamic state for project: " + project, e );
+ }
+ }
}
}
@@ -557,18 +559,6 @@
MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
PluginDescriptor descriptor = mojoDescriptor.getPluginDescriptor();
- if ( !project.isConcrete() )
- {
- try
- {
- mavenProjectBuilder.calculateConcreteState( project, session.getProjectBuilderConfiguration() );
- }
- catch ( ModelInterpolationException e )
- {
- throw new PluginManagerException( "Failed to calculate concrete state for project: " + project, e );
- }
- }
-
Xpp3Dom dom = project.getReportConfiguration( descriptor.getGroupId(), descriptor.getArtifactId(),
mojoExecution.getExecutionId() );
@@ -579,14 +569,7 @@
MavenReport report = (MavenReport) getConfiguredMojo( session, dom, project, true, mojoExecution );
- try
- {
- mavenProjectBuilder.restoreDynamicState( project, session.getProjectBuilderConfiguration() );
- }
- catch ( ModelInterpolationException e )
- {
- throw new PluginManagerException( "Failed to restore dynamic state for project: " + project, e );
- }
+ restoreAllProjectDynamism( session );
return report;
}
@@ -698,7 +681,9 @@
// mojoDescriptor.getConfiguration() );
ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session, mojoExecution,
- pathTranslator, getLogger(),
+ pathTranslator,
+ mavenProjectBuilder,
+ getLogger(),
project,
session.getExecutionProperties() );
Modified: maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java?rev=681814&r1=681813&r2=681814&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java (original)
+++ maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java Fri Aug 1 13:37:34 2008
@@ -23,6 +23,8 @@
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.interpolation.ModelInterpolationException;
import org.apache.maven.project.path.PathTranslator;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
@@ -31,6 +33,8 @@
import java.io.File;
import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -74,9 +78,22 @@
private final Properties properties;
+ private final MavenProjectBuilder projectBuilder;
+
+ public PluginParameterExpressionEvaluator( MavenSession context,
+ MojoExecution mojoExecution,
+ PathTranslator pathTranslator,
+ Logger logger,
+ MavenProject project,
+ Properties properties )
+ {
+ this( context, mojoExecution, pathTranslator, null, logger, project, properties );
+ }
+
public PluginParameterExpressionEvaluator( MavenSession context,
MojoExecution mojoExecution,
PathTranslator pathTranslator,
+ MavenProjectBuilder projectBuilder,
Logger logger,
MavenProject project,
Properties properties )
@@ -84,6 +101,7 @@
this.context = context;
this.mojoExecution = mojoExecution;
this.pathTranslator = pathTranslator;
+ this.projectBuilder = projectBuilder;
this.logger = logger;
this.project = project;
this.properties = properties;
@@ -175,10 +193,14 @@
}
else if ( "session".equals( expression ) )
{
+ calculateAllConcreteStates();
+
value = context;
}
else if ( "reactorProjects".equals( expression ) )
{
+ calculateAllConcreteStates();
+
value = context.getSortedProjects();
}
else if ( "reports".equals( expression ) )
@@ -191,14 +213,19 @@
}
else if ( "project".equals( expression ) )
{
+ calculateConcreteState( project );
+
value = project;
}
else if ( "executedProject".equals( expression ) )
{
+ calculateConcreteState( project.getExecutionProject() );
value = project.getExecutionProject();
}
else if ( expression.startsWith( "project" ) )
{
+ calculateConcreteState( project );
+
try
{
int pathSeparator = expression.indexOf( "/" );
@@ -336,6 +363,35 @@
return value;
}
+ private void calculateAllConcreteStates()
+ throws ExpressionEvaluationException
+ {
+ List projects = context.getSortedProjects();
+ if ( projects != null )
+ {
+ for ( Iterator it = projects.iterator(); it.hasNext(); )
+ {
+ calculateConcreteState( (MavenProject) it.next() );
+ }
+ }
+ }
+
+ private void calculateConcreteState( MavenProject project )
+ throws ExpressionEvaluationException
+ {
+ if ( projectBuilder != null && !project.isConcrete() )
+ {
+ try
+ {
+ projectBuilder.calculateConcreteState( project, context.getProjectBuilderConfiguration() );
+ }
+ catch ( ModelInterpolationException e )
+ {
+ throw new ExpressionEvaluationException( "Failed to calculate concrete state for project: " + project, e );
+ }
+ }
+ }
+
private String stripTokens( String expr )
{
if ( expr.startsWith( "${" ) && expr.indexOf( "}" ) == expr.length() - 1 )