Author: jdcasey
Date: Wed Apr 5 16:57:52 2006
New Revision: 391858
URL: http://svn.apache.org/viewcvs?rev=391858&view=rev
Log:
Merging from 391857 on branch. Fixes infinite recursion when expressions
self-reference as part of a larger value.
Modified:
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/RegexBasedModelInterpolator.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java?rev=391858&r1=391857&r2=391858&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
Wed Apr 5 16:57:52 2006
@@ -164,7 +164,7 @@
}
// if the expression refers to itself, skip it.
- if ( wholeExpr.equals( value ) )
+ if ( String.valueOf( value ).indexOf( realExpr ) > -1 )
{
throw new ModelInterpolationException( wholeExpr,
model.getId() + " references itself." );
}
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=391858&r1=391857&r2=391858&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
Wed Apr 5 16:57:52 2006
@@ -22,7 +22,9 @@
import org.apache.maven.model.Model;
import org.apache.maven.model.Organization;
import org.apache.maven.model.Repository;
+import org.apache.maven.model.Scm;
+import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import java.util.Properties;
@@ -43,6 +45,27 @@
context = Collections.singletonMap( "basedir", "myBasedir" );
}
+
+ public void testShouldThrowExceptionOnRecursiveScmConnectionReference()
throws IOException
+ {
+ Model model = new Model();
+
+ Scm scm = new Scm();
+ scm.setConnection( "${project.scm.connection}/somepath" );
+
+ model.setScm( scm );
+
+ try
+ {
+ Model out = new RegexBasedModelInterpolator().interpolate( model,
context );
+
+ fail( "The interpolator should not allow self-referencing
expressions in POM." );
+ }
+ catch ( ModelInterpolationException e )
+ {
+
+ }
+ }
public void testShouldInterpolateOrganizationNameCorrectly()
throws Exception
@@ -179,8 +202,6 @@
Model out = new RegexBasedModelInterpolator( envars ).interpolate(
model, context );
- System.out.println( ">>> " + out.getProperties().getProperty(
"outputDirectory" ) );
-
assertEquals( out.getProperties().getProperty( "outputDirectory" ),
"${env.DOES_NOT_EXIST}" );
}
@@ -196,8 +217,6 @@
model.setProperties( modelProperties );
Model out = new RegexBasedModelInterpolator().interpolate( model,
context );
-
- System.out.println( ">>> " + out.getProperties().getProperty(
"outputDirectory" ) );
assertEquals( out.getProperties().getProperty( "outputDirectory" ),
"${DOES_NOT_EXIST}" );
}