diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/AvailableDriveLetterChooser.java b/main/commons/src/main/java/org/cryptomator/common/mountpoint/AvailableDriveLetterChooser.java index 04e7c74ff..22fc8f4af 100644 --- a/main/commons/src/main/java/org/cryptomator/common/mountpoint/AvailableDriveLetterChooser.java +++ b/main/commons/src/main/java/org/cryptomator/common/mountpoint/AvailableDriveLetterChooser.java @@ -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; } diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomDriveLetterChooser.java b/main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomDriveLetterChooser.java index 0c44150d1..0d0eae225 100644 --- a/main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomDriveLetterChooser.java +++ b/main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomDriveLetterChooser.java @@ -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 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 diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomMountPointChooser.java b/main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomMountPointChooser.java index 01cb8c568..3cad72e9d 100644 --- a/main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomMountPointChooser.java +++ b/main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomMountPointChooser.java @@ -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; } diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/MountPointChooserModule.java b/main/commons/src/main/java/org/cryptomator/common/mountpoint/MountPointChooserModule.java index 9a2332c94..22d5fd286 100644 --- a/main/commons/src/main/java/org/cryptomator/common/mountpoint/MountPointChooserModule.java +++ b/main/commons/src/main/java/org/cryptomator/common/mountpoint/MountPointChooserModule.java @@ -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 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 2638db0b4..bd6dcde43 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 @@ -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 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)) {