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",