|
@@ -619,42 +619,44 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
|
|
|
* deprecated key, the value of the deprecated key is set as the value for
|
|
|
* the provided property name.
|
|
|
*
|
|
|
+ * @param deprecations deprecation context
|
|
|
* @param name the property name
|
|
|
* @return the first property in the list of properties mapping
|
|
|
* the <code>name</code> or the <code>name</code> itself.
|
|
|
*/
|
|
|
private String[] handleDeprecation(DeprecationContext deprecations,
|
|
|
- String name) {
|
|
|
+ String name) {
|
|
|
if (null != name) {
|
|
|
name = name.trim();
|
|
|
}
|
|
|
- ArrayList<String > names = new ArrayList<String>();
|
|
|
- if (isDeprecated(name)) {
|
|
|
- DeprecatedKeyInfo keyInfo = deprecations.getDeprecatedKeyMap().get(name);
|
|
|
- if (keyInfo != null) {
|
|
|
- if (!keyInfo.getAndSetAccessed()) {
|
|
|
- logDeprecation(keyInfo.getWarningMessage(name));
|
|
|
- }
|
|
|
-
|
|
|
- for (String newKey : keyInfo.newKeys) {
|
|
|
- if (newKey != null) {
|
|
|
- names.add(newKey);
|
|
|
- }
|
|
|
+ // Initialize the return value with requested name
|
|
|
+ String[] names = new String[]{name};
|
|
|
+ // Deprecated keys are logged once and an updated names are returned
|
|
|
+ DeprecatedKeyInfo keyInfo = deprecations.getDeprecatedKeyMap().get(name);
|
|
|
+ if (keyInfo != null) {
|
|
|
+ if (!keyInfo.getAndSetAccessed()) {
|
|
|
+ logDeprecation(keyInfo.getWarningMessage(name));
|
|
|
+ }
|
|
|
+ // Override return value for deprecated keys
|
|
|
+ names = keyInfo.newKeys;
|
|
|
+ }
|
|
|
+ // If there are no overlay values we can return early
|
|
|
+ Properties overlayProperties = getOverlay();
|
|
|
+ if (overlayProperties.isEmpty()) {
|
|
|
+ return names;
|
|
|
+ }
|
|
|
+ // Update properties and overlays with reverse lookup values
|
|
|
+ for (String n : names) {
|
|
|
+ String deprecatedKey = deprecations.getReverseDeprecatedKeyMap().get(n);
|
|
|
+ if (deprecatedKey != null && !overlayProperties.containsKey(n)) {
|
|
|
+ String deprecatedValue = overlayProperties.getProperty(deprecatedKey);
|
|
|
+ if (deprecatedValue != null) {
|
|
|
+ getProps().setProperty(n, deprecatedValue);
|
|
|
+ overlayProperties.setProperty(n, deprecatedValue);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(names.size() == 0) {
|
|
|
- names.add(name);
|
|
|
- }
|
|
|
- for(String n : names) {
|
|
|
- String deprecatedKey = deprecations.getReverseDeprecatedKeyMap().get(n);
|
|
|
- if (deprecatedKey != null && !getOverlay().containsKey(n) &&
|
|
|
- getOverlay().containsKey(deprecatedKey)) {
|
|
|
- getProps().setProperty(n, getOverlay().getProperty(deprecatedKey));
|
|
|
- getOverlay().setProperty(n, getOverlay().getProperty(deprecatedKey));
|
|
|
- }
|
|
|
- }
|
|
|
- return names.toArray(new String[names.size()]);
|
|
|
+ return names;
|
|
|
}
|
|
|
|
|
|
private void handleDeprecation() {
|