in src/main/java/org/apache/sling/feature/maven/Substitution.java [39:92]
public static String replaceMavenVars(
MavenProject project,
boolean legacyReplace,
boolean replaceProjectProps,
String[] additionalProperties,
String s) {
RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
final RecursionInterceptor recursionInterceptor;
if (legacyReplace) {
project.getProperties().setProperty("project.osgiVersion", getOSGiVersion(project.getVersion()));
interpolator.addValueSource(new PropertiesBasedValueSource(System.getProperties()));
interpolator.addValueSource(new PropertiesBasedValueSource(project.getProperties()));
List<String> synonymPrefixes = Collections.singletonList("project.");
PrefixedValueSourceWrapper modelWrapper =
new PrefixedValueSourceWrapper(new ObjectBasedValueSource(project), synonymPrefixes, true);
interpolator.addValueSource(modelWrapper);
recursionInterceptor = new PrefixAwareRecursionInterceptor(synonymPrefixes, true);
} else {
final Properties props = new Properties();
if (replaceProjectProps) {
props.setProperty("project.groupId", project.getGroupId());
props.setProperty("project.artifactId", project.getArtifactId());
props.setProperty("project.version", project.getVersion());
props.setProperty("project.osgiVersion", getOSGiVersion(project.getVersion()));
}
if (additionalProperties != null) {
for (String p : additionalProperties) {
p = p.trim();
// check for a system property that overwrites the project property
String value = System.getProperty(p);
if (value == null && project.getProperties().containsKey(p)) {
// no system property, so try the project property
value = project.getProperties().getProperty(p);
}
if (value != null) {
// found a value
props.setProperty(p, value);
}
}
}
interpolator.addValueSource(new PropertiesBasedValueSource(props));
recursionInterceptor = new SimpleRecursionInterceptor();
}
try {
return interpolator.interpolate(s, recursionInterceptor);
} catch (InterpolationException e) {
throw new RuntimeException("An error occurred while interpolating variables to JSON:\n" + s, e);
}
}