Merge branch 'master' into 2.0.x
This commit is contained in:
@@ -34,7 +34,7 @@ public class ContextRefresher {
|
||||
|
||||
private static final String REFRESH_ARGS_PROPERTY_SOURCE = "refreshArgs";
|
||||
|
||||
private Set<String> standardSources = new HashSet<String>(
|
||||
private Set<String> standardSources = new HashSet<>(
|
||||
Arrays.asList(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME,
|
||||
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME,
|
||||
StandardServletEnvironment.JNDI_PROPERTY_SOURCE_NAME,
|
||||
@@ -61,7 +61,7 @@ public class ContextRefresher {
|
||||
return keys;
|
||||
}
|
||||
|
||||
private void addConfigFilesToEnvironment() {
|
||||
/* for testing */ ConfigurableApplicationContext addConfigFilesToEnvironment() {
|
||||
ConfigurableApplicationContext capture = null;
|
||||
try {
|
||||
StandardEnvironment environment = copyEnvironment(
|
||||
@@ -105,9 +105,22 @@ public class ContextRefresher {
|
||||
}
|
||||
finally {
|
||||
ConfigurableApplicationContext closeable = capture;
|
||||
closeable.close();
|
||||
while (closeable != null) {
|
||||
try {
|
||||
closeable.close();
|
||||
}
|
||||
catch (Exception e) {
|
||||
// Ignore;
|
||||
}
|
||||
if (closeable.getParent() instanceof ConfigurableApplicationContext) {
|
||||
closeable = (ConfigurableApplicationContext) closeable.getParent();
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return capture;
|
||||
}
|
||||
|
||||
// Don't use ConfigurableEnvironment.merge() in case there are clashes with property
|
||||
|
||||
@@ -66,6 +66,22 @@ public class ContextRefresherTests {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parentContextIsClosed() {
|
||||
// Use spring.cloud.bootstrap.name to switch off the defaults (which would pick up
|
||||
// a bootstrapProperties immediately
|
||||
context = SpringApplication.run(ContextRefresherTests.class,
|
||||
"--spring.main.webEnvironment=false", "--debug=false",
|
||||
"--spring.main.bannerMode=OFF", "--spring.cloud.bootstrap.name=refresh");
|
||||
ContextRefresher refresher = new ContextRefresher(context, scope);
|
||||
EnvironmentTestUtils.addEnvironment(context,
|
||||
"spring.cloud.bootstrap.sources: org.springframework.cloud.context.refresh.ContextRefresherTests.PropertySourceConfiguration\n"
|
||||
+ "");
|
||||
ConfigurableApplicationContext refresherContext = refresher.addConfigFilesToEnvironment();
|
||||
assertThat(refresherContext.getParent()).isNotNull().isInstanceOf(ConfigurableApplicationContext.class);
|
||||
ConfigurableApplicationContext parent = (ConfigurableApplicationContext) refresherContext.getParent();
|
||||
assertThat(parent.isActive()).isFalse();
|
||||
}
|
||||
private List<String> names(MutablePropertySources propertySources) {
|
||||
List<String> list = new ArrayList<>();
|
||||
for (PropertySource<?> p : propertySources) {
|
||||
|
||||
Reference in New Issue
Block a user