svn commit: r831552 - /maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java

View: New views
1 Messages — Rating Filter:   Alert me  

svn commit: r831552 - /maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java

by bentmann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Author: bentmann
Date: Sat Oct 31 15:24:56 2009
New Revision: 831552

URL: http://svn.apache.org/viewvc?rev=831552&view=rev
Log:
[MNG-4423] Allow to query session data via plugin parameter expressions

Modified:
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java?rev=831552&r1=831551&r2=831552&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java Sat Oct 31 15:24:56 2009
@@ -163,13 +163,37 @@
         {
             value = session;
         }
+        else if ( expression.startsWith( "session" ) )
+        {
+            try
+            {
+                int pathSeparator = expression.indexOf( "/" );
+
+                if ( pathSeparator > 0 )
+                {
+                    String pathExpression = expression.substring( 1, pathSeparator );
+                    value = ReflectionValueExtractor.evaluate( pathExpression, session );
+                    value = value + expression.substring( pathSeparator );
+                }
+                else
+                {
+                    value = ReflectionValueExtractor.evaluate( expression.substring( 1 ), session );
+                }
+            }
+            catch ( Exception e )
+            {
+                // TODO: don't catch exception
+                throw new ExpressionEvaluationException( "Error evaluating plugin parameter expression: " + expression,
+                                                         e );
+            }
+        }
         else if ( "reactorProjects".equals( expression ) )
         {
             value = session.getProjects();
         }
-        else if ("mojoExecution".equals(expression))
+        else if ( "mojoExecution".equals( expression ) )
         {
-         value = mojoExecution;
+            value = mojoExecution;
         }
         else if ( "project".equals( expression ) )
         {
@@ -180,7 +204,7 @@
             value = project.getExecutionProject();
         }
         else if ( expression.startsWith( "project" ) || expression.startsWith( "pom" ) )
-        {            
+        {
             try
             {
                 int pathSeparator = expression.indexOf( "/" );