|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
/* |
|
|
|
|
* Copyright 2002-2010 the original author or authors. |
|
|
|
|
* Copyright 2002-2012 the original author or authors. |
|
|
|
|
* |
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
@ -135,9 +135,10 @@ public class PropertyPlaceholderHelper {
@@ -135,9 +135,10 @@ public class PropertyPlaceholderHelper {
|
|
|
|
|
int endIndex = findPlaceholderEndIndex(buf, startIndex); |
|
|
|
|
if (endIndex != -1) { |
|
|
|
|
String placeholder = buf.substring(startIndex + this.placeholderPrefix.length(), endIndex); |
|
|
|
|
if (!visitedPlaceholders.add(placeholder)) { |
|
|
|
|
String originalPlaceholder = placeholder; |
|
|
|
|
if (!visitedPlaceholders.add(originalPlaceholder)) { |
|
|
|
|
throw new IllegalArgumentException( |
|
|
|
|
"Circular placeholder reference '" + placeholder + "' in property definitions"); |
|
|
|
|
"Circular placeholder reference '" + originalPlaceholder + "' in property definitions"); |
|
|
|
|
} |
|
|
|
|
// Recursive invocation, parsing placeholders contained in the placeholder key.
|
|
|
|
|
placeholder = parseStringValue(placeholder, placeholderResolver, visitedPlaceholders); |
|
|
|
@ -173,7 +174,7 @@ public class PropertyPlaceholderHelper {
@@ -173,7 +174,7 @@ public class PropertyPlaceholderHelper {
|
|
|
|
|
throw new IllegalArgumentException("Could not resolve placeholder '" + placeholder + "'"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
visitedPlaceholders.remove(placeholder); |
|
|
|
|
visitedPlaceholders.remove(originalPlaceholder); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
startIndex = -1; |
|
|
|
|