From 6d43730a762ed4a54321d14c8a4b5c3af2b80e23 Mon Sep 17 00:00:00 2001 From: J. Fronny Date: Thu, 21 Aug 2025 20:11:13 +0200 Subject: Get rid of Guava (#555) * Get rid of Guava * Fix NPE * Apply suggestions from review * Checkstyle * Add braces to precondition checks * Forbid space--- .../src/main/java/cuchaz/enigma/gui/EditableType.java | 2 +- enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java | 3 ++- .../src/main/java/cuchaz/enigma/gui/GuiController.java | 6 +++--- enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java | 3 +-- .../cuchaz/enigma/gui/config/OldConfigImporter.java | 3 ++- .../src/main/java/cuchaz/enigma/gui/config/Themes.java | 13 ++++++++----- .../java/cuchaz/enigma/gui/config/legacy/Config.java | 18 +++++++++--------- .../java/cuchaz/enigma/gui/dialog/JavadocDialog.java | 5 ++--- .../enigma/gui/elements/AbstractInheritanceTree.java | 3 ++- .../cuchaz/enigma/gui/elements/EditorTabbedPane.java | 9 +++++---- .../enigma/gui/elements/ImplementationsTree.java | 3 ++- .../cuchaz/enigma/gui/elements/InheritanceTree.java | 3 ++- .../java/cuchaz/enigma/gui/elements/ValidatableUi.java | 2 +- .../cuchaz/enigma/gui/panels/ClosableTabTitlePane.java | 3 ++- .../java/cuchaz/enigma/gui/panels/EditorPanel.java | 2 +- .../src/main/java/cuchaz/enigma/gui/util/GuiUtil.java | 4 ++-- .../src/main/java/cuchaz/enigma/gui/util/History.java | 7 +++---- 17 files changed, 48 insertions(+), 41 deletions(-) (limited to 'enigma-swing/src/main/java') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/EditableType.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/EditableType.java index 6028609..a70c9b5 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/EditableType.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/EditableType.java @@ -1,6 +1,6 @@ package cuchaz.enigma.gui; -import javax.annotation.Nullable; +import org.jetbrains.annotations.Nullable; import cuchaz.enigma.translation.representation.entry.ClassEntry; import cuchaz.enigma.translation.representation.entry.Entry; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java index 21120b8..c85c404 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java @@ -23,7 +23,6 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; import java.util.function.Function; -import javax.annotation.Nullable; import javax.swing.AbstractAction; import javax.swing.DefaultListModel; import javax.swing.JButton; @@ -42,6 +41,8 @@ import javax.swing.SwingUtilities; import javax.swing.WindowConstants; import javax.swing.tree.DefaultMutableTreeNode; +import org.jetbrains.annotations.Nullable; + import cuchaz.enigma.Enigma; import cuchaz.enigma.EnigmaProfile; import cuchaz.enigma.analysis.EntryReference; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index ece11b0..e8e4dbd 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -17,6 +17,7 @@ import java.io.FileWriter; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Path; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -29,7 +30,6 @@ import java.util.stream.Stream; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; -import com.google.common.collect.Lists; import org.jetbrains.annotations.ApiStatus; import cuchaz.enigma.Enigma; @@ -414,8 +414,8 @@ public class GuiController implements ClientPacketHandler { return; } - List obfClasses = Lists.newArrayList(); - List deobfClasses = Lists.newArrayList(); + List obfClasses = new ArrayList<>(); + List deobfClasses = new ArrayList<>(); this.addSeparatedClasses(obfClasses, deobfClasses); this.gui.setObfClasses(obfClasses); this.gui.setDeobfClasses(deobfClasses); diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java index 43b16cd..dc58464 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java @@ -20,7 +20,6 @@ import java.util.EnumSet; import java.util.List; import java.util.Set; -import com.google.common.io.MoreFiles; import joptsimple.OptionException; import joptsimple.OptionParser; import joptsimple.OptionSet; @@ -144,7 +143,7 @@ public class Main { if (Files.isDirectory(mappingsPath)) { controller.openMappings(MappingFormat.ENIGMA_DIRECTORY, mappingsPath); - } else if ("zip".equalsIgnoreCase(MoreFiles.getFileExtension(mappingsPath))) { + } else if (mappingsPath.getFileName().toString().toLowerCase().endsWith(".zip")) { controller.openMappings(MappingFormat.ENIGMA_ZIP, mappingsPath); } else { controller.openMappings(MappingFormat.ENIGMA_FILE, mappingsPath); diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/OldConfigImporter.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/OldConfigImporter.java index 2e84991..181b286 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/OldConfigImporter.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/OldConfigImporter.java @@ -1,6 +1,7 @@ package cuchaz.enigma.gui.config; import java.awt.Font; +import java.nio.file.Files; import cuchaz.enigma.gui.config.legacy.Config; @@ -10,7 +11,7 @@ public final class OldConfigImporter { @SuppressWarnings("deprecation") public static void doImport() { - if (Config.CONFIG_FILE.exists()) { + if (Files.exists(Config.CONFIG_FILE)) { Config config = new Config(); if (config.editorFont != null) { diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java index e2db968..d2a6608 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java @@ -2,11 +2,11 @@ package cuchaz.enigma.gui.config; import java.awt.Font; import java.util.HashSet; +import java.util.Map; import java.util.Set; import javax.swing.UIManager; -import com.google.common.collect.ImmutableMap; import de.sciss.syntaxpane.DefaultSyntaxKit; import cuchaz.enigma.gui.EnigmaSyntaxKit; @@ -30,7 +30,7 @@ public class Themes { EnigmaSyntaxKit.invalidate(); DefaultSyntaxKit.initKit(); DefaultSyntaxKit.registerContentType("text/enigma-sources", EnigmaSyntaxKit.class.getName()); - ImmutableMap boxHighlightPainters = getBoxHighlightPainters(); + Map boxHighlightPainters = getBoxHighlightPainters(); listeners.forEach(l -> l.onThemeChanged(laf, boxHighlightPainters)); ScaleUtil.applyScaling(); UiConfig.save(); @@ -85,9 +85,12 @@ public class Themes { } } - public static ImmutableMap getBoxHighlightPainters() { - return ImmutableMap.of(RenamableTokenType.OBFUSCATED, BoxHighlightPainter.create(UiConfig.getObfuscatedColor(), UiConfig.getObfuscatedOutlineColor()), RenamableTokenType.PROPOSED, BoxHighlightPainter.create(UiConfig.getProposedColor(), UiConfig.getProposedOutlineColor()), - RenamableTokenType.DEOBFUSCATED, BoxHighlightPainter.create(UiConfig.getDeobfuscatedColor(), UiConfig.getDeobfuscatedOutlineColor())); + public static Map getBoxHighlightPainters() { + return Map.of( + RenamableTokenType.OBFUSCATED, BoxHighlightPainter.create(UiConfig.getObfuscatedColor(), UiConfig.getObfuscatedOutlineColor()), + RenamableTokenType.PROPOSED, BoxHighlightPainter.create(UiConfig.getProposedColor(), UiConfig.getProposedOutlineColor()), + RenamableTokenType.DEOBFUSCATED, BoxHighlightPainter.create(UiConfig.getDeobfuscatedColor(), UiConfig.getDeobfuscatedOutlineColor()) + ); } public static void addListener(ThemeChangeListener listener) { diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/legacy/Config.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/legacy/Config.java index 2f7cf19..9955a6b 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/legacy/Config.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/legacy/Config.java @@ -1,11 +1,11 @@ package cuchaz.enigma.gui.config.legacy; import java.awt.Color; -import java.io.File; +import java.io.BufferedReader; import java.lang.reflect.Type; -import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; -import com.google.common.io.Files; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.InstanceCreator; @@ -40,9 +40,9 @@ public class Config { } } - private static final File DIR_HOME = new File(System.getProperty("user.home")); - private static final File ENIGMA_DIR = new File(DIR_HOME, ".enigma"); - public static final File CONFIG_FILE = new File(ENIGMA_DIR, "config.json"); + private static final Path DIR_HOME = Path.of(System.getProperty("user.home")); + private static final Path ENIGMA_DIR = DIR_HOME.resolve(".enigma"); + public static final Path CONFIG_FILE = ENIGMA_DIR.resolve("config.json"); private final transient Gson gson; // transient to exclude it from being exposed @@ -86,9 +86,9 @@ public class Config { } public void loadConfig() { - if (CONFIG_FILE.exists()) { - try { - gson.fromJson(Files.asCharSource(CONFIG_FILE, Charset.defaultCharset()).read(), Config.class); + if (Files.exists(CONFIG_FILE)) { + try (BufferedReader reader = Files.newBufferedReader(CONFIG_FILE)) { + gson.fromJson(reader, Config.class); } catch (Exception e) { e.printStackTrace(); } diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java index 0ecec6c..05b7dfb 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java @@ -17,6 +17,7 @@ import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.util.Objects; import javax.swing.JButton; import javax.swing.JComboBox; @@ -29,8 +30,6 @@ import javax.swing.JScrollPane; import javax.swing.WindowConstants; import javax.swing.text.html.HTML; -import com.google.common.base.Strings; - import cuchaz.enigma.analysis.EntryReference; import cuchaz.enigma.gui.GuiController; import cuchaz.enigma.gui.config.UiConfig; @@ -198,7 +197,7 @@ public class JavadocDialog { public static void show(JFrame parent, GuiController controller, EntryReference, Entry> entry) { // Get the existing text through the mapping as it works for all entries, including constructors. EntryMapping mapping = controller.project.getMapper().getDeobfMapping(entry.entry); - String text = Strings.nullToEmpty(mapping.javadoc()); + String text = Objects.requireNonNullElse(mapping.javadoc(), ""); // Note: entry.entry is used instead of getNameableEntry() to include constructors, // which can be documented. diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/AbstractInheritanceTree.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/AbstractInheritanceTree.java index 8acfcfe..6194aa5 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/AbstractInheritanceTree.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/AbstractInheritanceTree.java @@ -3,7 +3,6 @@ package cuchaz.enigma.gui.elements; import java.awt.BorderLayout; import java.awt.event.MouseEvent; -import javax.annotation.Nullable; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; @@ -13,6 +12,8 @@ import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; +import org.jetbrains.annotations.Nullable; + import cuchaz.enigma.analysis.ClassTreeNode; import cuchaz.enigma.analysis.MethodInheritanceTreeNode; import cuchaz.enigma.analysis.MethodTreeNode; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorTabbedPane.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorTabbedPane.java index 7a6290e..65b57af 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorTabbedPane.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorTabbedPane.java @@ -4,13 +4,14 @@ import java.awt.Component; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; -import javax.annotation.Nullable; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; -import com.google.common.collect.HashBiMap; +import org.jetbrains.annotations.Nullable; import cuchaz.enigma.analysis.EntryReference; import cuchaz.enigma.classhandle.ClassHandle; @@ -24,7 +25,7 @@ import cuchaz.enigma.translation.representation.entry.Entry; public class EditorTabbedPane { private final JTabbedPane openFiles = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); - private final HashBiMap editors = HashBiMap.create(); + private final Map editors = new HashMap<>(); private final EditorTabPopupMenu editorTabPopupMenu; private final Gui gui; @@ -95,7 +96,7 @@ public class EditorTabbedPane { public void closeEditor(EditorPanel ed) { this.openFiles.remove(ed.getUi()); - this.editors.inverse().remove(ed); + this.editors.values().remove(ed); this.gui.showStructure(this.getActiveEditor()); ed.destroy(); } diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ImplementationsTree.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ImplementationsTree.java index 962cf27..2500ec8 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ImplementationsTree.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ImplementationsTree.java @@ -1,8 +1,9 @@ package cuchaz.enigma.gui.elements; -import javax.annotation.Nullable; import javax.swing.tree.DefaultMutableTreeNode; +import org.jetbrains.annotations.Nullable; + import cuchaz.enigma.gui.Gui; import cuchaz.enigma.gui.renderer.ImplementationsTreeCellRenderer; import cuchaz.enigma.translation.representation.entry.ClassEntry; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/InheritanceTree.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/InheritanceTree.java index aeb173b..513fa1b 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/InheritanceTree.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/InheritanceTree.java @@ -1,8 +1,9 @@ package cuchaz.enigma.gui.elements; -import javax.annotation.Nullable; import javax.swing.tree.DefaultMutableTreeNode; +import org.jetbrains.annotations.Nullable; + import cuchaz.enigma.gui.Gui; import cuchaz.enigma.gui.renderer.InheritanceTreeCellRenderer; import cuchaz.enigma.translation.representation.entry.ClassEntry; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ValidatableUi.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ValidatableUi.java index b8b8431..6ef5fbe 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ValidatableUi.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ValidatableUi.java @@ -7,7 +7,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import javax.annotation.Nullable; +import org.jetbrains.annotations.Nullable; import cuchaz.enigma.gui.util.ScaleUtil; import cuchaz.enigma.utils.validation.ParameterizedMessage; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/ClosableTabTitlePane.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/ClosableTabTitlePane.java index dca714d..24ec233 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/ClosableTabTitlePane.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/ClosableTabTitlePane.java @@ -8,7 +8,6 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.accessibility.AccessibleContext; -import javax.annotation.Nullable; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; @@ -19,6 +18,8 @@ import javax.swing.UIManager; import javax.swing.border.EmptyBorder; import javax.swing.event.ChangeListener; +import org.jetbrains.annotations.Nullable; + public class ClosableTabTitlePane { private final JPanel ui; private final JButton closeButton; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java index e0a299f..fb30f87 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java @@ -18,7 +18,6 @@ import java.util.Collection; import java.util.List; import java.util.Map; -import javax.annotation.Nullable; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JEditorPane; @@ -36,6 +35,7 @@ import javax.swing.text.Highlighter.HighlightPainter; import de.sciss.syntaxpane.DefaultSyntaxKit; import de.sciss.syntaxpane.SyntaxDocument; +import org.jetbrains.annotations.Nullable; import cuchaz.enigma.EnigmaProject; import cuchaz.enigma.analysis.EntryReference; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java index da1a247..7cc0bfe 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java @@ -18,6 +18,7 @@ import java.awt.font.TextAttribute; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -36,7 +37,6 @@ import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import com.formdev.flatlaf.extras.FlatSVGIcon; -import com.google.common.collect.Lists; import cuchaz.enigma.analysis.index.EntryIndex; import cuchaz.enigma.gui.Gui; @@ -172,7 +172,7 @@ public class GuiUtil { } public static TreePath getPathToRoot(TreeNode node) { - List nodes = Lists.newArrayList(); + List nodes = new ArrayList<>(); TreeNode n = node; do { diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java index f1a8a7a..6ce8c83 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java @@ -1,12 +1,11 @@ package cuchaz.enigma.gui.util; +import java.util.ArrayDeque; import java.util.Deque; -import com.google.common.collect.Queues; - public class History { - private final Deque previous = Queues.newArrayDeque(); - private final Deque next = Queues.newArrayDeque(); + private final Deque previous = new ArrayDeque<>(); + private final Deque next = new ArrayDeque<>(); private T current; public History(T initial) { -- cgit v1.2.3