static String replaceVariables()

in src/main/java/org/apache/sling/feature/builder/FeatureBuilder.java [265:296]


    static String replaceVariables(final String value, final Map<String,String> additionalVariables, final Feature feature) {
        final String textWithVars = value;

        final Matcher m = VARIABLE_PATTERN.matcher(textWithVars.toString());
        final StringBuffer sb = new StringBuffer();
        while (m.find()) {
            final String var = m.group();

            final int len = var.length();
            final String name = var.substring(2, len - 1);
            
            if (feature.getVariables().containsKey(name)) {
                String val = null;
                if (additionalVariables != null)
                    val = additionalVariables.get(name);
                if (val == null) {
                    val = feature.getVariables().get(name);
                }

                if (val != null) { 
                    String replaced = replaceVariables(val, additionalVariables, feature);
                    m.appendReplacement(sb, Matcher.quoteReplacement(replaced));
                }
                else {
                    throw new IllegalStateException("Undefined variable: " + name);
                }
            }
        }
        m.appendTail(sb);

        return sb.toString();
    }