From 1554437884b0019a5b147c45215a568d9f18f121 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 3 Nov 2020 12:44:09 +0100 Subject: [PATCH] Use regular display name and only normalize if webdav is used: * rename StringBinding mountName to normalizedDisplayName * replace in all other occurences mountName with DisplayName --- .../common/mountpoint/TemporaryMountPointChooser.java | 2 +- .../org/cryptomator/common/settings/VaultSettings.java | 8 ++++---- .../java/org/cryptomator/common/vaults/DokanyVolume.java | 2 +- .../java/org/cryptomator/common/vaults/VaultModule.java | 7 ++++--- .../java/org/cryptomator/common/vaults/WebDavVolume.java | 2 +- .../org/cryptomator/common/vaults/VaultModuleTest.java | 2 +- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/TemporaryMountPointChooser.java b/main/commons/src/main/java/org/cryptomator/common/mountpoint/TemporaryMountPointChooser.java index 60991b97e..4c96c0599 100644 --- a/main/commons/src/main/java/org/cryptomator/common/mountpoint/TemporaryMountPointChooser.java +++ b/main/commons/src/main/java/org/cryptomator/common/mountpoint/TemporaryMountPointChooser.java @@ -46,7 +46,7 @@ public class TemporaryMountPointChooser implements MountPointChooser { } private Path choose(Path parent) { - String basename = this.vaultSettings.mountName().get(); + String basename = this.vaultSettings.displayName().get(); for (int i = 0; i < MAX_TMPMOUNTPOINT_CREATION_RETRIES; i++) { Path mountPoint = parent.resolve(basename + "_" + i); if (Files.notExists(mountPoint)) { diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java index c99da6325..7bcb2d4fc 100644 --- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java +++ b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java @@ -53,11 +53,11 @@ public class VaultSettings { private final IntegerProperty filenameLengthLimit = new SimpleIntegerProperty(DEFAULT_FILENAME_LENGTH_LIMIT); private final ObjectProperty actionAfterUnlock = new SimpleObjectProperty<>(DEFAULT_ACTION_AFTER_UNLOCK); - private final StringBinding mountName; + private final StringBinding normalizedDisplayName; public VaultSettings(String id) { this.id = Objects.requireNonNull(id); - this.mountName = Bindings.createStringBinding(this::normalizeDisplayName, displayName); + this.normalizedDisplayName = Bindings.createStringBinding(this::normalizeDisplayName, displayName); } Observable[] observables() { @@ -108,8 +108,8 @@ public class VaultSettings { return displayName; } - public StringBinding mountName() { - return mountName; + public StringBinding normalizedDisplayName() { + return normalizedDisplayName; } public StringProperty winDriveLetter() { diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java index 644604b4b..20d840bcc 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java @@ -44,7 +44,7 @@ public class DokanyVolume extends AbstractVolume { this.mountPoint = determineMountPoint(); String mountName = vaultSettings.displayName().get(); try { - this.mount = mountFactory.mount(fs.getPath("/"), mountPoint, vaultSettings.mountName().get(), FS_TYPE_NAME, mountFlags.strip()); + this.mount = mountFactory.mount(fs.getPath("/"), mountPoint, vaultSettings.displayName().get(), FS_TYPE_NAME, mountFlags.strip()); } catch (MountFailedException e) { if (vaultSettings.getCustomMountPath().isPresent()) { LOG.warn("Failed to mount vault into {}. Is this directory currently accessed by another process (e.g. Windows Explorer)?", mountPoint); diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java index 4844143a3..4fa04ca49 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java @@ -23,6 +23,7 @@ import javafx.beans.property.BooleanProperty; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyBooleanProperty; import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.StringProperty; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -75,7 +76,7 @@ public class VaultModule { @DefaultMountFlags public StringBinding provideDefaultMountFlags(Settings settings, VaultSettings vaultSettings) { ObjectProperty preferredVolumeImpl = settings.preferredVolumeImpl(); - StringBinding mountName = vaultSettings.mountName(); + StringProperty mountName = vaultSettings.displayName(); BooleanProperty readOnly = vaultSettings.usesReadOnlyMode(); return Bindings.createStringBinding(() -> { @@ -95,7 +96,7 @@ public class VaultModule { } // see: https://github.com/osxfuse/osxfuse/wiki/Mount-options - private String getMacFuseDefaultMountFlags(StringBinding mountName, ReadOnlyBooleanProperty readOnly) { + private String getMacFuseDefaultMountFlags(StringProperty mountName, ReadOnlyBooleanProperty readOnly) { assert SystemUtils.IS_OS_MAC_OSX; StringBuilder flags = new StringBuilder(); if (readOnly.get()) { @@ -147,7 +148,7 @@ public class VaultModule { // see https://github.com/billziss-gh/winfsp/blob/5d0b10d0b643652c00ebb4704dc2bb28e7244973/src/dll/fuse/fuse_main.c#L53-L62 for syntax guide // see https://github.com/billziss-gh/winfsp/blob/5d0b10d0b643652c00ebb4704dc2bb28e7244973/src/dll/fuse/fuse.c#L295-L319 for options (-o <...>) // see https://github.com/billziss-gh/winfsp/wiki/Frequently-Asked-Questions/5ba00e4be4f5e938eaae6ef1500b331de12dee77 (FUSE 4.) on why the given defaults were choosen - private String getWindowsFuseDefaultMountFlags(StringBinding mountName, ReadOnlyBooleanProperty readOnly) { + private String getWindowsFuseDefaultMountFlags(StringProperty mountName, ReadOnlyBooleanProperty readOnly) { assert SystemUtils.IS_OS_WINDOWS; StringBuilder flags = new StringBuilder(); diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java index bf42e353f..aa40ef57b 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java @@ -45,7 +45,7 @@ public class WebDavVolume implements Volume { if (!server.isRunning()) { server.start(); } - servlet = server.createWebDavServlet(fs.getPath("/"), vaultSettings.getId() + "/" + vaultSettings.mountName().get()); + servlet = server.createWebDavServlet(fs.getPath("/"), vaultSettings.getId() + "/" + vaultSettings.normalizedDisplayName().get()); servlet.start(); mount(); } diff --git a/main/commons/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java b/main/commons/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java index 907e88623..81c821eb8 100644 --- a/main/commons/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java +++ b/main/commons/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java @@ -28,7 +28,7 @@ public class VaultModuleTest { @BeforeEach public void setup(@TempDir Path tmpDir) { - Mockito.when(vaultSettings.mountName()).thenReturn(Bindings.createStringBinding(() -> "TEST")); + Mockito.when(vaultSettings.normalizedDisplayName()).thenReturn(Bindings.createStringBinding(() -> "TEST")); Mockito.when(vaultSettings.usesReadOnlyMode()).thenReturn(new SimpleBooleanProperty(true)); System.setProperty("user.home", tmpDir.toString()); }