Skip to content

Commit 4cbfa41

Browse files
committed
Merge branch '4.2.x' into 4.3.x
2 parents 6268864 + 94eb511 commit 4cbfa41

2 files changed

Lines changed: 59 additions & 0 deletions

File tree

spring-cloud-config-monitor/src/main/java/org/springframework/cloud/config/monitor/FileMonitorConfiguration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,13 @@ private Set<Path> getFileRepo() {
193193
try {
194194
for (AbstractScmEnvironmentRepository repository : scmRepositories) {
195195
repositoryUri = repository.getUri();
196+
// Skip URIs with placeholders - they cannot be resolved at startup
197+
if (repositoryUri != null && repositoryUri.contains("{")) {
198+
if (log.isWarnEnabled()) {
199+
log.warn("Skipping file monitoring for placeholder URI: " + repositoryUri);
200+
}
201+
continue;
202+
}
196203
Resource resource = this.resourceLoader.getResource(repositoryUri);
197204
if (resource instanceof FileSystemResource || resource instanceof FileUrlResource) {
198205
paths.add(Paths.get(resource.getURI()));

spring-cloud-config-monitor/src/test/java/org/springframework/cloud/config/monitor/FileMonitorConfigurationTest.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,58 @@ public void testStart_withTwoMixedPathAndFileUrlScmRepositories() {
145145
assertOnDirectory(2);
146146
}
147147

148+
@Test
149+
public void testStart_withPlaceholderUriShouldBeSkipped() {
150+
// given
151+
AbstractScmEnvironmentRepository repository = createScmEnvironmentRepository(
152+
"file:/var/opt/config-service/{application}");
153+
addScmRepository(repository);
154+
155+
// when
156+
fileMonitorConfiguration.start();
157+
158+
// then
159+
Set<Path> directory = getDirectory();
160+
assertThat(directory).isNotNull();
161+
assertThat(directory).isEmpty();
162+
}
163+
164+
@Test
165+
public void testStart_withMixedPlaceholderAndValidUriShouldSkipOnlyPlaceholder() {
166+
// given
167+
AbstractScmEnvironmentRepository placeholderRepository = createScmEnvironmentRepository(
168+
"file:/var/opt/config-service/{application}");
169+
AbstractScmEnvironmentRepository validRepository = createScmEnvironmentRepository(SAMPLE_PATH);
170+
addScmRepository(placeholderRepository);
171+
addScmRepository(validRepository);
172+
173+
// when
174+
fileMonitorConfiguration.start();
175+
176+
// then
177+
assertOnDirectory(1);
178+
}
179+
180+
@Test
181+
public void testStart_withMultiplePlaceholderTypesShouldBeSkipped() {
182+
// given
183+
AbstractScmEnvironmentRepository applicationPlaceholder = createScmEnvironmentRepository(
184+
"file:/config/{application}");
185+
AbstractScmEnvironmentRepository profilePlaceholder = createScmEnvironmentRepository("file:/config/{profile}");
186+
AbstractScmEnvironmentRepository labelPlaceholder = createScmEnvironmentRepository("file:/config/{label}");
187+
addScmRepository(applicationPlaceholder);
188+
addScmRepository(profilePlaceholder);
189+
addScmRepository(labelPlaceholder);
190+
191+
// when
192+
fileMonitorConfiguration.start();
193+
194+
// then
195+
Set<Path> directory = getDirectory();
196+
assertThat(directory).isNotNull();
197+
assertThat(directory).isEmpty();
198+
}
199+
148200
private void addScmRepository(AbstractScmEnvironmentRepository... repository) {
149201
repositories.addAll(Arrays.asList(repository));
150202
ReflectionTestUtils.setField(fileMonitorConfiguration, "scmRepositories", repositories);

0 commit comments

Comments
 (0)