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:
Sam Brannen
2023-08-25 14:48:15 +02:00
parent 19570338c9
commit 89b7a6bf47
2 changed files with 21 additions and 0 deletions

View File

@@ -792,6 +792,14 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol
rootPath = Path.of(rootDirResource.getFile().getAbsolutePath());
}
if (!Files.exists(rootPath)) {
if (logger.isInfoEnabled()) {
logger.info("Skipping search for files matching pattern [%s]: directory [%s] does not exist"
.formatted(subPattern, rootPath.toAbsolutePath()));
}
return result;
}
String rootDir = StringUtils.cleanPath(rootPath.toString());
if (!rootDir.endsWith("/")) {
rootDir += "/";