Author: sisbell
Date: Tue Nov 11 21:17:42 2008
New Revision: 713266

URL: http://svn.apache.org/viewvc?rev=713266&view=rev
Log:
Fix for IT 3833. New implementation does multiple interpolation iterations, 
until it detects that there is no longer a change in the list.

Modified:
    
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java
    
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java

Modified: 
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java?rev=713266&r1=713265&r2=713266&view=diff
==============================================================================
--- 
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java
 (original)
+++ 
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java
 Tue Nov 11 21:17:42 2008
@@ -210,7 +210,7 @@
      *
      * @param property the interpolator property used to resolve
      */
-    public void resolveWith( InterpolatorProperty property )
+    public boolean resolveWith( InterpolatorProperty property )
     {
         if ( property == null )
         {
@@ -218,12 +218,14 @@
         }
         if ( isResolved() )
         {
-            return;
+            return false;
         }
+        boolean resolved = false;
         for ( String expression : unresolvedExpressions )
         {
             if ( property.getKey().equals( expression ) )
             {
+                resolved = true;
                 resolvedValue = resolvedValue.replace( property.getKey(), 
property.getValue() );
                 unresolvedExpressions.clear();
                 Matcher matcher = EXPRESSION_PATTERN.matcher( resolvedValue );
@@ -234,6 +236,7 @@
                 break;
             }
         }
+        return resolved;
     }
 
     public String toString()

Modified: 
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java?rev=713266&r1=713265&r2=713266&view=diff
==============================================================================
--- 
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
 (original)
+++ 
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
 Tue Nov 11 21:17:42 2008
@@ -147,24 +147,24 @@
 
         LinkedHashSet<InterpolatorProperty> ips = new 
LinkedHashSet<InterpolatorProperty>();
         ips.addAll(interpolatorProperties);
-
-        for ( InterpolatorProperty ip : ips)
-        {
-            for ( ModelProperty mp : unresolvedProperties )
-            {
-                  mp.resolveWith(ip);
-            }
-        }
-
-        for ( InterpolatorProperty ip : ips )
+        boolean continueInterpolation = true;
+        while(continueInterpolation)
         {
-            for ( ModelProperty mp : unresolvedProperties )
+            continueInterpolation = false;
+            for ( InterpolatorProperty ip : ips)
             {
-                  mp.resolveWith(ip);
+                for ( ModelProperty mp : unresolvedProperties )
+                {
+                    if(mp.resolveWith(ip) && !continueInterpolation )
+                    {
+                        continueInterpolation = true;
+                    }
+                }
             }
         }
     }
 
+
     /**
      * Transforms the specified model properties using the specified 
transformers.
      *


Reply via email to