You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ca...@apache.org on 2006/01/01 21:31:06 UTC

svn commit: r360548 - in /maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun: AbstractAntMojo.java AntPropertyHelper.java components/AntTargetConverter.java

Author: carlos
Date: Sun Jan  1 12:31:00 2006
New Revision: 360548

URL: http://svn.apache.org/viewcvs?rev=360548&view=rev
Log:
Try to get properties through a expression evaluator first, delegating to ant after.
PR: MANTRUN-36
Submitted By: Gilles Scokart

Modified:
    maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java
    maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java
    maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java

Modified: maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java?rev=360548&r1=360547&r2=360548&view=diff
==============================================================================
--- maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java (original)
+++ maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java Sun Jan  1 12:31:00 2006
@@ -25,12 +25,14 @@
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.antrun.components.AntTargetConverter;
 import org.apache.maven.project.MavenProject;
 import org.apache.tools.ant.DefaultLogger;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.PropertyHelper;
 import org.apache.tools.ant.Target;
 import org.apache.tools.ant.types.Path;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -54,11 +56,14 @@
     {
         try
         {
+            //TODO refactor - place the manipulation of the expressionEvaluator into a separated class.
+            ExpressionEvaluator exprEvaluator = (ExpressionEvaluator) antTasks.getProject().getReference(AntTargetConverter.MAVEN_EXPRESSION_EVALUATOR_ID);
+
             Project antProject = antTasks.getProject();
 
             PropertyHelper propertyHelper = PropertyHelper.getPropertyHelper( antProject );
 
-            propertyHelper.setNext( new AntPropertyHelper( mavenProject, getLog() ) );
+            propertyHelper.setNext( new AntPropertyHelper( exprEvaluator, getLog() ) );
 
             DefaultLogger antLogger = new DefaultLogger();
             antLogger.setOutputPrintStream( System.out );

Modified: maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java?rev=360548&r1=360547&r2=360548&view=diff
==============================================================================
--- maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java (original)
+++ maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java Sun Jan  1 12:31:00 2006
@@ -19,6 +19,8 @@
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 import org.apache.tools.ant.PropertyHelper;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
 import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
 
 /**
@@ -30,14 +32,27 @@
     extends PropertyHelper
 {
     private Log log;
+    private ExpressionEvaluator exprEvaluator;
     private MavenProject mavenProject;
 
+    /**
+     * @deprecated use the other constructor
+     * @param project
+     * @param l
+     */
     public AntPropertyHelper( MavenProject project, Log l )
     {
         mavenProject = project;
         log = l;
     }
 
+    public AntPropertyHelper( ExpressionEvaluator exprEvaluator, Log l )
+    {
+        this.mavenProject = null;
+        this.exprEvaluator = exprEvaluator;
+        this.log = l;
+    }
+
     public synchronized Object getPropertyHook( String ns, String name, boolean user )
     {
         if ( log.isDebugEnabled() )
@@ -45,6 +60,47 @@
             log.debug( "getProperty(ns="+ns+", name="+name+", user="+user+")" );
         }
 
+        /* keep old behaviour */
+        if ( mavenProject != null )
+        {
+            return getPropertyHook( ns, name, user, mavenProject );
+        }
+        
+        Object val = null;
+        try 
+        {
+            val = exprEvaluator.evaluate( "${" + name + "}" );
+        }
+        catch (ExpressionEvaluationException e) 
+        {
+            if ( log.isErrorEnabled() )
+            {
+                log.error("Failed to evaluate expression" , e);
+            }
+        }
+        if ( val == null )
+        {
+            val = super.getPropertyHook( ns, name, user );
+
+            if ( val == null )
+            {
+                val = System.getProperty( name.toString() );
+            }
+        }
+
+        return val;
+    }
+
+    /**
+     * @deprecated added to keep backwards compatibility
+     * @param ns
+     * @param name
+     * @param user
+     * @param mavenProject
+     * @return
+     */
+    private Object getPropertyHook( String ns, String name, boolean user, MavenProject mavenProject )
+    {
         Object val = null;
         try
         {
@@ -85,4 +141,5 @@
 
         return val;
     }
+
 }

Modified: maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java?rev=360548&r1=360547&r2=360548&view=diff
==============================================================================
--- maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java (original)
+++ maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java Sun Jan  1 12:31:00 2006
@@ -27,7 +27,6 @@
 import org.codehaus.plexus.component.configurator.converters.AbstractConfigurationConverter;
 import org.codehaus.plexus.component.configurator.converters.ConfigurationConverter;
 import org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
@@ -40,6 +39,8 @@
 public class AntTargetConverter
     extends AbstractConfigurationConverter
 {
+    public static final String MAVEN_EXPRESSION_EVALUATOR_ID = "maven.expressionEvaluator";
+
     public static final String ROLE = ConfigurationConverter.class.getName();
 
     public boolean canConvert( Class type )
@@ -79,14 +80,16 @@
         target.setProject( project );
         project.addTarget( target );
 
+        project.addReference(MAVEN_EXPRESSION_EVALUATOR_ID , expressionEvaluator);
+        
         initDefinitions( project, target );
 
-        processConfiguration( null, project, target, configuration, expressionEvaluator );
+        processConfiguration( null, project, target, configuration );
     }
 
 
     private void processConfiguration( RuntimeConfigurable parentWrapper, Project project, Target target,
-                                       PlexusConfiguration configuration, ExpressionEvaluator expressionEvaluator )
+                                       PlexusConfiguration configuration )
         throws ComponentConfigurationException
     {
         int items = configuration.getChildCount();
@@ -136,18 +139,6 @@
                 try
                 {
                     String v = childConfiguration.getAttribute( attrNames[a] );
-
-                    try
-                    {
-                        Object evaluatedExpr = expressionEvaluator.evaluate( v );
-                        v = evaluatedExpr == null ? v : evaluatedExpr.toString();
-                    }
-                    catch ( ExpressionEvaluationException e )
-                    {
-                        throw new ComponentConfigurationException( "Error evaluating value '" + v + "' of attribute '" +
-                            attrNames[a] + "' of tag '" + childConfiguration.getName() + "'", e );
-                    }
-
                     wrapper.setAttribute( attrNames[a], v );
                 }
                 catch ( PlexusConfigurationException e )
@@ -163,7 +154,7 @@
                 parentWrapper.addChild( wrapper );
             }
 
-            processConfiguration( wrapper, project, target, childConfiguration, expressionEvaluator );
+            processConfiguration( wrapper, project, target, childConfiguration );
         }
     }