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 {