SimpleAliasRegistry logs info message for alias overriding

Issue: SPR-16871

(cherry picked from commit 74fcdea)
This commit is contained in:
Juergen Hoeller
2018-05-29 21:51:33 +02:00
parent 50d6d90ed8
commit 8a56db6e4e
4 changed files with 38 additions and 15 deletions

View File

@@ -22,6 +22,9 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.util.StringValueResolver;
@@ -37,6 +40,9 @@ import org.springframework.util.StringValueResolver;
*/
public class SimpleAliasRegistry implements AliasRegistry {
/** Logger available to subclasses */
protected final Log logger = LogFactory.getLog(getClass());
/** Map from alias to canonical name */
private final Map<String, String> aliasMap = new ConcurrentHashMap<>(16);
@@ -48,6 +54,9 @@ public class SimpleAliasRegistry implements AliasRegistry {
synchronized (this.aliasMap) {
if (alias.equals(name)) {
this.aliasMap.remove(alias);
if (logger.isDebugEnabled()) {
logger.debug("Alias definition '" + alias + "' ignored since it points to same name");
}
}
else {
String registeredName = this.aliasMap.get(alias);
@@ -57,12 +66,19 @@ public class SimpleAliasRegistry implements AliasRegistry {
return;
}
if (!allowAliasOverriding()) {
throw new IllegalStateException("Cannot register alias '" + alias + "' for name '" +
throw new IllegalStateException("Cannot define alias '" + alias + "' for name '" +
name + "': It is already registered for name '" + registeredName + "'.");
}
if (this.logger.isInfoEnabled()) {
logger.info("Overriding alias '" + alias + "' definition for registered name '" +
registeredName + "' with new target name '" + name + "'");
}
}
checkForAliasCircle(name, alias);
this.aliasMap.put(alias, name);
if (logger.isDebugEnabled()) {
logger.debug("Alias definition '" + alias + "' registered for name '" + name + "'");
}
}
}
}