|
@@ -9,24 +9,26 @@
|
|
******************************************************************************/
|
|
******************************************************************************/
|
|
package org.cryptomator.ui.util.mount;
|
|
package org.cryptomator.ui.util.mount;
|
|
|
|
|
|
|
|
+import java.util.Collection;
|
|
import java.util.concurrent.ExecutorService;
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
|
|
import javax.inject.Inject;
|
|
import javax.inject.Inject;
|
|
import javax.inject.Provider;
|
|
import javax.inject.Provider;
|
|
|
|
+import javax.inject.Singleton;
|
|
|
|
|
|
import org.cryptomator.webdav.WebDavServer;
|
|
import org.cryptomator.webdav.WebDavServer;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
+@Singleton
|
|
public class WebDavMounterProvider implements Provider<WebDavMounter> {
|
|
public class WebDavMounterProvider implements Provider<WebDavMounter> {
|
|
|
|
|
|
private static final Logger LOG = LoggerFactory.getLogger(WebDavMounterProvider.class);
|
|
private static final Logger LOG = LoggerFactory.getLogger(WebDavMounterProvider.class);
|
|
- private static final WebDavMounterStrategy[] STRATEGIES = {new WindowsWebDavMounter(), new MacOsXWebDavMounter(), new LinuxGvfsWebDavMounter()};
|
|
|
|
private final WebDavMounterStrategy choosenStrategy;
|
|
private final WebDavMounterStrategy choosenStrategy;
|
|
|
|
|
|
@Inject
|
|
@Inject
|
|
- public WebDavMounterProvider(WebDavServer server, ExecutorService executorService) {
|
|
|
|
- this.choosenStrategy = getStrategyWhichShouldWork();
|
|
|
|
|
|
+ public WebDavMounterProvider(WebDavServer server, ExecutorService executorService, MountStrategies availableStrategies) {
|
|
|
|
+ this.choosenStrategy = getStrategyWhichShouldWork(availableStrategies);
|
|
executorService.execute(() -> {
|
|
executorService.execute(() -> {
|
|
this.choosenStrategy.warmUp(server.getPort());
|
|
this.choosenStrategy.warmUp(server.getPort());
|
|
});
|
|
});
|
|
@@ -37,14 +39,10 @@ public class WebDavMounterProvider implements Provider<WebDavMounter> {
|
|
return this.choosenStrategy;
|
|
return this.choosenStrategy;
|
|
}
|
|
}
|
|
|
|
|
|
- private static WebDavMounterStrategy getStrategyWhichShouldWork() {
|
|
|
|
- for (WebDavMounterStrategy strategy : STRATEGIES) {
|
|
|
|
- if (strategy.shouldWork()) {
|
|
|
|
- LOG.info("Using {}", strategy.getClass().getSimpleName());
|
|
|
|
- return strategy;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return new FallbackWebDavMounter();
|
|
|
|
|
|
+ private WebDavMounterStrategy getStrategyWhichShouldWork(Collection<WebDavMounterStrategy> availableStrategies) {
|
|
|
|
+ WebDavMounterStrategy strategy = availableStrategies.stream().filter(WebDavMounterStrategy::shouldWork).findFirst().orElse(new FallbackWebDavMounter());
|
|
|
|
+ LOG.info("Using {}", strategy.getClass().getSimpleName());
|
|
|
|
+ return strategy;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|