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
This commit is contained in:
Stefan Pfeiffer
2019-06-13 13:57:46 +02:00
committed by Ryan Baxter
parent 191aa69395
commit 8e4cc16e75
2 changed files with 37 additions and 1 deletions

View File

@@ -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()));
}
}

View File

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