You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2005/10/08 18:48:29 UTC

svn commit: r307311 - in /maven/components/trunk/maven-project/src: main/java/org/apache/maven/project/interpolation/ test/java/org/apache/maven/project/interpolation/

Author: brett
Date: Sat Oct  8 09:48:21 2005
New Revision: 307311

URL: http://svn.apache.org/viewcvs?rev=307311&view=rev
Log:
PR: MNG-864
Fail build if the model contains an expression that doesn't evaluate

Modified:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolationException.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolationException.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolationException.java?rev=307311&r1=307310&r2=307311&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolationException.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolationException.java Sat Oct  8 09:48:21 2005
@@ -25,13 +25,19 @@
     extends Exception
 {
     private String expression;
+
     private String originalMessage;
 
+    public ModelInterpolationException( String message )
+    {
+        super( message );
+    }
+
     public ModelInterpolationException( String message, Throwable cause )
     {
         super( message, cause );
     }
-    
+
     public ModelInterpolationException( String expression, String message, Throwable cause )
     {
         super( "The POM expression: " + expression + " could not be evaluated. Reason: " + message, cause );
@@ -39,7 +45,7 @@
         this.expression = expression;
         this.originalMessage = message;
     }
-    
+
     public ModelInterpolationException( String expression, String message )
     {
         super( "The POM expression: " + expression + " could not be evaluated. Reason: " + message );
@@ -47,15 +53,15 @@
         this.expression = expression;
         this.originalMessage = message;
     }
-    
+
     public String getExpression()
     {
         return expression;
     }
-    
+
     public String getOriginalMessage()
     {
         return originalMessage;
     }
-    
+
 }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java?rev=307311&r1=307310&r2=307311&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java Sat Oct  8 09:48:21 2005
@@ -28,13 +28,13 @@
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
+import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import java.util.Map;
 
 /**
  * Use a regular expression search to find and resolve expressions within the POM.
- * 
+ *
  * @author jdcasey Created on Feb 3, 2005
  * @version $Id$
  * @todo Consolidate this logic with the PluginParameterExpressionEvaluator, minus deprecations/bans.
@@ -46,11 +46,11 @@
     private static final Pattern EXPRESSION_PATTERN = Pattern.compile( "\\$\\{(pom\\.|project\\.)?([^}]+)\\}" );
 
     /**
-     * Serialize the inbound Model instance to a StringWriter, perform the regex replacement to resolve 
+     * Serialize the inbound Model instance to a StringWriter, perform the regex replacement to resolve
      * POM expressions, then re-parse into the resolved Model instance.
      * <br/>
      * <b>NOTE:</b> This will result in a different instance of Model being returned!!!
-     * 
+     *
      * @param model The inbound Model instance, to serialize and reference for expression resolution
      * @param context The other context map to be used during resolution
      * @return The resolved instance of the inbound Model. This is a different instance!
@@ -110,7 +110,7 @@
             {
                 value = model.getProperties().getProperty( realExpr );
             }
-            
+
             try
             {
                 if ( value == null )
@@ -127,7 +127,7 @@
                                   e );
                 }
             }
-            
+
             // if the expression refers to itself, skip it.
             if ( wholeExpr.equals( value ) )
             {
@@ -141,6 +141,11 @@
                 // result = matcher.replaceFirst( stringValue );
                 // but this could result in multiple lookups of stringValue, and replaceAll is not correct behaviour
                 matcher.reset( result );
+            }
+            else
+            {
+                throw new ModelInterpolationException(
+                    "Expression '" + wholeExpr + "' did not evaluate to anything in the model" );
             }
         }
 

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java?rev=307311&r1=307310&r2=307311&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java Sat Oct  8 09:48:21 2005
@@ -68,9 +68,17 @@
 
         model.addDependency( dep );
 
-        Model out = new RegexBasedModelInterpolator().interpolate( model, context );
+        try
+        {
+            Model out = new RegexBasedModelInterpolator().interpolate( model, context );
+            fail( "Should have failed to interpolate with invalid reference" );
+        }
+        catch ( ModelInterpolationException expected )
+        {
+            assertTrue( true );
+        }
 
-        assertEquals( "${something}", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
+//        assertEquals( "${something}", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
     }
 
     public void testTwoReferences()