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}" );
     }