Optimize StringUtils.cleanPath

Add an early exit to `StringUtils.cleanPath` to save array creating and
string concatenation. With a typical Spring application, the `cleanPath`
method can be called over 600 times, often with a path constructed by
a `ClassPathResource` that is likely to already be clean.

Closes gh-22568
This commit is contained in:
Phillip Webb 2019-03-08 17:20:50 -08:00 committed by Juergen Hoeller
parent 19fb697d03
commit a57d6ba5f3
1 changed files with 5 additions and 0 deletions

View File

@ -639,6 +639,11 @@ public abstract class StringUtils {
} }
String pathToUse = replace(path, WINDOWS_FOLDER_SEPARATOR, FOLDER_SEPARATOR); String pathToUse = replace(path, WINDOWS_FOLDER_SEPARATOR, FOLDER_SEPARATOR);
// Shortcut if there is no work to do
if (pathToUse.indexOf('.') == -1) {
return pathToUse;
}
// Strip prefix from path to analyze, to not treat it as part of the // Strip prefix from path to analyze, to not treat it as part of the
// first path element. This is necessary to correctly parse paths like // first path element. This is necessary to correctly parse paths like
// "file:core/../core/io/Resource.class", where the ".." should just // "file:core/../core/io/Resource.class", where the ".." should just