From 5721b631350fe177bc3cbf07d2c826f570894ea1 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Tue, 28 Apr 2020 10:36:35 +0200 Subject: [PATCH] fixes #1115 --- .../common/vaults/VaultListManager.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java index 09bd60c77..72f88a02c 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java @@ -51,15 +51,16 @@ public class VaultListManager { } public Vault add(Path pathToVault) throws NoSuchFileException { - if (!CryptoFileSystemProvider.containsVault(pathToVault, MASTERKEY_FILENAME)) { - throw new NoSuchFileException(pathToVault.toString(), null, "Not a vault directory"); + Path normalizedPathToVault = pathToVault.normalize().toAbsolutePath(); + if (!CryptoFileSystemProvider.containsVault(normalizedPathToVault, MASTERKEY_FILENAME)) { + throw new NoSuchFileException(normalizedPathToVault.toString(), null, "Not a vault directory"); } - Optional alreadyExistingVault = get(pathToVault); + Optional alreadyExistingVault = get(normalizedPathToVault); if (alreadyExistingVault.isPresent()) { return alreadyExistingVault.get(); } else { VaultSettings vaultSettings = VaultSettings.withRandomId(); - vaultSettings.path().set(pathToVault); + vaultSettings.path().set(normalizedPathToVault); Vault newVault = create(vaultSettings); vaultList.add(newVault); return newVault; @@ -72,13 +73,11 @@ public class VaultListManager { } private Optional get(Path vaultPath) { - return vaultList.stream().filter(v -> { - try { - return Files.isSameFile(vaultPath, v.getPath()); - } catch (IOException e) { - return false; - } - }).findAny(); + assert vaultPath.isAbsolute(); + assert vaultPath.normalize().equals(vaultPath); + return vaultList.stream() // + .filter(v -> vaultPath.equals(v.getPath())) // + .findAny(); } private Vault create(VaultSettings vaultSettings) {