From a96239a19fa3f6c470c59473e5e386acb66125a1 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 31 Mar 2021 10:52:30 +0200 Subject: [PATCH] closes #1245 --- .../ui/fxapp/UpdateCheckerModule.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java b/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java index 596e704e9..ef8621f3b 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java @@ -15,6 +15,7 @@ import javafx.beans.property.StringProperty; import javafx.concurrent.ScheduledService; import javafx.concurrent.Task; import javafx.util.Duration; +import java.io.UncheckedIOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; @@ -39,8 +40,13 @@ public abstract class UpdateCheckerModule { @Provides @FxApplicationScoped - static HttpClient provideHttpClient() { - return HttpClient.newHttpClient(); + static Optional provideHttpClient() { + try { + return Optional.of(HttpClient.newHttpClient()); + } catch (UncheckedIOException e) { + LOG.error("HttpClient for update check cannot be created.", e); + return Optional.empty(); + } } @Provides @@ -66,11 +72,20 @@ public abstract class UpdateCheckerModule { @Provides @FxApplicationScoped - static ScheduledService provideCheckForUpdatesService(ExecutorService executor, HttpClient httpClient, HttpRequest checkForUpdatesRequest, @Named("checkForUpdatesInterval") ObjectBinding period) { + static ScheduledService provideCheckForUpdatesService(ExecutorService executor, Optional httpClient, HttpRequest checkForUpdatesRequest, @Named("checkForUpdatesInterval") ObjectBinding period) { ScheduledService service = new ScheduledService<>() { @Override protected Task createTask() { - return new UpdateCheckerTask(httpClient, checkForUpdatesRequest); + if (httpClient.isPresent()) { + return new UpdateCheckerTask(httpClient.get(), checkForUpdatesRequest); + } else { + return new Task<>() { + @Override + protected String call() { + throw new NullPointerException("No HttpClient present."); + } + }; + } } }; service.setOnFailed(event -> LOG.error("Failed to execute update service", service.getException()));