SLING-7949 Slingstart Maven Plugin should allow substitution of project properties in feature model files
Unit test included
diff --git a/src/main/java/org/apache/sling/maven/slingstart/FeatureModelConverter.java b/src/main/java/org/apache/sling/maven/slingstart/FeatureModelConverter.java
index 622296e..aa81756 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/FeatureModelConverter.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/FeatureModelConverter.java
@@ -33,6 +33,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
public class FeatureModelConverter {
static final String BUILD_DIR = "provisioning/converted";
@@ -113,12 +114,25 @@
static String replaceVars(MavenProject project, String s) {
// There must be a better way than enumerating all these?
- s = s.replaceAll("\\Q${project.groupId}\\E", project.getGroupId());
- s = s.replaceAll("\\Q${project.artifactId}\\E", project.getArtifactId());
- s = s.replaceAll("\\Q${project.version}\\E", project.getVersion());
+ s = replaceAll(s, "project.groupId", project.getGroupId());
+ s = replaceAll(s, "project.artifactId", project.getArtifactId());
+ s = replaceAll(s, "project.version", project.getVersion());
+
+
+ Properties props = project.getProperties();
+ if (props != null) {
+ for (String key : props.stringPropertyNames()) {
+ s = replaceAll(s, key, props.getProperty(key));
+ }
+ }
+
return s;
}
+ private static String replaceAll(String s, String key, String value) {
+ return s.replaceAll("\\Q${" + key + "}\\E", value);
+ }
+
private static ArtifactManager getArtifactManager(MavenProject project, MavenSession session)
throws IOException {
List<String> repos = new ArrayList<>();
diff --git a/src/test/java/org/apache/sling/maven/slingstart/FeatureModelConverterTest.java b/src/test/java/org/apache/sling/maven/slingstart/FeatureModelConverterTest.java
index 55590eb..b4deea8 100644
--- a/src/test/java/org/apache/sling/maven/slingstart/FeatureModelConverterTest.java
+++ b/src/test/java/org/apache/sling/maven/slingstart/FeatureModelConverterTest.java
@@ -32,6 +32,7 @@
import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
+import java.util.Properties;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -138,13 +139,18 @@
public void testReplaceVars() {
MavenProject mp = Mockito.mock(MavenProject.class);
+ Properties props = new Properties();
+ props.put("foo", "bar");
+
Mockito.when(mp.getGroupId()).thenReturn("abc");
Mockito.when(mp.getArtifactId()).thenReturn("a.b.c");
Mockito.when(mp.getVersion()).thenReturn("1.2.3-SNAPSHOT");
+ Mockito.when(mp.getProperties()).thenReturn(props);
assertEquals("xxxabcyyy", FeatureModelConverter.replaceVars(mp,
"xxx${project.groupId}yyy"));
assertEquals("xxxabcyyya.b.c1.2.3-SNAPSHOT", FeatureModelConverter.replaceVars(mp,
"xxx${project.groupId}yyy${project.artifactId}${project.version}"));
+ assertEquals("xxxbaryyy", FeatureModelConverter.replaceVars(mp, "xxx${foo}yyy"));
}
}