From 67989c78db606ad8789c781b026049fecef47bfe Mon Sep 17 00:00:00 2001 From: John Moon Date: Tue, 23 Aug 2016 15:58:48 -0400 Subject: [PATCH 1/4] fix svn to check branches and tags folder for label --- .../environment/SvnKitEnvironmentRepository.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java index a20114fd..1c0f628c 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java @@ -179,7 +179,15 @@ public class SvnKitEnvironmentRepository extends AbstractScmEnvironmentRepositor private File getSvnPath(File workingDirectory, String label) { // use label as path relative to repository root - return new File(workingDirectory, label); + // if it doesn't exists check branches and then tags folders + File svnPath = new File(workingDirectory, label); + if(!svnPath.exists()) { + svnPath = new File(workingDirectory, "branches" + File.separator + label); + } + if(!svnPath.exists()) { + svnPath = new File(workingDirectory, "tags" + File.separator + label); + } + return svnPath; } } From 16bc9d38b98ac90f52cb6ebc120e1798aa97f9d2 Mon Sep 17 00:00:00 2001 From: jmandawg Date: Tue, 23 Aug 2016 21:23:33 -0400 Subject: [PATCH 2/4] added unit test for svn label fix --- ...NKitEnvironmentRepositoryIntegrationTests.java | 15 +++++++++++++++ .../SVNKitEnvironmentRepositoryTests.java | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/SVNKitEnvironmentRepositoryIntegrationTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/SVNKitEnvironmentRepositoryIntegrationTests.java index 471f1da1..44807ce4 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/SVNKitEnvironmentRepositoryIntegrationTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/SVNKitEnvironmentRepositoryIntegrationTests.java @@ -17,6 +17,7 @@ package org.springframework.cloud.config.server.environment; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileNotFoundException; @@ -143,6 +144,20 @@ public class SVNKitEnvironmentRepositoryIntegrationTests { assertEquals(0, environment.getPropertySources().size()); } + @Test + public void branchLabel() throws Exception { + String uri = ConfigServerTestUtils.prepareLocalSvnRepo( + "src/test/resources/svn-config-repo", "target/config"); + this.context = new SpringApplicationBuilder(TestConfiguration.class).web(false) + .profiles("subversion") + .run("--spring.cloud.config.server.svn.uri=" + uri); + EnvironmentRepository repository = this.context.getBean(EnvironmentRepository.class); + Environment environment = repository.findOne("bar", "staging", "demobranch"); + assertTrue(environment.getPropertySources().get(0).getName() + .contains("bar.properties")); + assertEquals(1, environment.getPropertySources().size()); + } + @Configuration @Import({ PropertyPlaceholderAutoConfiguration.class, EnvironmentRepositoryConfiguration.class }) protected static class TestConfiguration { diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/SVNKitEnvironmentRepositoryTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/SVNKitEnvironmentRepositoryTests.java index 81b59ec4..9bda8832 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/SVNKitEnvironmentRepositoryTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/SVNKitEnvironmentRepositoryTests.java @@ -103,6 +103,15 @@ public class SVNKitEnvironmentRepositoryTests { .contains("bar.properties")); } + @Test + public void branch_no_folder() { + Environment environment = this.repository.findOne("bar", "staging", + "demobranch"); + assertEquals(1, environment.getPropertySources().size()); + assertTrue(environment.getPropertySources().get(0).getName() + .contains("bar.properties")); + } + @Test public void vanilla_with_update() { this.findOne(); From c0563be4dafbaea9a4df95258fc8d6241d980661 Mon Sep 17 00:00:00 2001 From: transamericamoon Date: Wed, 24 Aug 2016 12:31:22 -0400 Subject: [PATCH 3/4] nested if statements --- .../server/environment/SvnKitEnvironmentRepository.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java index 1c0f628c..34643225 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java @@ -183,9 +183,9 @@ public class SvnKitEnvironmentRepository extends AbstractScmEnvironmentRepositor File svnPath = new File(workingDirectory, label); if(!svnPath.exists()) { svnPath = new File(workingDirectory, "branches" + File.separator + label); - } - if(!svnPath.exists()) { - svnPath = new File(workingDirectory, "tags" + File.separator + label); + if(!svnPath.exists()) { + svnPath = new File(workingDirectory, "tags" + File.separator + label); + } } return svnPath; } From d2ce0e18c1fa7e06a62bbc282ba69c3a5a157d7a Mon Sep 17 00:00:00 2001 From: John Moon Date: Thu, 25 Aug 2016 09:20:34 -0400 Subject: [PATCH 4/4] throw exception if label doesn't exist --- .../config/server/environment/SvnKitEnvironmentRepository.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java index 34643225..41d66dd0 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/SvnKitEnvironmentRepository.java @@ -185,6 +185,9 @@ public class SvnKitEnvironmentRepository extends AbstractScmEnvironmentRepositor svnPath = new File(workingDirectory, "branches" + File.separator + label); if(!svnPath.exists()) { svnPath = new File(workingDirectory, "tags" + File.separator + label); + if(!svnPath.exists()) { + throw new NoSuchLabelException("No label found for: " + label); + } } } return svnPath;