Merge pull request #14967 from chang-chao
* pr/14967: Polish "Consider aliases when checking descendants" Consider aliases when checking descendants
This commit is contained in:
commit
236bd856f6
|
|
@ -65,6 +65,15 @@ class AliasedConfigurationPropertySource implements ConfigurationPropertySource
|
|||
return aliasResult;
|
||||
}
|
||||
}
|
||||
for (ConfigurationPropertyName from : getAliases()) {
|
||||
for (ConfigurationPropertyName alias : getAliases().getAliases(from)) {
|
||||
if (name.isAncestorOf(alias)) {
|
||||
if (this.source.getConfigurationProperty(from) != null) {
|
||||
return ConfigurationPropertyState.PRESENT;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ConfigurationPropertyState.ABSENT;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ package org.springframework.boot.context.properties.source;
|
|||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -33,7 +34,8 @@ import org.springframework.util.MultiValueMap;
|
|||
* @since 2.0.0
|
||||
* @see ConfigurationPropertySource#withAliases(ConfigurationPropertyNameAliases)
|
||||
*/
|
||||
public final class ConfigurationPropertyNameAliases {
|
||||
public final class ConfigurationPropertyNameAliases
|
||||
implements Iterable<ConfigurationPropertyName> {
|
||||
|
||||
private final MultiValueMap<ConfigurationPropertyName, ConfigurationPropertyName> aliases = new LinkedMultiValueMap<>();
|
||||
|
||||
|
|
@ -74,4 +76,9 @@ public final class ConfigurationPropertyNameAliases {
|
|||
.findFirst().orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<ConfigurationPropertyName> iterator() {
|
||||
return this.aliases.keySet().iterator();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@
|
|||
|
||||
package org.springframework.boot.context.properties.source;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.mockito.Answers;
|
||||
|
||||
|
|
@ -111,6 +113,16 @@ public class AliasedConfigurationPropertySourceTests {
|
|||
.isEqualTo(ConfigurationPropertyState.PRESENT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void containsDescendantOfWhenPresentInAliasShouldReturnPresent() {
|
||||
ConfigurationPropertySource source = new MapConfigurationPropertySource(
|
||||
Collections.singletonMap("foo.bar", "foobar"));
|
||||
ConfigurationPropertySource aliased = source
|
||||
.withAliases(new ConfigurationPropertyNameAliases("foo.bar", "baz.foo"));
|
||||
assertThat(aliased.containsDescendantOf(ConfigurationPropertyName.of("baz")))
|
||||
.isEqualTo(ConfigurationPropertyState.PRESENT);
|
||||
}
|
||||
|
||||
private Object getValue(ConfigurationPropertySource source, String name) {
|
||||
ConfigurationProperty property = source
|
||||
.getConfigurationProperty(ConfigurationPropertyName.of(name));
|
||||
|
|
|
|||
Loading…
Reference in New Issue