You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2020/09/08 15:02:52 UTC

[sling-org-apache-sling-feature] 01/02: SLING-9684 - Support resolving variables within variables

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature.git

commit 4d71eb2effe2ce267883ef93769953cb7774632e
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Fri Sep 4 16:47:00 2020 +0200

    SLING-9684 - Support resolving variables within variables
    
    Recursively replace variables in FeatureBuilder.replaceVariables
---
 src/main/java/org/apache/sling/feature/builder/FeatureBuilder.java   | 5 +++--
 .../java/org/apache/sling/feature/builder/FeatureBuilderTest.java    | 2 ++
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/builder/FeatureBuilder.java b/src/main/java/org/apache/sling/feature/builder/FeatureBuilder.java
index 56012d0..8f412d7 100644
--- a/src/main/java/org/apache/sling/feature/builder/FeatureBuilder.java
+++ b/src/main/java/org/apache/sling/feature/builder/FeatureBuilder.java
@@ -278,8 +278,9 @@ public abstract class FeatureBuilder {
                     val = feature.getVariables().get(name);
                 }
 
-                if (val != null) {
-                    m.appendReplacement(sb, Matcher.quoteReplacement(val));
+                if (val != null) { 
+                    String replaced = replaceVariables(val, additionalVariables, feature);
+                    m.appendReplacement(sb, Matcher.quoteReplacement(replaced));
                 }
                 else {
                     throw new IllegalStateException("Undefined variable: " + name);
diff --git a/src/test/java/org/apache/sling/feature/builder/FeatureBuilderTest.java b/src/test/java/org/apache/sling/feature/builder/FeatureBuilderTest.java
index 11ab945..9e8357a 100644
--- a/src/test/java/org/apache/sling/feature/builder/FeatureBuilderTest.java
+++ b/src/test/java/org/apache/sling/feature/builder/FeatureBuilderTest.java
@@ -911,6 +911,7 @@ public class FeatureBuilderTest {
         kvMap.put("varvariable", "${myvar}");
         kvMap.put("var.2", "2");
         kvMap.put("var-3", "3");
+        kvMap.put("var-4", "${var1}");
 
 
         assertEquals("foobarfoo", FeatureBuilder.replaceVariables("foo${var1}foo", null, feature));
@@ -918,6 +919,7 @@ public class FeatureBuilderTest {
         assertEquals("${}test${myvar}2", FeatureBuilder.replaceVariables("${}test${varvariable}${var.2}", null, feature ));
         assertEquals("${undefined}",FeatureBuilder.replaceVariables("${undefined}", null, feature));
         assertEquals("var-3",FeatureBuilder.replaceVariables("var-${var-3}", null, feature));
+        assertEquals("bar", FeatureBuilder.replaceVariables("${var-4}", null, feature));
     }
 
     @Test public void testHandleVarsWithConflict() throws Exception {