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 <[email protected]> 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 {
