You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/11/12 06:17:45 UTC

svn commit: r713266 - in /maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model: ModelProperty.java ModelTransformerContext.java

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.
      *