From 1eb53b247c753ffeede0b0af5adc71171b5cd890 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 24 Jan 2024 03:07:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=20org.jackhuang.hmcl.util=20?= =?UTF-8?q?(#2673)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 合并 Holder 与 ReferenceHolder * 清理代码 * 清理代码 * update * update * update --- .../hmcl/util/AggregatedObservableList.java | 4 +-- .../jackhuang/hmcl/util/CrashReporter.java | 2 +- .../java/org/jackhuang/hmcl/util/Lazy.java | 3 +- .../hmcl/util/ResourceNotFoundError.java | 2 +- .../hmcl/util/TaskCancellationAction.java | 2 +- .../java/org/jackhuang/hmcl/util/Holder.java | 17 ++++++++- .../hmcl/util/InvocationDispatcher.java | 12 +++---- .../org/jackhuang/hmcl/util/StringUtils.java | 2 +- .../jackhuang/hmcl/util/ToStringBuilder.java | 2 +- .../util/gson/EnumOrdinalDeserializer.java | 4 +-- .../org/jackhuang/hmcl/util/gson/JsonMap.java | 2 +- .../util/gson/JsonTypeAdapterFactory.java | 2 +- .../util/io/ChecksumMismatchException.java | 2 +- .../hmcl/util/io/HttpMultipartRequest.java | 6 ++-- .../hmcl/util/io/ResponseCodeException.java | 2 +- .../org/jackhuang/hmcl/util/io/Unzipper.java | 2 +- .../util/javafx/AutomatedToggleGroup.java | 2 +- .../hmcl/util/javafx/BindingMapping.java | 8 ++--- .../hmcl/util/javafx/ExtendedProperties.java | 3 +- .../util/javafx/MappedObservableList.java | 13 +++---- .../hmcl/util/javafx/MappedProperty.java | 2 +- .../hmcl/util/javafx/ObservableCache.java | 2 +- .../hmcl/util/javafx/ObservableHelper.java | 6 ++-- .../util/javafx/ObservableOptionalCache.java | 2 +- .../hmcl/util/javafx/PropertyUtils.java | 6 ++-- .../javafx/ReadWriteComposedProperty.java | 5 +-- .../hmcl/util/javafx/ReferenceHolder.java | 35 ------------------- .../hmcl/util/javafx/SafeStringConverter.java | 10 +++--- .../hmcl/util/platform/ManagedProcess.java | 2 +- .../hmcl/util/skin/NormalizedSkin.java | 2 +- 30 files changed, 71 insertions(+), 93 deletions(-) delete mode 100644 HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ReferenceHolder.java diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/AggregatedObservableList.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/AggregatedObservableList.java index 450540e14..6266b5ad8 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/AggregatedObservableList.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/AggregatedObservableList.java @@ -26,7 +26,7 @@ import java.util.ArrayList; import java.util.List; import java.util.function.Function; -public class AggregatedObservableList { +public final class AggregatedObservableList { protected final List> lists = new ArrayList<>(); final private List sizes = new ArrayList<>(); @@ -126,7 +126,7 @@ public class AggregatedObservableList { return startIndex + sizes.get(index) - 1; } - private class InternalListModificationListener implements ListChangeListener { + private final class InternalListModificationListener implements ListChangeListener { @NotNull private final ObservableList list; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/CrashReporter.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/CrashReporter.java index 8314a2cee..5e5e28fe5 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/CrashReporter.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/CrashReporter.java @@ -38,7 +38,7 @@ import static org.jackhuang.hmcl.util.i18n.I18n.i18n; /** * @author huangyuhui */ -public class CrashReporter implements Thread.UncaughtExceptionHandler { +public final class CrashReporter implements Thread.UncaughtExceptionHandler { // Lazy initialization resources private static final class Hole { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/Lazy.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/Lazy.java index 7beb02bfa..a30fe8466 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/Lazy.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/Lazy.java @@ -25,7 +25,7 @@ import java.util.function.Supplier; * * @param value type */ -public class Lazy { +public final class Lazy { private Supplier supplier; private T value = null; @@ -40,5 +40,4 @@ public class Lazy { } return value; } - } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/ResourceNotFoundError.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/ResourceNotFoundError.java index d404c0fcd..321144175 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/ResourceNotFoundError.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/ResourceNotFoundError.java @@ -23,7 +23,7 @@ import java.io.InputStream; * Suppress the throwable when we make sure the resource cannot miss. * @see CrashReporter */ -public class ResourceNotFoundError extends Error { +public final class ResourceNotFoundError extends Error { public ResourceNotFoundError(String message) { super(message); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/TaskCancellationAction.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/TaskCancellationAction.java index cd320db7b..736028766 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/TaskCancellationAction.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/TaskCancellationAction.java @@ -21,7 +21,7 @@ import org.jackhuang.hmcl.ui.construct.TaskExecutorDialogPane; import java.util.function.Consumer; -public class TaskCancellationAction { +public final class TaskCancellationAction { public static TaskCancellationAction NO_CANCEL = new TaskCancellationAction((Consumer) null); public static TaskCancellationAction NORMAL = new TaskCancellationAction(() -> { }); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Holder.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Holder.java index c788336ef..ba944fd49 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Holder.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Holder.java @@ -1,10 +1,25 @@ package org.jackhuang.hmcl.util; +import javafx.beans.InvalidationListener; +import javafx.beans.Observable; + import java.util.Objects; -public final class Holder { +public final class Holder implements InvalidationListener { public T value; + public Holder() { + } + + public Holder(T value) { + this.value = value; + } + + @Override + public void invalidated(Observable observable) { + // no-op + } + @Override public int hashCode() { return Objects.hashCode(value); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/InvocationDispatcher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/InvocationDispatcher.java index 68b7b546d..fd79ef11d 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/InvocationDispatcher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/InvocationDispatcher.java @@ -17,7 +17,6 @@ */ package org.jackhuang.hmcl.util; -import java.util.Optional; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; @@ -30,7 +29,7 @@ import java.util.function.Supplier; * * @author yushijinhun */ -public class InvocationDispatcher implements Consumer { +public final class InvocationDispatcher implements Consumer { public static InvocationDispatcher runOn(Executor executor, Consumer action) { return new InvocationDispatcher<>(arg -> executor.execute(() -> { @@ -40,9 +39,8 @@ public class InvocationDispatcher implements Consumer { })); } - private Consumer> handler; - - private AtomicReference> pendingArg = new AtomicReference<>(); + private final Consumer> handler; + private final AtomicReference> pendingArg = new AtomicReference<>(); public InvocationDispatcher(Consumer> handler) { this.handler = handler; @@ -50,8 +48,8 @@ public class InvocationDispatcher implements Consumer { @Override public void accept(ARG arg) { - if (pendingArg.getAndSet(Optional.ofNullable(arg)) == null) { - handler.accept(() -> pendingArg.getAndSet(null).orElse(null)); + if (pendingArg.getAndSet(new Holder<>(arg)) == null) { + handler.accept(() -> pendingArg.getAndSet(null).value); } } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/StringUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/StringUtils.java index f95fea5b2..298a41849 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/StringUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/StringUtils.java @@ -416,7 +416,7 @@ public final class StringUtils { /** * Class for computing the longest common subsequence between strings. */ - public static class LongestCommonSubsequence { + public static final class LongestCommonSubsequence { // We reuse dynamic programming storage array here to reduce allocations. private final int[][] f; private final int maxLengthA; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ToStringBuilder.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ToStringBuilder.java index 4bc36ae81..2b436bb42 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ToStringBuilder.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ToStringBuilder.java @@ -17,7 +17,7 @@ */ package org.jackhuang.hmcl.util; -public class ToStringBuilder { +public final class ToStringBuilder { private final StringBuilder stringBuilder; private boolean first = true; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/EnumOrdinalDeserializer.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/EnumOrdinalDeserializer.java index 9f427d5bf..d6bf65655 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/EnumOrdinalDeserializer.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/EnumOrdinalDeserializer.java @@ -32,9 +32,9 @@ import java.util.Map; * * @author yushijinhun */ -public class EnumOrdinalDeserializer> implements JsonDeserializer { +public final class EnumOrdinalDeserializer> implements JsonDeserializer { - private Map mapping = new HashMap<>(); + private final Map mapping = new HashMap<>(); public EnumOrdinalDeserializer(Class enumClass) { for (T constant : enumClass.getEnumConstants()) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/JsonMap.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/JsonMap.java index 971f84d2b..695061913 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/JsonMap.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/JsonMap.java @@ -26,7 +26,7 @@ import java.util.Map; * @param * @param */ -public class JsonMap extends HashMap { +public final class JsonMap extends HashMap { public JsonMap(int initialCapacity, float loadFactor) { super(initialCapacity, loadFactor); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/JsonTypeAdapterFactory.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/JsonTypeAdapterFactory.java index b3d365043..cc4054129 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/JsonTypeAdapterFactory.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/gson/JsonTypeAdapterFactory.java @@ -10,7 +10,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; -public class JsonTypeAdapterFactory implements TypeAdapterFactory { +public final class JsonTypeAdapterFactory implements TypeAdapterFactory { public static final JsonTypeAdapterFactory INSTANCE = new JsonTypeAdapterFactory(); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/ChecksumMismatchException.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/ChecksumMismatchException.java index 7239facda..7084d4563 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/ChecksumMismatchException.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/ChecksumMismatchException.java @@ -23,7 +23,7 @@ import org.jackhuang.hmcl.util.DigestUtils; import java.io.IOException; import java.nio.file.Path; -public class ChecksumMismatchException extends ArtifactMalformedException { +public final class ChecksumMismatchException extends ArtifactMalformedException { private final String algorithm; private final String expectedChecksum; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/HttpMultipartRequest.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/HttpMultipartRequest.java index 5d0658604..b0faad09e 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/HttpMultipartRequest.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/HttpMultipartRequest.java @@ -26,8 +26,8 @@ import java.net.HttpURLConnection; import static java.nio.charset.StandardCharsets.UTF_8; -public class HttpMultipartRequest implements Closeable { - private static final String endl = "\r\n"; +public final class HttpMultipartRequest implements Closeable { + private static final byte[] ENDL = {'\r', '\n'}; private final String boundary = "*****" + System.currentTimeMillis() + "*****"; private final HttpURLConnection urlConnection; @@ -44,7 +44,7 @@ public class HttpMultipartRequest implements Closeable { private void addLine(String content) throws IOException { stream.write(content.getBytes(UTF_8)); - stream.write(endl.getBytes(UTF_8)); + stream.write(ENDL); } public HttpMultipartRequest file(String name, String filename, String contentType, InputStream inputStream) throws IOException { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/ResponseCodeException.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/ResponseCodeException.java index bdd28f090..19d4d9a3f 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/ResponseCodeException.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/ResponseCodeException.java @@ -20,7 +20,7 @@ package org.jackhuang.hmcl.util.io; import java.io.IOException; import java.net.URL; -public class ResponseCodeException extends IOException { +public final class ResponseCodeException extends IOException { private final URL url; private final int responseCode; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/Unzipper.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/Unzipper.java index a7b1e5ba3..f4f8592d4 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/Unzipper.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/Unzipper.java @@ -24,7 +24,7 @@ import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; -public class Unzipper { +public final class Unzipper { private final Path zipFile, dest; private boolean replaceExistentFile = false; private boolean terminateIfSubDirectoryNotExists = false; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/AutomatedToggleGroup.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/AutomatedToggleGroup.java index e874e7e84..14c3fb26b 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/AutomatedToggleGroup.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/AutomatedToggleGroup.java @@ -25,7 +25,7 @@ import javafx.scene.control.ToggleGroup; /** * @author yushijinhun */ -public class AutomatedToggleGroup extends ToggleGroup { +public final class AutomatedToggleGroup extends ToggleGroup { private final ObservableList toggles; private final ListChangeListener listListener; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/BindingMapping.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/BindingMapping.java index 897c86270..2d9b13bc8 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/BindingMapping.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/BindingMapping.java @@ -70,7 +70,7 @@ public abstract class BindingMapping extends ObjectBinding { return new AsyncMappedBinding<>(this, mapper, initial); } - private static class SimpleBinding extends BindingMapping { + private static final class SimpleBinding extends BindingMapping { public SimpleBinding(ObservableValue predecessor) { super(predecessor); @@ -92,7 +92,7 @@ public abstract class BindingMapping extends ObjectBinding { } } - private static class MappedBinding extends BindingMapping { + private static final class MappedBinding extends BindingMapping { private final Function mapper; @@ -107,7 +107,7 @@ public abstract class BindingMapping extends ObjectBinding { } } - private static class FlatMappedBinding, U> extends BindingMapping { + private static final class FlatMappedBinding, U> extends BindingMapping { private final Supplier nullAlternative; private T lastObservable = null; @@ -142,7 +142,7 @@ public abstract class BindingMapping extends ObjectBinding { } } - private static class AsyncMappedBinding extends BindingMapping { + private static final class AsyncMappedBinding extends BindingMapping { private boolean initialized = false; private T prev; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ExtendedProperties.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ExtendedProperties.java index 57e4b85c7..95da37cea 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ExtendedProperties.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ExtendedProperties.java @@ -24,6 +24,7 @@ import javafx.beans.property.Property; import javafx.collections.ObservableList; import javafx.scene.Node; import javafx.scene.control.*; +import org.jackhuang.hmcl.util.Holder; import java.util.Objects; import java.util.Optional; @@ -116,7 +117,7 @@ public final class ExtendedProperties { } }; toggleGroup.getToggles().addListener(new WeakInvalidationListener(onTogglesChanged)); - property.addListener(new ReferenceHolder(onTogglesChanged)); + property.addListener(new Holder<>(onTogglesChanged)); return property; } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/MappedObservableList.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/MappedObservableList.java index 1916e2acf..cdc2de1c4 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/MappedObservableList.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/MappedObservableList.java @@ -21,6 +21,7 @@ import javafx.collections.FXCollections; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.collections.WeakListChangeListener; +import org.jackhuang.hmcl.util.Holder; import java.util.*; import java.util.function.Function; @@ -35,14 +36,14 @@ public final class MappedObservableList { private MappedObservableList() { } - private static class MappedObservableListUpdater implements ListChangeListener { - private ObservableList origin; - private ObservableList target; - private Function mapper; + private static final class MappedObservableListUpdater implements ListChangeListener { + private final ObservableList origin; + private final ObservableList target; + private final Function mapper; // If we directly synchronize changes to target, each operation on target will cause a event to be fired. // So we first write changes to buffer. After all the changes are processed, we use target.setAll to synchronize the changes. - private List buffer; + private final List buffer; MappedObservableListUpdater(ObservableList origin, ObservableList target, Function mapper) { this.origin = origin; @@ -125,7 +126,7 @@ public final class MappedObservableList { ListChangeListener listener = new MappedObservableListUpdater<>(origin, target, mapper); // let target hold a reference to listener to prevent listener being garbage-collected before target is garbage-collected - target.addListener(new ReferenceHolder(listener)); + target.addListener(new Holder<>(listener)); // let origin hold a weak reference to listener, so that target can be garbage-collected when it's no longer used origin.addListener(new WeakListChangeListener<>(listener)); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/MappedProperty.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/MappedProperty.java index 52ef773f2..2111ac33c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/MappedProperty.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/MappedProperty.java @@ -28,7 +28,7 @@ import java.util.function.Function; /** * @author yushijinhun */ -public class MappedProperty extends SimpleObjectProperty { +public final class MappedProperty extends SimpleObjectProperty { private final Property predecessor; private final Function reservedMapper; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableCache.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableCache.java index 9e910a18c..b4193f7ff 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableCache.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableCache.java @@ -35,7 +35,7 @@ import javafx.beans.binding.ObjectBinding; /** * @author yushijinhun */ -public class ObservableCache { +public final class ObservableCache { private final ExceptionalFunction source; private final BiConsumer exceptionHandler; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableHelper.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableHelper.java index 5af6659aa..7fe40c563 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableHelper.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableHelper.java @@ -28,10 +28,10 @@ import java.util.concurrent.CopyOnWriteArrayList; * * @author yushijinhun */ -public class ObservableHelper implements Observable, InvalidationListener { +public final class ObservableHelper implements Observable, InvalidationListener { - private List listeners = new CopyOnWriteArrayList<>(); - private Observable source; + private final List listeners = new CopyOnWriteArrayList<>(); + private final Observable source; public ObservableHelper() { this.source = this; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableOptionalCache.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableOptionalCache.java index 9a3c6fd62..c03bab4d0 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableOptionalCache.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ObservableOptionalCache.java @@ -28,7 +28,7 @@ import javafx.beans.binding.ObjectBinding; /** * @author yushijinhun */ -public class ObservableOptionalCache { +public final class ObservableOptionalCache { private final ObservableCache, E> backed; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/PropertyUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/PropertyUtils.java index a4b9983c5..72d8b3002 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/PropertyUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/PropertyUtils.java @@ -36,7 +36,7 @@ public final class PropertyUtils { private PropertyUtils() { } - public static class PropertyHandle { + public static final class PropertyHandle { public final WritableValue accessor; public final Observable observable; @@ -160,8 +160,6 @@ public final class PropertyUtils { public static void attachListener(Object instance, InvalidationListener listener) { getPropertyHandleFactories(instance.getClass()) - .forEach((name, factory) -> { - factory.apply(instance).observable.addListener(listener); - }); + .forEach((name, factory) -> factory.apply(instance).observable.addListener(listener)); } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ReadWriteComposedProperty.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ReadWriteComposedProperty.java index 60e2061f1..86951e8a7 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ReadWriteComposedProperty.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ReadWriteComposedProperty.java @@ -27,12 +27,13 @@ import javafx.beans.value.WeakChangeListener; /** * @author yushijinhun */ -public class ReadWriteComposedProperty extends SimpleObjectProperty { +public final class ReadWriteComposedProperty extends SimpleObjectProperty { - @SuppressWarnings("unused") + @SuppressWarnings({"unused", "FieldCanBeLocal"}) private final ObservableValue readSource; private final Consumer writeTarget; + @SuppressWarnings("FieldCanBeLocal") private ChangeListener listener; public ReadWriteComposedProperty(ObservableValue readSource, Consumer writeTarget) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ReferenceHolder.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ReferenceHolder.java deleted file mode 100644 index 725d6233d..000000000 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/ReferenceHolder.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Hello Minecraft! Launcher - * Copyright (C) 2020 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.javafx; - -import javafx.beans.InvalidationListener; -import javafx.beans.Observable; - -class ReferenceHolder implements InvalidationListener { - @SuppressWarnings("unused") - private Object ref; - - public ReferenceHolder(Object ref) { - this.ref = ref; - } - - @Override - public void invalidated(Observable observable) { - // no-op - } -} diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/SafeStringConverter.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/SafeStringConverter.java index 96df65d85..6755cd54f 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/SafeStringConverter.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/javafx/SafeStringConverter.java @@ -30,7 +30,7 @@ import javafx.util.StringConverter; /** * @author yushijinhun */ -public class SafeStringConverter extends StringConverter { +public final class SafeStringConverter extends StringConverter { public static SafeStringConverter fromInteger() { return new SafeStringConverter(Integer::parseInt, NumberFormatException.class) @@ -48,10 +48,10 @@ public class SafeStringConverter extends StringConverter { .fallbackTo(0.0); } - private ExceptionalFunction converter; - private Class malformedExceptionClass; + private final ExceptionalFunction converter; + private final Class malformedExceptionClass; private S fallbackValue = null; - private List> restrictions = new ArrayList<>(); + private final List> restrictions = new ArrayList<>(); public SafeStringConverter(ExceptionalFunction converter, Class malformedExceptionClass) { this.converter = converter; @@ -94,7 +94,7 @@ public class SafeStringConverter extends StringConverter { return Optional.of(converted); } - protected boolean filter(S value) { + private boolean filter(S value) { for (Predicate restriction : restrictions) { if (!restriction.test(value)) { return false; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java index 49186ec3c..85bba1eb7 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java @@ -35,7 +35,7 @@ import java.util.function.Predicate; * @see org.jackhuang.hmcl.launch.ExitWaiter * @see org.jackhuang.hmcl.launch.StreamPump */ -public class ManagedProcess { +public final class ManagedProcess { private final Process process; private final List commands; private final String classpath; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/skin/NormalizedSkin.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/skin/NormalizedSkin.java index 250d9e804..440ca41bd 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/skin/NormalizedSkin.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/skin/NormalizedSkin.java @@ -28,7 +28,7 @@ import javafx.scene.image.WritableImage; * * @author yushijinhun */ -public class NormalizedSkin { +public final class NormalizedSkin { private static void copyImage(Image src, WritableImage dst, int sx, int sy, int dx, int dy, int w, int h, boolean flipHorizontal) { PixelReader reader = src.getPixelReader();