You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2006/04/06 01:54:37 UTC
svn commit: r391857 - in
/maven/components/branches/maven-2.0.x/maven-project/src:
main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
Author: jdcasey
Date: Wed Apr 5 16:54:36 2006
New Revision: 391857
URL: http://svn.apache.org/viewcvs?rev=391857&view=rev
Log:
Fixing infinite recursion when an expression self-references but the reference is only part of the value. Throws a ModelInterpolationException when this happens now. Including test.
Modified:
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
Modified: maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
URL: http://svn.apache.org/viewcvs/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java?rev=391857&r1=391856&r2=391857&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java Wed Apr 5 16:54:36 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/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
URL: http://svn.apache.org/viewcvs/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java?rev=391857&r1=391856&r2=391857&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java Wed Apr 5 16:54:36 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}" );
}