Просмотр исходного кода

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
JaniruTEC 4 лет назад
Родитель
Сommit
8680bd1dee

+ 2 - 0
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;
 	}

+ 7 - 5
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<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

+ 2 - 0
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;
 	}

+ 9 - 19
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

+ 8 - 6
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<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)) {