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 67b010556..0a0301266 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 @@ -35,7 +35,7 @@ public class VaultSettings { public static final boolean DEFAULT_REAVEAL_AFTER_MOUNT = true; public static final boolean DEFAULT_USES_INDIVIDUAL_MOUNTPATH = false; public static final boolean DEFAULT_USES_READONLY_MODE = false; - public static final List DEFAULT_MOUNT_FLAGS = List.of(); + public static final String DEFAULT_MOUNT_FLAGS = ""; private final String id; private final ObjectProperty path = new SimpleObjectProperty(); @@ -46,7 +46,7 @@ public class VaultSettings { private final BooleanProperty usesIndividualMountPath = new SimpleBooleanProperty(DEFAULT_USES_INDIVIDUAL_MOUNTPATH); private final StringProperty individualMountPath = new SimpleStringProperty(); private final BooleanProperty usesReadOnlyMode = new SimpleBooleanProperty(DEFAULT_USES_READONLY_MODE); - private final ObjectProperty> mountFlags = new SimpleObjectProperty(DEFAULT_MOUNT_FLAGS); + private final StringProperty mountFlags = new SimpleStringProperty(DEFAULT_MOUNT_FLAGS); public VaultSettings(String id) { this.id = Objects.requireNonNull(id); @@ -55,7 +55,7 @@ public class VaultSettings { } Observable[] observables() { - return new Observable[]{path, mountName, winDriveLetter, unlockAfterStartup, revealAfterMount, usesIndividualMountPath, individualMountPath, usesReadOnlyMode}; + return new Observable[]{path, mountName, winDriveLetter, unlockAfterStartup, revealAfterMount, usesIndividualMountPath, individualMountPath, usesReadOnlyMode, mountFlags}; } private void deriveMountNameFromPath(Path path) { @@ -150,7 +150,7 @@ public class VaultSettings { return usesReadOnlyMode; } - public ObjectProperty> mountFlags() { + public StringProperty mountFlags() { return mountFlags; } diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java index 11d94dd44..e5130cdb0 100644 --- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java +++ b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java @@ -6,15 +6,12 @@ package org.cryptomator.common.settings; import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; class VaultSettingsJsonAdapter { @@ -31,8 +28,7 @@ class VaultSettingsJsonAdapter { out.name("usesIndividualMountPath").value(value.usesIndividualMountPath().get()); out.name("individualMountPath").value(value.individualMountPath().get()); out.name("usesReadOnlyMode").value(value.usesReadOnlyMode().get()); - out.name("mountFlags"); - writeMountFlags(out, value.mountFlags().get()); + out.name("mountFlags").value(value.mountFlags().get()); out.endObject(); } @@ -46,7 +42,7 @@ class VaultSettingsJsonAdapter { boolean revealAfterMount = VaultSettings.DEFAULT_REAVEAL_AFTER_MOUNT; boolean usesIndividualMountPath = VaultSettings.DEFAULT_USES_INDIVIDUAL_MOUNTPATH; boolean usesReadOnlyMode = VaultSettings.DEFAULT_USES_READONLY_MODE; - List mountFlags = VaultSettings.DEFAULT_MOUNT_FLAGS; + String mountFlags = VaultSettings.DEFAULT_MOUNT_FLAGS; in.beginObject(); while (in.hasNext()) { @@ -80,7 +76,7 @@ class VaultSettingsJsonAdapter { usesReadOnlyMode = in.nextBoolean(); break; case "mountFlags": - mountFlags = readMountFlags(in); + mountFlags = in.nextString(); break; default: LOG.warn("Unsupported vault setting found in JSON: " + name); @@ -103,22 +99,4 @@ class VaultSettingsJsonAdapter { return vaultSettings; } - private List readMountFlags(JsonReader in) throws IOException { - List result = new ArrayList<>(); - in.beginArray(); - while (!JsonToken.END_ARRAY.equals(in.peek())) { - result.add(in.nextString()); - } - in.endArray(); - return result; - } - - private void writeMountFlags(JsonWriter out, List flags) throws IOException { - out.beginArray(); - for (String flag : flags) { - out.value(flag); - } - out.endArray(); - } - } diff --git a/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java b/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java index eb3bb1582..62a37a5c2 100644 --- a/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java +++ b/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java @@ -24,7 +24,7 @@ public class VaultSettingsJsonAdapterTest { @Test public void testDeserialize() throws IOException { - String json = "{\"id\": \"foo\", \"path\": \"/foo/bar\", \"mountName\": \"test\", \"winDriveLetter\": \"X\", \"shouldBeIgnored\": true, \"individualMountPath\": \"/home/test/crypto\", \"mountFlags\":[\"--foo\", \"--bar\"]}"; + String json = "{\"id\": \"foo\", \"path\": \"/foo/bar\", \"mountName\": \"test\", \"winDriveLetter\": \"X\", \"shouldBeIgnored\": true, \"individualMountPath\": \"/home/test/crypto\", \"mountFlags\":\"--foo --bar\"}"; JsonReader jsonReader = new JsonReader(new StringReader(json)); VaultSettings vaultSettings = adapter.read(jsonReader); @@ -33,7 +33,7 @@ public class VaultSettingsJsonAdapterTest { Assertions.assertEquals("test", vaultSettings.mountName().get()); Assertions.assertEquals("X", vaultSettings.winDriveLetter().get()); Assertions.assertEquals("/home/test/crypto", vaultSettings.individualMountPath().get()); - MatcherAssert.assertThat(vaultSettings.mountFlags().get(), CoreMatchers.hasItems("--foo", "--bar")); + Assertions.assertEquals("--foo --bar", vaultSettings.mountFlags().get()); } @@ -43,7 +43,7 @@ public class VaultSettingsJsonAdapterTest { VaultSettings vaultSettings = new VaultSettings("test"); vaultSettings.path().set(Paths.get("/foo/bar")); vaultSettings.mountName().set("mountyMcMountFace"); - vaultSettings.mountFlags().set(Arrays.asList("--foo", "--bar")); + vaultSettings.mountFlags().set("--foo --bar"); StringWriter buf = new StringWriter(); JsonWriter jsonWriter = new JsonWriter(buf); @@ -53,7 +53,7 @@ public class VaultSettingsJsonAdapterTest { MatcherAssert.assertThat(result, CoreMatchers.containsString("\"id\":\"test\"")); MatcherAssert.assertThat(result, CoreMatchers.containsString("\"path\":\"/foo/bar\"")); MatcherAssert.assertThat(result, CoreMatchers.containsString("\"mountName\":\"mountyMcMountFace\"")); - MatcherAssert.assertThat(result, CoreMatchers.containsString("\"mountFlags\":[\"--foo\",\"--bar\"]")); + MatcherAssert.assertThat(result, CoreMatchers.containsString("\"mountFlags\":\"--foo --bar\"")); } }