public String replace(String property) {
if (property == null) {
return null;
}
StringBuilder buffer = new StringBuilder(property);
int prefixStart = property.indexOf(placeholderPrefix);
while (prefixStart != -1) {
int replacementStart = prefixStart + placeholderPrefix.length();
int suffixStart = buffer.indexOf(placeholderSuffix, replacementStart);
if (suffixStart != -1) {
String placeholder = buffer.substring(replacementStart, suffixStart);
String replacement = getReplacement(placeholder);
if (replacement == null) {
if (isIgnoreUnknownPlaceholders()) {
prefixStart = buffer.indexOf(placeholderPrefix, suffixStart);
} else {
throw new IllegalArgumentException(
format("Can't find replacement for %s placeholder", placeholder));
}
} else {
buffer.replace(prefixStart, suffixStart + placeholderSuffix.length(), replacement);
prefixStart = buffer.indexOf(placeholderPrefix, prefixStart + replacement.length());
}
} else {
prefixStart = -1;
}
}
return buffer.toString();
}