Skip searching of nonexistent directory in PathMatchingResourcePatternResolver
Prior to this commit, when PathMatchingResourcePatternResolver processed a `file:` pattern (for example, `file:/app-config/**`) for a `rootPath` that did not exist in the filesystem, the resolver attempted to search the directory and logged a WARNING message similar to the following when it failed to do so. Failed to search in directory [/app-config/] for files matching pattern [**]: java.nio.file.NoSuchFileException: /app-config/ To avoid unnecessary attempts to search a nonexistent directory, PathMatchingResourcePatternResolver now skips searching of a nonexistent directory and preemptively logs an INFO message similar to the following. Skipping search for files matching pattern [**]: directory [/app-config] does not exist Closes gh-31111
This commit is contained in:
@@ -90,6 +90,19 @@ class PathMatchingResourcePatternResolverTests {
|
||||
assertFilenames(pattern, expectedFilenames);
|
||||
}
|
||||
|
||||
@Test // gh-31111
|
||||
void usingFileProtocolWithWildcardInPatternAndNonexistentRootPath() throws IOException {
|
||||
Path testResourcesDir = Paths.get("src/test/resources").toAbsolutePath();
|
||||
String pattern = String.format("file:%s/example/bogus/**", testResourcesDir);
|
||||
assertThat(resolver.getResources(pattern)).isEmpty();
|
||||
// When the log level for the resolver is set to at least INFO, we should see
|
||||
// a log entry similar to the following.
|
||||
//
|
||||
// [main] INFO o.s.c.i.s.PathMatchingResourcePatternResolver -
|
||||
// Skipping search for files matching pattern [**]: directory
|
||||
// [/<...>/spring-core/src/test/resources/example/bogus] does not exist
|
||||
}
|
||||
|
||||
@Test
|
||||
void encodedHashtagInPath() throws IOException {
|
||||
Path rootDir = Paths.get("src/test/resources/custom%23root").toAbsolutePath();
|
||||
|
||||
Reference in New Issue
Block a user