diff --git a/spring-platform-config-server/pom.xml b/spring-platform-config-server/pom.xml
index 112d04be..3f817c4f 100644
--- a/spring-platform-config-server/pom.xml
+++ b/spring-platform-config-server/pom.xml
@@ -4,7 +4,7 @@
4.0.0
spring-platform-config-server
- jar
+ jar
spring-platform-config-server
spring-platform-config-server
@@ -16,11 +16,27 @@
..
+
+
+
+ org.springframework.platform
+ spring-platform-netflix
+ ${spring-platform.version}
+ pom
+ import
+
+
+
+
org.springframework.platform
spring-platform-config-client
+
+ org.springframework.platform
+ spring-platform-netflix-core
+
org.springframework.boot
spring-boot-starter-actuator
@@ -34,6 +50,10 @@
org.eclipse.jgit
2.3.1.201302201838-r
+
+ com.netflix.eureka
+ eureka-client
+
org.springframework.boot
spring-boot-starter-test
@@ -43,6 +63,7 @@
UTF-8
+ ${project.version}
org.springframework.platform.config.server.Application
1.7
@@ -52,6 +73,9 @@
org.springframework.boot
spring-boot-maven-plugin
+
+ exec
+
diff --git a/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/Application.java b/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/Application.java
index 59a2ed6a..953fa11c 100644
--- a/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/Application.java
+++ b/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/Application.java
@@ -53,10 +53,13 @@ public class Application {
@Configuration
@Profile("!native")
protected static class GitRepositoryConfiguration {
+ @Autowired
+ private ConfigurableEnvironment environment;
+
@Bean
@ConfigurationProperties("spring.platform.config.server")
public JGitEnvironmentRepository repository() {
- return new JGitEnvironmentRepository();
+ return new JGitEnvironmentRepository(environment);
}
}
}
diff --git a/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/JGitEnvironmentRepository.java b/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/JGitEnvironmentRepository.java
index 9101c1d9..c250b050 100644
--- a/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/JGitEnvironmentRepository.java
+++ b/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/JGitEnvironmentRepository.java
@@ -24,6 +24,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.util.FileUtils;
+import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.platform.config.Environment;
import org.springframework.platform.config.PropertySource;
import org.springframework.util.Assert;
@@ -35,14 +36,17 @@ import org.springframework.util.Assert;
public class JGitEnvironmentRepository implements EnvironmentRepository {
public static final String DEFAULT_URI = "https://github.com/scratches/config-repo";
-
+
private static Log logger = LogFactory.getLog(JGitEnvironmentRepository.class);
private File basedir;
private String uri = DEFAULT_URI;
- public JGitEnvironmentRepository() {
+ private ConfigurableEnvironment environment;
+
+ public JGitEnvironmentRepository(ConfigurableEnvironment environment) {
+ this.environment = environment;
try {
final File basedir = Files.createTempDirectory("config-repo-").toFile();
Runtime.getRuntime().addShutdownHook(new Thread() {
@@ -50,13 +54,15 @@ public class JGitEnvironmentRepository implements EnvironmentRepository {
public void run() {
try {
FileUtils.delete(basedir, FileUtils.RECURSIVE);
- } catch (IOException e) {
+ }
+ catch (IOException e) {
logger.warn("Failed to delete temporary directory on exit: " + e);
}
}
});
this.basedir = basedir;
- } catch (IOException e) {
+ }
+ catch (IOException e) {
throw new IllegalStateException("Cannot create temp dir", e);
}
}
@@ -67,8 +73,7 @@ public class JGitEnvironmentRepository implements EnvironmentRepository {
}
this.uri = uri;
}
-
-
+
public void setBasedir(File basedir) {
this.basedir = basedir;
}
@@ -80,12 +85,15 @@ public class JGitEnvironmentRepository implements EnvironmentRepository {
if (new File(basedir, ".git").exists()) {
git = Git.open(basedir);
git.fetch().call();
- } else {
+ }
+ else {
if (basedir.exists()) {
try {
FileUtils.delete(basedir, FileUtils.RECURSIVE);
- } catch (IOException e) {
- throw new IllegalStateException("Failed to initialize base directory", e);
+ }
+ catch (IOException e) {
+ throw new IllegalStateException(
+ "Failed to initialize base directory", e);
}
}
Assert.state(basedir.mkdirs(), "Could not create basedir: " + basedir);
@@ -100,7 +108,8 @@ public class JGitEnvironmentRepository implements EnvironmentRepository {
result = clean(environment.findOne(application, name, label));
}
return result;
- } catch (Exception e) {
+ }
+ catch (Exception e) {
throw new IllegalStateException("Cannot clone repository", e);
}
}
@@ -109,9 +118,14 @@ public class JGitEnvironmentRepository implements EnvironmentRepository {
Environment result = new Environment(value.getName(), value.getLabel());
for (PropertySource source : value.getPropertySources()) {
String name = source.getName().replace(basedir.toURI().toString(), "");
+ if (name.contains(("classpath:/"))) {
+ continue;
+ }
+ if (environment.getPropertySources().contains(name)) {
+ continue;
+ }
name = name.replace("applicationConfig: [", "");
- name = uri + "/"
- + name.substring(0, name.contains("]") ? name.lastIndexOf("]") : name.length());
+ name = uri + "/" + name.replace("]", "");
result.add(new PropertySource(name, source.getSource()));
}
return result;
diff --git a/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/NativeEnvironmentRepository.java b/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/NativeEnvironmentRepository.java
index 2cc33132..1da695c9 100644
--- a/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/NativeEnvironmentRepository.java
+++ b/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/NativeEnvironmentRepository.java
@@ -38,6 +38,7 @@ import org.springframework.web.context.support.StandardServletEnvironment;
public class NativeEnvironmentRepository implements EnvironmentRepository {
private Set standardSources = new HashSet(Arrays.asList(
+ "vcap",
StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME,
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME,
StandardServletEnvironment.JNDI_PROPERTY_SOURCE_NAME,
diff --git a/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepository.java b/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepository.java
index ad7c7365..5f6285ce 100644
--- a/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepository.java
+++ b/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepository.java
@@ -55,6 +55,9 @@ public class SpringApplicationEnvironmentRepository implements EnvironmentReposi
private String[] getArgs(String config) {
List list = new ArrayList();
+ if (!config.startsWith("application")) {
+ config = "application," + config;
+ }
list.add("--spring.config.name=" + config);
list.add("--spring.platform.bootstrap.enabled=false");
if (locations != null) {
diff --git a/spring-platform-config-server/src/main/resources/application.yml b/spring-platform-config-server/src/main/resources/application.yml
index 5504ae26..7c19f761 100644
--- a/spring-platform-config-server/src/main/resources/application.yml
+++ b/spring-platform-config-server/src/main/resources/application.yml
@@ -8,4 +8,4 @@ spring:
server:
port: 8888
management:
- context_path: /admin
\ No newline at end of file
+ context_path: /admin
diff --git a/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/JGitEnvironmentRepositoryTests.java b/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/JGitEnvironmentRepositoryTests.java
index 4f0934f3..563992fc 100644
--- a/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/JGitEnvironmentRepositoryTests.java
+++ b/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/JGitEnvironmentRepositoryTests.java
@@ -24,6 +24,7 @@ import java.io.File;
import org.eclipse.jgit.util.FileUtils;
import org.junit.Before;
import org.junit.Test;
+import org.springframework.core.env.StandardEnvironment;
import org.springframework.platform.config.Environment;
/**
@@ -32,7 +33,7 @@ import org.springframework.platform.config.Environment;
*/
public class JGitEnvironmentRepositoryTests {
- private JGitEnvironmentRepository repository = new JGitEnvironmentRepository();
+ private JGitEnvironmentRepository repository = new JGitEnvironmentRepository(new StandardEnvironment());
private File basedir = new File("target/config-repo");