Browse Source

Use JarFile#entries() instead of #stream() for consistent entry paths

Closes gh-35617
pull/35672/head
Juergen Hoeller 2 months ago
parent
commit
3a61460f91
  1. 13
      spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java

13
spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java

@ -41,7 +41,6 @@ import java.nio.file.Path; @@ -41,7 +41,6 @@ import java.nio.file.Path;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.NavigableSet;
@ -937,14 +936,10 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol @@ -937,14 +936,10 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol
}
Set<Resource> result = new LinkedHashSet<>(64);
NavigableSet<String> entriesCache = new TreeSet<>();
Iterator<String> entryIterator = jarFile.stream().map(JarEntry::getName).sorted().iterator();
while (entryIterator.hasNext()) {
String entryPath = entryIterator.next();
int entrySeparatorIndex = entryPath.indexOf(ResourceUtils.JAR_URL_SEPARATOR);
if (entrySeparatorIndex >= 0) {
entryPath = entryPath.substring(entrySeparatorIndex + ResourceUtils.JAR_URL_SEPARATOR.length());
}
entriesCache.add(entryPath);
for (Enumeration<JarEntry> entries = jarFile.entries(); entries.hasMoreElements();) {
entriesCache.add(entries.nextElement().getName());
}
for (String entryPath : entriesCache) {
if (entryPath.startsWith(rootEntryPath)) {
String relativePath = entryPath.substring(rootEntryPath.length());
if (getPathMatcher().match(subPattern, relativePath)) {

Loading…
Cancel
Save