From 8e4cc16e75c179384b167b706d088ca938db0199 Mon Sep 17 00:00:00 2001 From: Stefan Pfeiffer Date: Thu, 13 Jun 2019 13:57:46 +0200 Subject: [PATCH] Allow file:// URLs for file monitoring in git profile (#1385) * Allow file:// URLs for file monitoring in git profile Fixes #1374 * Add tests for fix #1374 --- .../monitor/FileMonitorConfiguration.java | 4 ++- .../monitor/FileMonitorConfigurationTest.java | 34 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/spring-cloud-config-monitor/src/main/java/org/springframework/cloud/config/monitor/FileMonitorConfiguration.java b/spring-cloud-config-monitor/src/main/java/org/springframework/cloud/config/monitor/FileMonitorConfiguration.java index 9a9474f4..c88f4ea4 100644 --- a/spring-cloud-config-monitor/src/main/java/org/springframework/cloud/config/monitor/FileMonitorConfiguration.java +++ b/spring-cloud-config-monitor/src/main/java/org/springframework/cloud/config/monitor/FileMonitorConfiguration.java @@ -44,6 +44,7 @@ import org.springframework.context.ResourceLoaderAware; import org.springframework.context.SmartLifecycle; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.FileUrlResource; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.http.HttpHeaders; @@ -194,7 +195,8 @@ public class FileMonitorConfiguration implements SmartLifecycle, ResourceLoaderA for (AbstractScmEnvironmentRepository repository : scmRepositories) { repositoryUri = repository.getUri(); Resource resource = this.resourceLoader.getResource(repositoryUri); - if (resource instanceof FileSystemResource) { + if (resource instanceof FileSystemResource + || resource instanceof FileUrlResource) { paths.add(Paths.get(resource.getURI())); } } diff --git a/spring-cloud-config-monitor/src/test/java/org/springframework/cloud/config/monitor/FileMonitorConfigurationTest.java b/spring-cloud-config-monitor/src/test/java/org/springframework/cloud/config/monitor/FileMonitorConfigurationTest.java index 03d0c814..5672413d 100644 --- a/spring-cloud-config-monitor/src/test/java/org/springframework/cloud/config/monitor/FileMonitorConfigurationTest.java +++ b/spring-cloud-config-monitor/src/test/java/org/springframework/cloud/config/monitor/FileMonitorConfigurationTest.java @@ -40,12 +40,15 @@ import static org.assertj.core.api.Assertions.assertThat; /** * @author Gilles Robert + * @author Stefan Pfeiffer * */ public class FileMonitorConfigurationTest { private static final String SAMPLE_PATH = "resources/pathsamples"; + private static final String SAMPLE_FILE_URL = "file:///test"; + private FileMonitorConfiguration fileMonitorConfiguration = new FileMonitorConfiguration(); private List repositories = new ArrayList<>(); @@ -117,6 +120,37 @@ public class FileMonitorConfigurationTest { assertOnDirectory(2); } + @Test + public void testStart_withOneFileUrlScmRepository() { + // given + AbstractScmEnvironmentRepository repository = createScmEnvironmentRepository( + SAMPLE_FILE_URL); + addScmRepository(repository); + + // when + fileMonitorConfiguration.start(); + + // then + assertOnDirectory(1); + } + + @Test + public void testStart_withTwoMixedPathAndFileUrlScmRepositories() { + // given + AbstractScmEnvironmentRepository repository = createScmEnvironmentRepository( + SAMPLE_PATH); + AbstractScmEnvironmentRepository secondRepository = createScmEnvironmentRepository( + SAMPLE_FILE_URL); + addScmRepository(repository); + addScmRepository(secondRepository); + + // when + fileMonitorConfiguration.start(); + + // then + assertOnDirectory(2); + } + private void addScmRepository(AbstractScmEnvironmentRepository... repository) { repositories.addAll(Arrays.asList(repository)); ReflectionTestUtils.setField(fileMonitorConfiguration, "scmRepositories",