store custom mount flags in settings.json as string instead of string array

This commit is contained in:
Sebastian Stenzel
2019-06-18 16:31:10 +02:00
parent 06abbf2dd1
commit ed9adab9b4
3 changed files with 11 additions and 33 deletions

View File

@@ -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<String> DEFAULT_MOUNT_FLAGS = List.of();
public static final String DEFAULT_MOUNT_FLAGS = "";
private final String id;
private final ObjectProperty<Path> 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<List<String>> 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<List<String>> mountFlags() {
public StringProperty mountFlags() {
return mountFlags;
}

View File

@@ -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<String> 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<String> readMountFlags(JsonReader in) throws IOException {
List<String> 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<String> flags) throws IOException {
out.beginArray();
for (String flag : flags) {
out.value(flag);
}
out.endArray();
}
}

View File

@@ -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\""));
}
}