8345433: (fs) Use stream to load FileTypeDetectors in Files.probeContentType

Reviewed-by: rriggs, alanb, aturbanov
This commit is contained in:
Brian Burkhalter 2024-12-04 20:25:52 +00:00
parent 9740c1df6f
commit 1d3dcdf2d6
2 changed files with 6 additions and 9 deletions

View file

@ -90,7 +90,6 @@ public abstract class AsynchronousChannelProvider {
ServiceLoader<AsynchronousChannelProvider> sl =
ServiceLoader.load(AsynchronousChannelProvider.class,
ClassLoader.getSystemClassLoader());
Iterator<AsynchronousChannelProvider> i = sl.iterator();
return sl.findFirst().orElse(null);
}
}

View file

@ -1509,7 +1509,7 @@ public final class Files {
}
// lazy loading of default and installed file type detectors
private static class FileTypeDetectors{
private static class FileTypeDetectors {
static final FileTypeDetector defaultFileTypeDetector =
createDefaultFileTypeDetector();
static final List<FileTypeDetector> installedDetectors =
@ -1522,13 +1522,11 @@ public final class Files {
// loads all installed file type detectors
private static List<FileTypeDetector> loadInstalledDetectors() {
List<FileTypeDetector> list = new ArrayList<>();
ServiceLoader<FileTypeDetector> loader = ServiceLoader
.load(FileTypeDetector.class, ClassLoader.getSystemClassLoader());
for (FileTypeDetector detector: loader) {
list.add(detector);
}
return list;
return ServiceLoader.load(FileTypeDetector.class,
ClassLoader.getSystemClassLoader())
.stream()
.map(ServiceLoader.Provider::get)
.toList();
}
}