Fix alias resolution error message in SimpleAliasRegistry
Prior to this commit, the alias resolution error message in SimpleAliasRegistry was misleading. When a resolution conflict is detected, the IllegalStateException thrown by resolveAliases(...) now states that the resolved alias is already registered for an `existingName` instead of the `registeredName`. See gh-31353 Closes gh-32025
This commit is contained in:
parent
5d309d5724
commit
7daff59cb1
|
|
@ -172,7 +172,7 @@ public class SimpleAliasRegistry implements AliasRegistry {
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"Cannot register resolved alias '" + resolvedAlias + "' (original: '" + alias +
|
"Cannot register resolved alias '" + resolvedAlias + "' (original: '" + alias +
|
||||||
"') for name '" + resolvedName + "': It is already registered for name '" +
|
"') for name '" + resolvedName + "': It is already registered for name '" +
|
||||||
registeredName + "'.");
|
existingName + "'.");
|
||||||
}
|
}
|
||||||
checkForAliasCircle(resolvedName, resolvedAlias);
|
checkForAliasCircle(resolvedName, resolvedAlias);
|
||||||
this.aliasMap.remove(alias);
|
this.aliasMap.remove(alias);
|
||||||
|
|
|
||||||
|
|
@ -192,36 +192,24 @@ class SimpleAliasRegistryTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void resolveAliasesWithComplexPlaceholderReplacementAndConfigurationError() {
|
void resolveAliasesWithPlaceholderReplacementConflict() {
|
||||||
StringValueResolver valueResolver = new StubStringValueResolver(Map.of(
|
StringValueResolver valueResolver = new StubStringValueResolver(Map.of(ALIAS1, ALIAS2));
|
||||||
NAME3, NAME4,
|
|
||||||
ALIAS3, ALIAS4,
|
|
||||||
ALIAS4, ALIAS5
|
|
||||||
));
|
|
||||||
|
|
||||||
registerAlias(NAME3, ALIAS3);
|
registerAlias(NAME1, ALIAS1);
|
||||||
registerAlias(NAME4, ALIAS4);
|
registerAlias(NAME2, ALIAS2);
|
||||||
registerAlias(NAME5, ALIAS5);
|
|
||||||
|
|
||||||
// Original state:
|
// Original state:
|
||||||
// WARNING: Based on ConcurrentHashMap iteration order!
|
// ALIAS1 -> NAME1
|
||||||
// ALIAS3 -> NAME3
|
// ALIAS2 -> NAME2
|
||||||
// ALIAS5 -> NAME5
|
|
||||||
// ALIAS4 -> NAME4
|
|
||||||
|
|
||||||
// State after processing original entry (ALIAS3 -> NAME3):
|
// State after processing original entry (ALIAS1 -> NAME1):
|
||||||
// Note that duplicate entry (ALIAS4 -> NAME4) gets removed.
|
// ALIAS2 -> NAME1 --> Conflict: entry for ALIAS2 already exists
|
||||||
// ALIAS5 -> NAME5
|
// ALIAS2 -> NAME2
|
||||||
// ALIAS4 -> NAME4
|
|
||||||
|
|
||||||
// State after processing original entry (ALIAS4 -> NAME4):
|
|
||||||
// ALIAS5 -> NAME5
|
|
||||||
// ALIAS4 -> NAME4
|
|
||||||
// ALIAS5 -> NAME4 --> Conflict: entry for ALIAS5 already exists
|
|
||||||
|
|
||||||
assertThatIllegalStateException()
|
assertThatIllegalStateException()
|
||||||
.isThrownBy(() -> registry.resolveAliases(valueResolver))
|
.isThrownBy(() -> registry.resolveAliases(valueResolver))
|
||||||
.withMessageStartingWith("Cannot register resolved alias");
|
.withMessage("Cannot register resolved alias '%s' (original: '%s') for name '%s': " +
|
||||||
|
"It is already registered for name '%s'.", ALIAS2, ALIAS1, NAME1, NAME2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue