From f6ebbb23d17760abd8e7767ba356ecd4c0c3c857 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Sun, 14 Aug 2016 14:16:59 +0200 Subject: [PATCH] fixes coverity issue 141860 --- .../webdav/mount/WindowsDriveLetters.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/mount/WindowsDriveLetters.java b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/mount/WindowsDriveLetters.java index 10692e0da..76ed8d71d 100644 --- a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/mount/WindowsDriveLetters.java +++ b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/mount/WindowsDriveLetters.java @@ -9,11 +9,11 @@ package org.cryptomator.frontend.webdav.mount; import static java.util.stream.Collectors.toSet; -import static java.util.stream.IntStream.rangeClosed; import java.nio.file.FileSystems; import java.nio.file.Path; import java.util.Set; +import java.util.stream.IntStream; import java.util.stream.StreamSupport; import javax.inject.Inject; @@ -24,16 +24,21 @@ import org.apache.commons.lang3.SystemUtils; import com.google.common.collect.Sets; - @Singleton public final class WindowsDriveLetters { - - private static final Set A_TO_Z = rangeClosed('A', 'Z').mapToObj(i -> (char) i).collect(toSet()); - + + private static final Set A_TO_Z; + + static { + try (IntStream stream = IntStream.rangeClosed('A', 'Z')) { + A_TO_Z = stream.mapToObj(i -> (char) i).collect(toSet()); + } + } + @Inject public WindowsDriveLetters() { } - + public Set getOccupiedDriveLetters() { if (!SystemUtils.IS_OS_WINDOWS) { throw new UnsupportedOperationException("This method is only defined for Windows file systems"); @@ -41,7 +46,7 @@ public final class WindowsDriveLetters { Iterable rootDirs = FileSystems.getDefault().getRootDirectories(); return StreamSupport.stream(rootDirs.spliterator(), false).map(Path::toString).map(CharUtils::toChar).map(Character::toUpperCase).collect(toSet()); } - + public Set getAvailableDriveLetters() { return Sets.difference(A_TO_Z, getOccupiedDriveLetters()); }