Adapt NativeEnvironmentRepository to changes in Spring Boot 1.3

The ConfigFileApplicationListener was refactored into a new callback
specifically for messing with the Environment before refresh.
This commit is contained in:
Dave Syer
2015-08-18 09:13:30 +01:00
parent a964a2840a
commit acbf3c1166

View File

@@ -18,16 +18,17 @@ package org.springframework.cloud.config.server;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.config.ConfigFileApplicationListener;
import org.springframework.boot.context.config.ConfigFileEnvironmentPostProcessor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.env.EnvironmentPostProcessingApplicationListener;
import org.springframework.cloud.config.environment.Environment;
import org.springframework.cloud.config.environment.PropertySource;
import org.springframework.context.ConfigurableApplicationContext;
@@ -77,7 +78,7 @@ public class NativeEnvironmentRepository implements EnvironmentRepository {
}
public boolean isFailOnError() {
return failOnError;
return this.failOnError;
}
@Override
@@ -96,7 +97,8 @@ public class NativeEnvironmentRepository implements EnvironmentRepository {
// Explicitly set the listeners (to exclude logging listener which would change
// log levels in the caller)
builder.application().setListeners(
Collections.singletonList(new ConfigFileApplicationListener()));
Arrays.asList(new ConfigFileEnvironmentPostProcessor(),
new EnvironmentPostProcessingApplicationListener()));
ConfigurableApplicationContext context = builder.run(args);
environment.getPropertySources().remove("profiles");
try {
@@ -123,21 +125,21 @@ public class NativeEnvironmentRepository implements EnvironmentRepository {
value.getLabel());
for (PropertySource source : value.getPropertySources()) {
String name = source.getName();
if (environment.getPropertySources().contains(name)) {
if (this.environment.getPropertySources().contains(name)) {
continue;
}
name = name.replace("applicationConfig: [", "");
name = name.replace("]", "");
if (searchLocations != null) {
if (this.searchLocations != null) {
boolean matches = false;
String normal = name;
if (normal.startsWith("file:")) {
normal = StringUtils.cleanPath(new File(normal.substring("file:".length()))
.getAbsolutePath());
normal = StringUtils.cleanPath(new File(normal.substring("file:"
.length())).getAbsolutePath());
}
for (String pattern : StringUtils
.commaDelimitedListToStringArray(getLocations(searchLocations,
result.getLabel()))) {
.commaDelimitedListToStringArray(getLocations(
this.searchLocations, result.getLabel()))) {
if (!pattern.contains(":")) {
pattern = "file:" + pattern;
}
@@ -176,9 +178,9 @@ public class NativeEnvironmentRepository implements EnvironmentRepository {
}
list.add("--spring.config.name=" + config);
list.add("--spring.cloud.bootstrap.enabled=false");
list.add("--encrypt.failOnError=" + failOnError);
list.add("--encrypt.failOnError=" + this.failOnError);
String[] locations = this.searchLocations;
if (searchLocations == null) {
if (this.searchLocations == null) {
locations = DEFAULT_LOCATIONS;
}
list.add("--spring.config.location=" + getLocations(locations, label));
@@ -199,7 +201,7 @@ public class NativeEnvironmentRepository implements EnvironmentRepository {
}
public String[] getSearchLocations() {
return searchLocations;
return this.searchLocations;
}
public void setSearchLocations(String... locations) {