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<AsynchronousChannelProvider> sl =
ServiceLoader.load(AsynchronousChannelProvider.class, ServiceLoader.load(AsynchronousChannelProvider.class,
ClassLoader.getSystemClassLoader()); ClassLoader.getSystemClassLoader());
Iterator<AsynchronousChannelProvider> i = sl.iterator();
return sl.findFirst().orElse(null); return sl.findFirst().orElse(null);
} }
} }

View file

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