mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-05-17 18:21:26 +00:00
Updated MountPointChooserModule and MPCs
Updated MountPointChooserModule and MPCs to use bindings (@'Binds) instead of providers (@'Provides) Updated CustomDriveLetterChooser and TemporaryMountPointChooser to use VaultSettings instead of Vaults See: https://github.com/cryptomator/cryptomator/pull/1307#discussion_r472872166
This commit is contained in:
@@ -3,6 +3,7 @@ package org.cryptomator.common.mountpoint;
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.cryptomator.common.vaults.WindowsDriveLetters;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -12,6 +13,7 @@ public class AvailableDriveLetterChooser implements MountPointChooser {
|
||||
|
||||
private final WindowsDriveLetters windowsDriveLetters;
|
||||
|
||||
@Inject
|
||||
public AvailableDriveLetterChooser(WindowsDriveLetters windowsDriveLetters) {
|
||||
this.windowsDriveLetters = windowsDriveLetters;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package org.cryptomator.common.mountpoint;
|
||||
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.cryptomator.common.vaults.Vault;
|
||||
import org.cryptomator.common.settings.VaultSettings;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Optional;
|
||||
@@ -11,10 +12,11 @@ public class CustomDriveLetterChooser implements MountPointChooser {
|
||||
|
||||
public static final int PRIORITY = 100;
|
||||
|
||||
private final Vault vault;
|
||||
private final VaultSettings vaultSettings;
|
||||
|
||||
public CustomDriveLetterChooser(Vault vault) {
|
||||
this.vault = vault;
|
||||
@Inject
|
||||
public CustomDriveLetterChooser(VaultSettings vaultSettings) {
|
||||
this.vaultSettings = vaultSettings;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -24,7 +26,7 @@ public class CustomDriveLetterChooser implements MountPointChooser {
|
||||
|
||||
@Override
|
||||
public Optional<Path> chooseMountPoint() {
|
||||
return this.vault.getVaultSettings().getWinDriveLetter().map(letter -> letter.charAt(0) + ":\\").map(Paths::get);
|
||||
return this.vaultSettings.getWinDriveLetter().map(letter -> letter.charAt(0) + ":\\").map(Paths::get);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,6 +4,7 @@ import org.cryptomator.common.vaults.Vault;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.DirectoryNotEmptyException;
|
||||
import java.nio.file.DirectoryStream;
|
||||
@@ -23,6 +24,7 @@ public class CustomMountPointChooser implements MountPointChooser {
|
||||
|
||||
private final Vault vault;
|
||||
|
||||
@Inject
|
||||
public CustomMountPointChooser(Vault vault) {
|
||||
this.vault = vault;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package org.cryptomator.common.mountpoint;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import dagger.Binds;
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import dagger.multibindings.IntoSet;
|
||||
import org.cryptomator.common.Environment;
|
||||
import org.cryptomator.common.vaults.PerVault;
|
||||
import org.cryptomator.common.vaults.Vault;
|
||||
import org.cryptomator.common.vaults.WindowsDriveLetters;
|
||||
|
||||
import javax.inject.Named;
|
||||
import java.util.Set;
|
||||
@@ -21,33 +19,25 @@ import java.util.Set;
|
||||
@Module
|
||||
public abstract class MountPointChooserModule {
|
||||
|
||||
@Provides
|
||||
@Binds
|
||||
@IntoSet
|
||||
@PerVault
|
||||
public static MountPointChooser provideCustomMountPointChooser(Vault vault) {
|
||||
return new CustomMountPointChooser(vault);
|
||||
}
|
||||
public abstract MountPointChooser bindCustomMountPointChooser(CustomMountPointChooser chooser);
|
||||
|
||||
@Provides
|
||||
@Binds
|
||||
@IntoSet
|
||||
@PerVault
|
||||
public static MountPointChooser provideCustomDriveLetterChooser(Vault vault) {
|
||||
return new CustomDriveLetterChooser(vault);
|
||||
}
|
||||
public abstract MountPointChooser bindCustomDriveLetterChooser(CustomDriveLetterChooser chooser);
|
||||
|
||||
@Provides
|
||||
@Binds
|
||||
@IntoSet
|
||||
@PerVault
|
||||
public static MountPointChooser provideAvailableDriveLetterChooser(WindowsDriveLetters windowsDriveLetters) {
|
||||
return new AvailableDriveLetterChooser(windowsDriveLetters);
|
||||
}
|
||||
public abstract MountPointChooser bindAvailableDriveLetterChooser(AvailableDriveLetterChooser chooser);
|
||||
|
||||
@Provides
|
||||
@Binds
|
||||
@IntoSet
|
||||
@PerVault
|
||||
public static MountPointChooser provideTemporaryMountPointChooser(Vault vault, Environment environment) {
|
||||
return new TemporaryMountPointChooser(vault, environment);
|
||||
}
|
||||
public abstract MountPointChooser bindTemporaryMountPointChooser(TemporaryMountPointChooser chooser);
|
||||
|
||||
@Provides
|
||||
@PerVault
|
||||
|
||||
@@ -2,10 +2,11 @@ package org.cryptomator.common.mountpoint;
|
||||
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.cryptomator.common.Environment;
|
||||
import org.cryptomator.common.vaults.Vault;
|
||||
import org.cryptomator.common.settings.VaultSettings;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
@@ -20,17 +21,18 @@ public class TemporaryMountPointChooser implements MountPointChooser {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(TemporaryMountPointChooser.class);
|
||||
private static final int MAX_TMPMOUNTPOINT_CREATION_RETRIES = 10;
|
||||
|
||||
private final Vault vault;
|
||||
private final VaultSettings vaultSettings;
|
||||
private final Environment environment;
|
||||
|
||||
public TemporaryMountPointChooser(Vault vault, Environment environment) {
|
||||
this.vault = vault;
|
||||
@Inject
|
||||
public TemporaryMountPointChooser(VaultSettings vaultSettings, Environment environment) {
|
||||
this.vaultSettings = vaultSettings;
|
||||
this.environment = environment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isApplicable() {
|
||||
if(this.environment.getMountPointsDir().isEmpty()) {
|
||||
if (this.environment.getMountPointsDir().isEmpty()) {
|
||||
LOG.warn("\"cryptomator.mountPointsDir\" is not set to a valid path!");
|
||||
return false;
|
||||
}
|
||||
@@ -41,7 +43,7 @@ public class TemporaryMountPointChooser implements MountPointChooser {
|
||||
public Optional<Path> chooseMountPoint() {
|
||||
//Shouldn't throw, but let's keep #orElseThrow in case we made a mistake and the check in #isApplicable failed
|
||||
Path parent = this.environment.getMountPointsDir().orElseThrow();
|
||||
String basename = this.vault.getVaultSettings().mountName().get();
|
||||
String basename = this.vaultSettings.mountName().get();
|
||||
for (int i = 0; i < MAX_TMPMOUNTPOINT_CREATION_RETRIES; i++) {
|
||||
Path mountPoint = parent.resolve(basename + "_" + i);
|
||||
if (Files.notExists(mountPoint)) {
|
||||
|
||||
Reference in New Issue
Block a user