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


Reply via email to