From d9a336e50b9e4babd926aeffc0f12d2c98c3dd81 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Tue, 26 Feb 2019 13:29:09 +0800 Subject: [PATCH] Remove redundant codes --- .../jackhuang/hmcl/game/LauncherHelper.java | 6 +- .../MultiMCInstallVersionSettingTask.java | 2 - .../java/org/jackhuang/hmcl/ui/MainPage.java | 1 - .../hmcl/ui/account/AccountListItemSkin.java | 1 - .../hmcl/ui/construct/IconedItem.java | 1 - .../hmcl/ui/decorator/DecoratorSkin.java | 2 - .../hmcl/ui/profile/ProfilePage.java | 3 - .../hmcl/ui/versions/InstallerListPage.java | 1 - .../jackhuang/hmcl/ui/versions/Versions.java | 1 - .../ui/wizard/DefaultWizardDisplayer.java | 1 - .../jackhuang/hmcl/upgrade/UpdateHandler.java | 1 + .../download/AbstractDependencyManager.java | 2 - .../hmcl/download/MojangDownloadProvider.java | 1 - .../java/org/jackhuang/hmcl/game/World.java | 1 - .../org/jackhuang/hmcl/task/Scheduler.java | 38 --------- .../org/jackhuang/hmcl/task/TaskExecutor.java | 31 +++----- .../org/jackhuang/hmcl/task/TaskListener.java | 42 ++++++++-- .../jackhuang/hmcl/util/AutoTypingMap.java | 77 ------------------- .../jackhuang/hmcl/util/io/NetworkUtils.java | 1 - 19 files changed, 49 insertions(+), 164 deletions(-) delete mode 100644 HMCLCore/src/main/java/org/jackhuang/hmcl/task/Scheduler.java delete mode 100644 HMCLCore/src/main/java/org/jackhuang/hmcl/util/AutoTypingMap.java diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java index 69706a64b..b1d659e46 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -163,7 +163,7 @@ public final class LauncherHelper { setting.toLaunchOptions(profile.getGameDir()), launcherVisibility == LauncherVisibility.CLOSE ? null // Unnecessary to start listening to game process output when close launcher immediately after game launched. - : new HMCLProcessListener(authInfo, setting, gameVersion.isPresent()) + : new HMCLProcessListener(authInfo, gameVersion.isPresent()) )) .thenCompose(launcher -> { // launcher is prev task's result if (scriptFile == null) { @@ -436,7 +436,6 @@ public final class LauncherHelper { */ class HMCLProcessListener implements ProcessListener { - private final VersionSetting setting; private final Map forbiddenTokens; private ManagedProcess process; private boolean lwjgl; @@ -445,8 +444,7 @@ public final class LauncherHelper { private final LinkedList> logs; private final CountDownLatch latch = new CountDownLatch(1); - public HMCLProcessListener(AuthInfo authInfo, VersionSetting setting, boolean detectWindow) { - this.setting = setting; + public HMCLProcessListener(AuthInfo authInfo, boolean detectWindow) { this.detectWindow = detectWindow; if (authInfo == null) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/MultiMCInstallVersionSettingTask.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/MultiMCInstallVersionSettingTask.java index 70f0cedad..dfa7a5da9 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/MultiMCInstallVersionSettingTask.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/MultiMCInstallVersionSettingTask.java @@ -20,12 +20,10 @@ package org.jackhuang.hmcl.game; import org.jackhuang.hmcl.mod.MultiMCInstanceConfiguration; import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.setting.VersionSetting; -import org.jackhuang.hmcl.task.Scheduler; import org.jackhuang.hmcl.task.Schedulers; import org.jackhuang.hmcl.task.Task; import java.util.Objects; -import java.util.concurrent.Executor; public final class MultiMCInstallVersionSettingTask extends Task { private final Profile profile; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java index 6b6d65a54..42e455e9f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java @@ -33,7 +33,6 @@ import javafx.scene.control.Label; import javafx.scene.layout.HBox; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; -import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.util.Duration; import org.jackhuang.hmcl.setting.Profile; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItemSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItemSkin.java index 861469777..cf870c477 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItemSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItemSkin.java @@ -22,7 +22,6 @@ import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXRadioButton; import com.jfoenix.effects.JFXDepthManager; -import javafx.beans.binding.Bindings; import javafx.geometry.Pos; import javafx.scene.control.Label; import javafx.scene.control.SkinBase; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedItem.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedItem.java index bf718fce9..1059ff178 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedItem.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedItem.java @@ -17,7 +17,6 @@ */ package org.jackhuang.hmcl.ui.construct; -import javafx.geometry.Pos; import javafx.scene.Node; import javafx.scene.control.Label; import javafx.scene.layout.HBox; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java index a4aac7fdc..2a887de2e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java @@ -21,7 +21,6 @@ import com.jfoenix.controls.JFXButton; import com.jfoenix.svg.SVGGlyph; import javafx.beans.binding.Bindings; import javafx.collections.ListChangeListener; -import javafx.geometry.BoundingBox; import javafx.geometry.Bounds; import javafx.geometry.Insets; import javafx.geometry.Pos; @@ -56,7 +55,6 @@ public class DecoratorSkin extends SkinBase { private double xOffset, yOffset, newX, newY, initX, initY; private boolean allowMove, isDragging; - private BoundingBox originalBox, maximizedBox; /** * Constructor for all SkinBase instances. diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/profile/ProfilePage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/profile/ProfilePage.java index 27fba4c6b..38fbe98d4 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/profile/ProfilePage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/profile/ProfilePage.java @@ -26,11 +26,9 @@ import javafx.beans.property.ReadOnlyStringWrapper; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.fxml.FXML; -import javafx.scene.Node; import javafx.scene.layout.StackPane; import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.setting.Profiles; -import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.construct.FileItem; import org.jackhuang.hmcl.ui.construct.PageCloseEvent; @@ -38,7 +36,6 @@ import org.jackhuang.hmcl.ui.decorator.DecoratorPage; import org.jackhuang.hmcl.util.StringUtils; import java.io.File; -import java.nio.file.Paths; import java.util.Optional; import static org.jackhuang.hmcl.util.i18n.I18n.i18n; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/InstallerListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/InstallerListPage.java index b7db33443..0cbd6700c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/InstallerListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/InstallerListPage.java @@ -25,7 +25,6 @@ import org.jackhuang.hmcl.game.Library; import org.jackhuang.hmcl.game.Version; import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.task.Schedulers; -import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.ui.InstallerItem; import org.jackhuang.hmcl.ui.ListPage; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/Versions.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/Versions.java index 45c91f1c1..e7677176f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/Versions.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/Versions.java @@ -19,7 +19,6 @@ package org.jackhuang.hmcl.ui.versions; import javafx.stage.FileChooser; import org.jackhuang.hmcl.download.game.GameAssetDownloadTask; -import org.jackhuang.hmcl.download.game.GameAssetIndexDownloadTask; import org.jackhuang.hmcl.game.GameRepository; import org.jackhuang.hmcl.game.LauncherHelper; import org.jackhuang.hmcl.game.Version; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/DefaultWizardDisplayer.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/DefaultWizardDisplayer.java index f3b6f7bd7..de6f15003 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/DefaultWizardDisplayer.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/DefaultWizardDisplayer.java @@ -23,7 +23,6 @@ import javafx.fxml.FXML; import javafx.scene.Node; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; -import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.animation.TransitionHandler; import org.jackhuang.hmcl.util.StringUtils; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java index adf98e9e6..1b788a8ab 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java @@ -20,6 +20,7 @@ package org.jackhuang.hmcl.upgrade; import com.google.gson.Gson; import com.google.gson.JsonParseException; import javafx.application.Platform; + import org.jackhuang.hmcl.Main; import org.jackhuang.hmcl.Metadata; import org.jackhuang.hmcl.task.Task; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/AbstractDependencyManager.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/AbstractDependencyManager.java index fcdc30947..3756038cc 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/AbstractDependencyManager.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/AbstractDependencyManager.java @@ -17,8 +17,6 @@ */ package org.jackhuang.hmcl.download; -import org.jackhuang.hmcl.util.CacheRepository; - /** * * @author huangyuhui diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/MojangDownloadProvider.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/MojangDownloadProvider.java index 0bc60b0bb..d32e17dff 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/MojangDownloadProvider.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/MojangDownloadProvider.java @@ -18,7 +18,6 @@ package org.jackhuang.hmcl.download; import org.jackhuang.hmcl.download.forge.ForgeBMCLVersionList; -import org.jackhuang.hmcl.download.forge.ForgeVersionList; import org.jackhuang.hmcl.download.game.GameVersionList; import org.jackhuang.hmcl.download.liteloader.LiteLoaderVersionList; import org.jackhuang.hmcl.download.optifine.OptiFineBMCLVersionList; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/World.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/World.java index 593842fde..e71a406d0 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/World.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/World.java @@ -36,7 +36,6 @@ import java.nio.file.FileAlreadyExistsException; import java.nio.file.FileSystem; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.stream.Collectors; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Scheduler.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Scheduler.java deleted file mode 100644 index 33a96ba47..000000000 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Scheduler.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Hello Minecraft! Launcher - * Copyright (C) 2019 huangyuhui and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jackhuang.hmcl.task; - -import java.util.concurrent.Future; - -import org.jackhuang.hmcl.util.function.ExceptionalRunnable; - -/** - * Determines how a task is executed. - * - * @author huangyuhui - */ -public abstract class Scheduler { - - /** - * Schedules the given task. - * - * @return the future - */ - public abstract Future schedule(ExceptionalRunnable block); - -} diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java index e3393c707..d439eac9f 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java @@ -17,10 +17,14 @@ */ package org.jackhuang.hmcl.task; -import org.jackhuang.hmcl.util.*; +import org.jackhuang.hmcl.util.Lang; +import org.jackhuang.hmcl.util.Logging; import org.jackhuang.hmcl.util.function.ExceptionalRunnable; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; @@ -108,15 +112,12 @@ public final class TaskExecutor { }) .thenApplyAsync(unused -> (Exception) null) .exceptionally(throwable -> { - if (!(throwable instanceof CompletionException)) - throw new AssertionError(); - Throwable resolved = resolveException(throwable); if (resolved instanceof Exception) { return (Exception) resolved; } else { // If an error occurred, we just rethrow it. - throw (CompletionException) throwable; + throw new CompletionException(throwable); } }); } @@ -137,9 +138,7 @@ public final class TaskExecutor { return CompletableFuture.completedFuture(null); } }) - .thenComposeAsync(unused -> { - return executeTasks(task.getDependents()); - }) + .thenComposeAsync(unused -> executeTasks(task.getDependents())) .thenComposeAsync(dependentsException -> { boolean isDependentsSucceeded = dependentsException == null; @@ -160,9 +159,7 @@ public final class TaskExecutor { rethrow(throwable); }); }) - .thenComposeAsync(unused -> { - return executeTasks(task.getDependencies()); - }) + .thenComposeAsync(unused -> executeTasks(task.getDependencies())) .thenComposeAsync(dependenciesException -> { boolean isDependenciesSucceeded = dependenciesException == null; @@ -176,7 +173,7 @@ public final class TaskExecutor { return CompletableFuture.completedFuture(dependenciesException); } }) - .thenApplyAsync(dependenciesException -> { + .thenAcceptAsync(dependenciesException -> { boolean isDependenciesSucceeded = dependenciesException == null; if (!isDependenciesSucceeded && task.isRelyingOnDependencies()) { @@ -193,14 +190,8 @@ public final class TaskExecutor { taskListeners.forEach(it -> it.onFinished(task)); task.setState(Task.TaskState.SUCCEEDED); - - return null; }) - .thenApplyAsync(unused -> null) .exceptionally(throwable -> { - if (!(throwable instanceof CompletionException)) - throw new AssertionError(); - Throwable resolved = resolveException(throwable); if (resolved instanceof Exception) { Exception e = (Exception) resolved; @@ -226,7 +217,7 @@ public final class TaskExecutor { task.setState(Task.TaskState.FAILED); } - throw (CompletionException) throwable; // rethrow error + throw new CompletionException(resolved); // rethrow error }); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskListener.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskListener.java index b1386aa05..bffbbda6b 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskListener.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskListener.java @@ -25,29 +25,57 @@ import java.util.EventListener; */ public abstract class TaskListener implements EventListener { + /** + * Executed when a Task execution chain starts. + */ public void onStart() { } + /** + * Executed before the task's pre-execution and dependents execution. + * + * TaskState of this task is READY. + * + * @param task the task that gets ready. + */ public void onReady(Task task) { } + /** + * Executed when the task's execution starts. + * + * TaskState of this task is RUNNING. + * + * @param task the task which is being run. + */ public void onRunning(Task task) { } + /** + * Executed after the task's dependencies and post-execution finished. + * + * TaskState of the task is EXECUTED. + * + * @param task the task which finishes its work. + */ public void onFinished(Task task) { } + /** + * Executed when an exception occurred during the task's execution. + * + * @param task the task which finishes its work. + */ public void onFailed(Task task, Throwable throwable) { onFinished(task); } + /** + * Executed when the task execution chain stopped. + * + * @param success true if no error occurred during task execution. + * @param executor the task executor with responsibility to the task execution. + */ public void onStop(boolean success, TaskExecutor executor) { } - - public static class DefaultTaskListener extends TaskListener { - private DefaultTaskListener() { - } - - public static final DefaultTaskListener INSTANCE = new DefaultTaskListener(); - } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/AutoTypingMap.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/AutoTypingMap.java deleted file mode 100644 index 1bd342160..000000000 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/AutoTypingMap.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Hello Minecraft! Launcher - * Copyright (C) 2019 huangyuhui and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jackhuang.hmcl.util; - -import java.util.Collection; -import java.util.Map; -import java.util.Optional; -import java.util.Set; - -/** - * A map that support auto casting. - * - * @author huangyuhui - */ -public final class AutoTypingMap { - - private final Map impl; - - public AutoTypingMap(Map impl) { - this.impl = impl; - } - - /** - * Get the value associated with given {@code key} in the mapping. - * - * Be careful of the return type {@code }, as you must ensure that {@code } is correct - * - * @param key the key that the value associated with - * @param the type of value which you must ensure type correction - * @return the value associated with given {@code key} - * @throws ClassCastException if the return type {@code } is incorrect. - */ - @SuppressWarnings("unchecked") - public synchronized V get(K key) throws ClassCastException { - return (V) impl.get(key); - } - - public synchronized Optional getOptional(K key) { - return Optional.ofNullable(get(key)); - } - - public synchronized void set(K key, Object value) { - if (value != null) - impl.put(key, value); - } - - public Collection values() { - return impl.values(); - } - - public Set keys() { - return impl.keySet(); - } - - public boolean containsKey(K key) { - return impl.containsKey(key); - } - - public Object remove(K key) { - return impl.remove(key); - } -} diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java index f4e25c3fc..05f9579f4 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java @@ -19,7 +19,6 @@ package org.jackhuang.hmcl.util.io; import java.io.*; import java.net.*; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Map.Entry;