in src/main/java/org/apache/sling/feature/maven/Substitution.java [38:91]
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);
}
}