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()