From 1ca2e029dceb240b9aa1ed142cbf2990e9824390 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 21 May 2021 18:51:49 +0200 Subject: [PATCH] method loadVaultConfig() throws exception instead of returning optional (#1661) --- .../org/cryptomator/common/vaults/Vault.java | 12 ++++-------- .../ui/keyloading/KeyLoadingModule.java | 18 ++++++------------ 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java index e36369c35..02fd03600 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java @@ -109,7 +109,7 @@ public class Vault { } else if(vaultSettings.maxCleartextFilenameLength().get() == -1) { LOG.debug("Determining cleartext filename length limitations..."); var checker = new FileSystemCapabilityChecker(); - int shorteningThreshold = getUnverifiedVaultConfig().orElseThrow().allegedShorteningThreshold(); + int shorteningThreshold = getUnverifiedVaultConfig().allegedShorteningThreshold(); int ciphertextLimit = checker.determineSupportedCiphertextFileNameLength(getPath()); if (ciphertextLimit < shorteningThreshold) { int cleartextLimit = checker.determineSupportedCleartextFileNameLength(getPath()); @@ -327,14 +327,10 @@ public class Vault { return stats; } - public Optional getUnverifiedVaultConfig() { + public UnverifiedVaultConfig getUnverifiedVaultConfig() throws IOException { Path configPath = getPath().resolve(org.cryptomator.common.Constants.VAULTCONFIG_FILENAME); - try { - String token = Files.readString(configPath, StandardCharsets.US_ASCII); - return Optional.of(VaultConfig.decode(token)); - } catch (IOException e) { - return Optional.empty(); - } + String token = Files.readString(configPath, StandardCharsets.US_ASCII); + return VaultConfig.decode(token); } public Observable[] observables() { diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingModule.java b/main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingModule.java index 15a5d27b8..f7eb8922f 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingModule.java @@ -10,6 +10,7 @@ import org.cryptomator.ui.common.FxmlLoaderFactory; import org.cryptomator.ui.keyloading.masterkeyfile.MasterkeyFileLoadingModule; import javax.inject.Provider; +import java.io.IOException; import java.net.URI; import java.util.Map; import java.util.Optional; @@ -28,20 +29,13 @@ abstract class KeyLoadingModule { @Provides @KeyLoading @KeyLoadingScoped - static Optional provideKeyId(@KeyLoading Vault vault) { - return vault.getUnverifiedVaultConfig().map(UnverifiedVaultConfig::getKeyId); - } - - @Provides - @KeyLoading - @KeyLoadingScoped - static KeyLoadingStrategy provideKeyLoaderProvider(@KeyLoading Optional keyId, Map> strategies) { - if (keyId.isEmpty()) { - return KeyLoadingStrategy.failed(new IllegalArgumentException("No key id provided")); - } else { - String scheme = keyId.get().getScheme(); + static KeyLoadingStrategy provideKeyLoaderProvider(@KeyLoading Vault vault, Map> strategies) { + try { + String scheme = vault.getUnverifiedVaultConfig().getKeyId().getScheme(); var fallback = KeyLoadingStrategy.failed(new IllegalArgumentException("Unsupported key id " + scheme)); return strategies.getOrDefault(scheme, () -> fallback).get(); + } catch (IOException e) { + return KeyLoadingStrategy.failed(e); } }