Skip to content

Commit

Permalink
Merge branch '2.5.x' into 2.6.x
Browse files Browse the repository at this point in the history
Closes gh-29410
  • Loading branch information
philwebb committed Jan 15, 2022
2 parents 14fe934 + 79d9549 commit 28cf6f5
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2021 the original author or authors.
* Copyright 2012-2022 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.
Expand Down Expand Up @@ -87,14 +87,15 @@ public static void attach(Environment environment) {
Assert.isInstanceOf(ConfigurableEnvironment.class, environment);
MutablePropertySources sources = ((ConfigurableEnvironment) environment).getPropertySources();
PropertySource<?> attached = getAttached(sources);
if (attached != null && attached.getSource() != sources) {
if (attached != null) {
if (attached instanceof ConfigurationPropertySourcesPropertySource
&& ((SpringConfigurationPropertySources) attached.getSource()).isUsingSources(sources)) {
return;
}
sources.remove(ATTACHED_PROPERTY_SOURCE_NAME);
attached = null;
}
if (attached == null) {
sources.addFirst(new ConfigurationPropertySourcesPropertySource(ATTACHED_PROPERTY_SOURCE_NAME,
new SpringConfigurationPropertySources(sources)));
}
sources.addFirst(new ConfigurationPropertySourcesPropertySource(ATTACHED_PROPERTY_SOURCE_NAME,
new SpringConfigurationPropertySources(sources)));
}

static PropertySource<?> getAttached(MutablePropertySources sources) {
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2022 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.
Expand Down Expand Up @@ -71,6 +71,19 @@ void attachShouldReattachInMergedSetup() {
assertThat(child.getProperty("my.example-property")).isEqualTo("1234");
}

@Test
void attachWhenAlreadyAttachedWithSameSourcesShouldReturnExistingInstance() {
ConfigurableEnvironment environment = new StandardEnvironment();
MutablePropertySources sources = environment.getPropertySources();
sources.addLast(new SystemEnvironmentPropertySource("system", Collections.singletonMap("SERVER_PORT", "1234")));
sources.addLast(new MapPropertySource("config", Collections.singletonMap("server.port", "4568")));
ConfigurationPropertySources.attach(environment);
Iterable<ConfigurationPropertySource> first = ConfigurationPropertySources.get(environment);
ConfigurationPropertySources.attach(environment);
Iterable<ConfigurationPropertySource> second = ConfigurationPropertySources.get(environment);
assertThat(first).isSameAs(second);
}

@Test
void getWhenNotAttachedShouldReturnAdapted() {
ConfigurableEnvironment environment = new StandardEnvironment();
Expand Down

0 comments on commit 28cf6f5

Please sign in to comment.