From cae32cff4cbd4aecad5c6af25822b0be8d58d6ea Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Mon, 25 Feb 2019 23:59:21 +0800 Subject: [PATCH] remove isDependentSucceeded in whenComplete --- .../ui/account/AddAuthlibInjectorServerPane.java | 4 ++-- .../ui/download/VanillaInstallWizardProvider.java | 2 +- .../jackhuang/hmcl/ui/download/VersionsPage.java | 4 ++-- .../jackhuang/hmcl/ui/versions/ModListPage.java | 4 ++-- .../jackhuang/hmcl/ui/versions/WorldListPage.java | 4 ++-- .../hmcl/download/DefaultGameBuilder.java | 4 ++-- .../org/jackhuang/hmcl/task/SchedulerImpl.java | 10 +++++----- .../main/java/org/jackhuang/hmcl/task/Task.java | 15 +++++++++------ .../java/org/jackhuang/hmcl/util/TaskTest.java | 4 ++-- 9 files changed, 27 insertions(+), 24 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAuthlibInjectorServerPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAuthlibInjectorServerPane.java index b37dbd39c..02a3b2578 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAuthlibInjectorServerPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAuthlibInjectorServerPane.java @@ -106,11 +106,11 @@ public class AddAuthlibInjectorServerPane extends StackPane implements DialogAwa Task.runAsync(() -> { serverBeingAdded = AuthlibInjectorServer.locateServer(url); - }).whenComplete(Schedulers.javafx(), (isDependentSucceeded, exception) -> { + }).whenComplete(Schedulers.javafx(), exception -> { addServerPane.setDisable(false); nextPane.hideSpinner(); - if (isDependentSucceeded) { + if (exception == null) { lblServerName.setText(serverBeingAdded.getName()); lblServerUrl.setText(serverBeingAdded.getUrl()); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VanillaInstallWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VanillaInstallWizardProvider.java index 4deceef5b..86e1d2ada 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VanillaInstallWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VanillaInstallWizardProvider.java @@ -59,7 +59,7 @@ public final class VanillaInstallWizardProvider implements WizardProvider { if (settings.containsKey("optifine")) builder.version((RemoteVersion) settings.get("optifine")); - return builder.buildAsync().whenComplete((a, b) -> profile.getRepository().refreshVersions()) + return builder.buildAsync().whenComplete(any -> profile.getRepository().refreshVersions()) .thenRun(Schedulers.javafx(), () -> profile.setSelectedVersion(name)); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java index b23af41de..d84338c49 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java @@ -128,8 +128,8 @@ public final class VersionsPage extends BorderPane implements WizardPage, Refres @Override public void refresh() { transitionHandler.setContent(spinner, ContainerAnimations.FADE.getAnimationProducer()); - executor = versionList.refreshAsync(gameVersion, downloadProvider).whenComplete((isDependentSucceeded, exception) -> { - if (isDependentSucceeded) { + executor = versionList.refreshAsync(gameVersion, downloadProvider).whenComplete(exception -> { + if (exception == null) { List items = loadVersions(); Platform.runLater(() -> { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java index 1b9050e0b..b987b2b38 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java @@ -91,9 +91,9 @@ public final class ModListPage extends Control { modManager.refreshMods(); return new LinkedList<>(modManager.getMods()); } - }).whenComplete(Schedulers.javafx(), (list, isDependentSucceeded, exception) -> { + }).whenComplete(Schedulers.javafx(), (list, exception) -> { loadingProperty().set(false); - if (isDependentSucceeded) + if (exception == null) FXUtils.onWeakChangeAndOperate(parentTab.getSelectionModel().selectedItemProperty(), newValue -> { if (newValue != null && newValue.getUserData() == ModListPage.this) itemsProperty().setAll(list.stream().map(ModListPageSkin.ModInfoObject::new).collect(Collectors.toList())); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/WorldListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/WorldListPage.java index 4cbc160ae..8bfb39c0c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/WorldListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/WorldListPage.java @@ -51,9 +51,9 @@ public class WorldListPage extends ListPage { setLoading(true); Task.supplyAsync(() -> World.getWorlds(savesDir).parallel().collect(Collectors.toList())) - .whenComplete(Schedulers.javafx(), (result, isDependentSucceeded, exception) -> { + .whenComplete(Schedulers.javafx(), (result, exception) -> { setLoading(false); - if (isDependentSucceeded) + if (exception == null) itemsProperty().setAll(result.stream().map(WorldListItem::new).collect(Collectors.toList())); }).start(); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java index c3d9994a6..d62ccf21d 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java @@ -68,8 +68,8 @@ public class DefaultGameBuilder extends GameBuilder { libraryTask = libraryTask.thenCompose(dependencyManager.installLibraryAsync(remoteVersion)); return libraryTask; - }).whenComplete((isDependentSucceeded, exception) -> { - if (!isDependentSucceeded) + }).whenComplete(exception -> { + if (exception != null) dependencyManager.getGameRepository().getVersionRoot(name).delete(); }); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/SchedulerImpl.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/SchedulerImpl.java index b5229ec8e..38410b89c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/SchedulerImpl.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/SchedulerImpl.java @@ -19,9 +19,9 @@ package org.jackhuang.hmcl.task; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicReference; -import java.util.function.Consumer; import org.jackhuang.hmcl.util.function.ExceptionalRunnable; +import org.jetbrains.annotations.NotNull; /** * @@ -29,9 +29,9 @@ import org.jackhuang.hmcl.util.function.ExceptionalRunnable; */ class SchedulerImpl extends Scheduler { - private final Consumer executor; + private final Executor executor; - public SchedulerImpl(Consumer executor) { + public SchedulerImpl(Executor executor) { this.executor = executor; } @@ -40,7 +40,7 @@ class SchedulerImpl extends Scheduler { CountDownLatch latch = new CountDownLatch(1); AtomicReference wrapper = new AtomicReference<>(); - executor.accept(() -> { + executor.execute(() -> { try { block.run(); } catch (Exception e) { @@ -81,7 +81,7 @@ class SchedulerImpl extends Scheduler { } @Override - public Void get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { + public Void get(long timeout, @NotNull TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { if (!latch.await(timeout, unit)) throw new TimeoutException(); return getImpl(); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java index 638ef3013..22f893ee1 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java @@ -595,7 +595,10 @@ public abstract class Task { @Override public void execute() throws Exception { - action.execute(isDependentsSucceeded(), Task.this.getException()); + if (isDependentsSucceeded() != (Task.this.getException() == null)) + throw new AssertionError("When dependents succeeded, Task.exception must be nonnull."); + + action.execute(Task.this.getException()); if (!isDependentsSucceeded()) { setSignificance(TaskSignificance.MINOR); @@ -634,7 +637,7 @@ public abstract class Task { * @return the new Task */ public Task whenComplete(Scheduler scheduler, FinalizedCallbackWithResult action) { - return whenComplete(scheduler, ((isDependentSucceeded, exception) -> action.execute(getResult(), isDependentSucceeded, exception))); + return whenComplete(scheduler, (exception -> action.execute(getResult(), exception))); } /** @@ -653,8 +656,8 @@ public abstract class Task { * @return the new Task */ public final Task whenComplete(Scheduler scheduler, ExceptionalRunnable success, ExceptionalConsumer failure) { - return whenComplete(scheduler, (isDependentSucceeded, exception) -> { - if (isDependentSucceeded) { + return whenComplete(scheduler, exception -> { + if (exception == null) { if (success != null) try { success.run(); @@ -805,11 +808,11 @@ public abstract class Task { } public interface FinalizedCallback { - void execute(boolean isDependentSucceeded, Exception exception) throws Exception; + void execute(Exception exception) throws Exception; } public interface FinalizedCallbackWithResult { - void execute(T result, boolean isDependentSucceeded, Exception exception) throws Exception; + void execute(T result, Exception exception) throws Exception; } private static String getCaller() { diff --git a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/TaskTest.java b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/TaskTest.java index 5520461bb..1704f9c14 100644 --- a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/TaskTest.java +++ b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/TaskTest.java @@ -11,8 +11,8 @@ public class TaskTest { Task.allOf(Task.runAsync(() -> { throw new Exception(); })) - )).whenComplete(((isDependentSucceeded, exception) -> { - Assert.assertFalse(isDependentSucceeded); + )).whenComplete((exception -> { + Assert.assertFalse(exception == null); })).test(); } }