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 52e13c697..04dd2b447 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
@@ -19,15 +19,10 @@ import javafx.beans.property.StringProperty;
import org.apache.commons.lang3.StringUtils;
import org.fxmisc.easybind.EasyBind;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
-import java.util.Base64;
-import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Random;
-import java.util.UUID;
/**
* The settings specific to a single vault.
@@ -40,7 +35,7 @@ public class VaultSettings {
public static final boolean DEFAULT_USES_INDIVIDUAL_MOUNTPATH = false;
public static final boolean DEFAULT_USES_READONLY_MODE = false;
public static final String DEFAULT_MOUNT_FLAGS = "";
- public static final int DEFAULT_PATH_LENGTH_LIMITATION = -1;
+ public static final int DEFAULT_FILENAME_LENGTH_LIMIT = -1;
private static final Random RNG = new Random();
@@ -54,7 +49,7 @@ public class VaultSettings {
private final StringProperty individualMountPath = new SimpleStringProperty();
private final BooleanProperty usesReadOnlyMode = new SimpleBooleanProperty(DEFAULT_USES_READONLY_MODE);
private final StringProperty mountFlags = new SimpleStringProperty(DEFAULT_MOUNT_FLAGS);
- private final IntegerProperty pathLengthLimitation = new SimpleIntegerProperty(DEFAULT_PATH_LENGTH_LIMITATION);
+ private final IntegerProperty filenameLengthLimit = new SimpleIntegerProperty(DEFAULT_FILENAME_LENGTH_LIMIT);
public VaultSettings(String id) {
this.id = Objects.requireNonNull(id);
@@ -63,7 +58,7 @@ public class VaultSettings {
}
Observable[] observables() {
- return new Observable[]{path, mountName, winDriveLetter, unlockAfterStartup, revealAfterMount, usesIndividualMountPath, individualMountPath, usesReadOnlyMode, mountFlags, pathLengthLimitation};
+ return new Observable[]{path, mountName, winDriveLetter, unlockAfterStartup, revealAfterMount, usesIndividualMountPath, individualMountPath, usesReadOnlyMode, mountFlags, filenameLengthLimit};
}
private void deriveMountNameFromPath(Path path) {
@@ -151,8 +146,8 @@ public class VaultSettings {
return mountFlags;
}
- public IntegerProperty pathLengthLimitation() {
- return pathLengthLimitation;
+ public IntegerProperty filenameLengthLimit() {
+ return filenameLengthLimit;
}
/* Hashcode/Equals */
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 0f3babce3..8e87a16e7 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
@@ -29,7 +29,7 @@ class VaultSettingsJsonAdapter {
out.name("individualMountPath").value(value.individualMountPath().get());
out.name("usesReadOnlyMode").value(value.usesReadOnlyMode().get());
out.name("mountFlags").value(value.mountFlags().get());
- out.name("pathLengthLimitation").value(value.pathLengthLimitation().get());
+ out.name("filenameLengthLimit").value(value.filenameLengthLimit().get());
out.endObject();
}
@@ -44,7 +44,7 @@ class VaultSettingsJsonAdapter {
boolean usesIndividualMountPath = VaultSettings.DEFAULT_USES_INDIVIDUAL_MOUNTPATH;
boolean usesReadOnlyMode = VaultSettings.DEFAULT_USES_READONLY_MODE;
String mountFlags = VaultSettings.DEFAULT_MOUNT_FLAGS;
- int pathLengthLimitation = VaultSettings.DEFAULT_PATH_LENGTH_LIMITATION;
+ int filenameLengthLimit = VaultSettings.DEFAULT_FILENAME_LENGTH_LIMIT;
in.beginObject();
while (in.hasNext()) {
@@ -80,8 +80,8 @@ class VaultSettingsJsonAdapter {
case "mountFlags":
mountFlags = in.nextString();
break;
- case "pathLengthLimitation":
- pathLengthLimitation = in.nextInt();
+ case "filenameLengthLimit":
+ filenameLengthLimit = in.nextInt();
break;
default:
LOG.warn("Unsupported vault setting found in JSON: " + name);
@@ -101,7 +101,7 @@ class VaultSettingsJsonAdapter {
vaultSettings.individualMountPath().set(individualMountPath);
vaultSettings.usesReadOnlyMode().set(usesReadOnlyMode);
vaultSettings.mountFlags().set(mountFlags);
- vaultSettings.pathLengthLimitation().set(pathLengthLimitation);
+ vaultSettings.filenameLengthLimit().set(filenameLengthLimit);
return vaultSettings;
}
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 d0baf7174..5b0fd3bd6 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
@@ -21,6 +21,7 @@ import org.cryptomator.cryptofs.CryptoFileSystem;
import org.cryptomator.cryptofs.CryptoFileSystemProperties;
import org.cryptomator.cryptofs.CryptoFileSystemProperties.FileSystemFlags;
import org.cryptomator.cryptofs.CryptoFileSystemProvider;
+import org.cryptomator.cryptofs.common.Constants;
import org.cryptomator.cryptofs.common.FileSystemCapabilityChecker;
import org.cryptomator.cryptolib.api.CryptoException;
import org.cryptomator.cryptolib.api.InvalidPassphraseException;
@@ -102,18 +103,19 @@ public class Vault {
if (vaultSettings.usesReadOnlyMode().get()) {
flags.add(FileSystemFlags.READONLY);
}
- if (vaultSettings.pathLengthLimitation().get() == -1) {
- LOG.debug("Determining path length limitations...");
- int limit = new FileSystemCapabilityChecker().determineSupportedPathLength(getPath());
- vaultSettings.pathLengthLimitation().set(limit);
- LOG.info("Storing path length limit of {}", limit);
+ if (vaultSettings.filenameLengthLimit().get() == -1) {
+ LOG.debug("Determining file name length limitations...");
+ int limit = new FileSystemCapabilityChecker().determineSupportedFileNameLength(getPath());
+ vaultSettings.filenameLengthLimit().set(limit);
+ LOG.info("Storing file name length limit of {}", limit);
}
- assert vaultSettings.pathLengthLimitation().get() > 0;
+ assert vaultSettings.filenameLengthLimit().get() > 0;
CryptoFileSystemProperties fsProps = CryptoFileSystemProperties.cryptoFileSystemProperties() //
.withPassphrase(passphrase) //
.withFlags(flags) //
.withMasterkeyFilename(MASTERKEY_FILENAME) //
- .withMaxPathLength(vaultSettings.pathLengthLimitation().get()) //
+ .withMaxPathLength(vaultSettings.filenameLengthLimit().get() + Constants.MAX_ADDITIONAL_PATH_LENGTH) //
+ .withMaxNameLength(vaultSettings.filenameLengthLimit().get()) //
.build();
return CryptoFileSystemProvider.newFileSystem(getPath(), fsProps);
}
diff --git a/main/pom.xml b/main/pom.xml
index a68ab83e4..7926fdf22 100644
--- a/main/pom.xml
+++ b/main/pom.xml
@@ -24,7 +24,7 @@
UTF-8
- 1.9.8
+ 1.9.9
2.2.2
1.2.3
1.1.14