From b5fad1e215321505240b567f9cdf69e56eacadf4 Mon Sep 17 00:00:00 2001 From: YanisBft Date: Sun, 23 May 2021 23:51:38 +0200 Subject: Cleanup with Java 16 (#394) * Cleanup using Java 16 * use Stream.toList()--- .../enigma/network/packet/ChangeDocsC2SPacket.java | 3 +- .../network/packet/SyncMappingsS2CPacket.java | 3 +- .../main/java/cuchaz/enigma/gui/ClassSelector.java | 23 ++++------ .../src/main/java/cuchaz/enigma/gui/Gui.java | 9 ++-- .../main/java/cuchaz/enigma/gui/GuiController.java | 3 +- .../java/cuchaz/enigma/gui/config/LookAndFeel.java | 19 +++------ .../java/cuchaz/enigma/gui/dialog/FontDialog.java | 5 +-- .../cuchaz/enigma/gui/dialog/ProgressDialog.java | 5 +-- .../cuchaz/enigma/gui/dialog/SearchDialog.java | 49 ++++++++++------------ .../java/cuchaz/enigma/gui/panels/EditorPanel.java | 15 ++----- .../cuchaz/enigma/gui/panels/StructurePanel.java | 8 ++-- .../enigma/gui/renderer/CallsTreeCellRenderer.java | 8 ++-- .../renderer/ImplementationsTreeCellRenderer.java | 8 ++-- .../gui/renderer/InheritanceTreeCellRenderer.java | 2 +- .../src/main/java/cuchaz/enigma/EnigmaProject.java | 8 ++-- .../enigma/analysis/ClassReferenceTreeNode.java | 3 +- .../cuchaz/enigma/analysis/EntryReference.java | 4 +- .../enigma/analysis/FieldReferenceTreeNode.java | 8 ++-- .../cuchaz/enigma/analysis/InterpreterPair.java | 7 ++-- .../enigma/analysis/MethodReferenceTreeNode.java | 3 +- .../cuchaz/enigma/analysis/StructureTreeNode.java | 10 ++--- .../cuchaz/enigma/analysis/index/EntryIndex.java | 28 ++++++------- .../analysis/index/IndexReferenceVisitor.java | 3 +- .../cuchaz/enigma/analysis/index/JarIndex.java | 2 +- .../classprovider/ObfuscationFixClassProvider.java | 3 +- .../java/cuchaz/enigma/source/SourceIndex.java | 3 +- .../java/cuchaz/enigma/translation/Translator.java | 2 +- .../enigma/translation/mapping/AccessModifier.java | 17 +++----- .../enigma/translation/mapping/EntryRemapper.java | 3 +- .../enigma/translation/mapping/EntryResolver.java | 5 +-- .../translation/mapping/IdentifierValidation.java | 14 +++---- .../translation/mapping/IndexEntryResolver.java | 3 +- .../translation/mapping/MappingValidator.java | 8 ++-- .../translation/mapping/MappingsChecker.java | 3 +- .../mapping/serde/enigma/EnigmaMappingsReader.java | 3 +- .../mapping/serde/enigma/EnigmaMappingsWriter.java | 11 ++--- .../mapping/serde/srg/SrgMappingsWriter.java | 7 ++-- .../mapping/serde/tinyv2/TinyV2Writer.java | 3 +- .../translation/mapping/tree/EntryTreeNode.java | 6 +-- enigma/src/main/java/cuchaz/enigma/utils/I18n.java | 9 +--- .../src/main/java/cuchaz/enigma/utils/Utils.java | 16 +------ .../utils/validation/ParameterizedMessage.java | 3 +- .../enigma/utils/validation/PrintValidatable.java | 19 +++------ 43 files changed, 141 insertions(+), 233 deletions(-) diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java index 23ffe993..f3e07c2d 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java @@ -9,7 +9,6 @@ import cuchaz.enigma.network.EnigmaServer; import cuchaz.enigma.network.Message; import cuchaz.enigma.network.ServerPacketHandler; import cuchaz.enigma.translation.representation.entry.Entry; -import cuchaz.enigma.utils.Utils; import cuchaz.enigma.utils.validation.PrintValidatable; import cuchaz.enigma.utils.validation.ValidationContext; @@ -54,7 +53,7 @@ public class ChangeDocsC2SPacket implements Packet { if (mapping == null) { mapping = new EntryMapping(handler.getServer().getMappings().deobfuscate(entry).getName()); } - handler.getServer().getMappings().mapFromObf(vc, entry, mapping.withDocs(Utils.isBlank(newDocs) ? null : newDocs)); + handler.getServer().getMappings().mapFromObf(vc, entry, mapping.withDocs(newDocs.isBlank() ? null : newDocs)); if (!vc.canProceed()) return; diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/packet/SyncMappingsS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/SyncMappingsS2CPacket.java index 76ecbc7d..92a78748 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/packet/SyncMappingsS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/SyncMappingsS2CPacket.java @@ -13,7 +13,6 @@ import java.io.DataOutput; import java.io.IOException; import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; public class SyncMappingsS2CPacket implements Packet { private EntryTree mappings; @@ -55,7 +54,7 @@ public class SyncMappingsS2CPacket implements Packet { @Override public void write(DataOutput output) throws IOException { - List> roots = mappings.getRootNodes().collect(Collectors.toList()); + List> roots = mappings.getRootNodes().toList(); output.writeInt(roots.size()); for (EntryTreeNode node : roots) { writeEntryTreeNode(output, node); diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/ClassSelector.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/ClassSelector.java index 91c9705b..7044106b 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/ClassSelector.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/ClassSelector.java @@ -63,8 +63,7 @@ public class ClassSelector extends JTree { if (selectionListener != null && event.getClickCount() == 2) { // get the selected node TreePath path = getSelectionPath(); - if (path != null && path.getLastPathComponent() instanceof ClassSelectorClassNode) { - ClassSelectorClassNode node = (ClassSelectorClassNode) path.getLastPathComponent(); + if (path != null && path.getLastPathComponent() instanceof ClassSelectorClassNode node) { selectionListener.onSelectClass(node.getObfEntry()); } } @@ -105,8 +104,7 @@ public class ClassSelector extends JTree { TreePath path = getSelectionPath(); Object realPath = path.getLastPathComponent(); - if (realPath != null && realPath instanceof DefaultMutableTreeNode && data != null) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) realPath; + if (realPath instanceof DefaultMutableTreeNode node && data != null) { TreeNode parentNode = node.getParent(); if (parentNode == null) return; @@ -251,8 +249,7 @@ public class ClassSelector extends JTree { public ClassEntry getSelectedClass() { if (!isSelectionEmpty()) { Object selectedNode = getSelectionPath().getLastPathComponent(); - if (selectedNode instanceof ClassSelectorClassNode) { - ClassSelectorClassNode classNode = (ClassSelectorClassNode) selectedNode; + if (selectedNode instanceof ClassSelectorClassNode classNode) { return classNode.getClassEntry(); } } @@ -262,11 +259,9 @@ public class ClassSelector extends JTree { public String getSelectedPackage() { if (!isSelectionEmpty()) { Object selectedNode = getSelectionPath().getLastPathComponent(); - if (selectedNode instanceof ClassSelectorPackageNode) { - ClassSelectorPackageNode packageNode = (ClassSelectorPackageNode) selectedNode; + if (selectedNode instanceof ClassSelectorPackageNode packageNode) { return packageNode.getPackageName(); - } else if (selectedNode instanceof ClassSelectorClassNode) { - ClassSelectorClassNode classNode = (ClassSelectorClassNode) selectedNode; + } else if (selectedNode instanceof ClassSelectorClassNode classNode) { return classNode.getClassEntry().getPackageName(); } } @@ -321,12 +316,8 @@ public class ClassSelector extends JTree { for (StateEntry entry : expansionState) { switch (entry.state) { - case SELECTED: - tree.addSelectionPath(entry.path); - break; - case EXPANDED: - tree.expandPath(entry.path); - break; + case SELECTED -> tree.addSelectionPath(entry.path); + case EXPANDED -> tree.expandPath(entry.path); } } } 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 aaa04460..8d4fb5be 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java @@ -216,11 +216,9 @@ public class Gui implements LanguageChangeListener { } Object node = path.getLastPathComponent(); - if (node instanceof ClassImplementationsTreeNode) { - ClassImplementationsTreeNode classNode = (ClassImplementationsTreeNode) node; + if (node instanceof ClassImplementationsTreeNode classNode) { controller.navigateTo(classNode.getClassEntry()); - } else if (node instanceof MethodImplementationsTreeNode) { - MethodImplementationsTreeNode methodNode = (MethodImplementationsTreeNode) node; + } else if (node instanceof MethodImplementationsTreeNode methodNode) { controller.navigateTo(methodNode.getMethodEntry()); } } @@ -248,8 +246,7 @@ public class Gui implements LanguageChangeListener { } Object node = path.getLastPathComponent(); - if (node instanceof ReferenceTreeNode) { - ReferenceTreeNode, Entry> referenceNode = ((ReferenceTreeNode, Entry>) node); + if (node instanceof ReferenceTreeNode referenceNode) { if (referenceNode.getReference() != null) { controller.navigateTo(referenceNode.getReference()); } else { 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 f990f98c..aeee242f 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -21,7 +21,6 @@ import java.util.List; import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; -import java.util.stream.Collectors; import java.util.stream.Stream; import javax.swing.JOptionPane; @@ -311,7 +310,7 @@ public class GuiController implements ClientPacketHandler { return mapper.getObfResolver().resolveReference(reference, ResolutionStrategy.RESOLVE_CLOSEST) .stream() .flatMap(r -> index.getReferenceTokens(r).stream()) - .collect(Collectors.toList()); + .toList(); } public void openPreviousReference() { diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java index ab9fa2a0..cec3fa1e 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java @@ -40,20 +40,11 @@ public enum LookAndFeel { try { switch (this) { - case NONE: - UIManager.setLookAndFeel(NONE_LAF); - break; - case DEFAULT: - UIManager.setLookAndFeel(new FlatLightLaf()); - break; - case METAL: - UIManager.setLookAndFeel(new MetalLookAndFeel()); - break; - case DARCULA: - UIManager.setLookAndFeel(new FlatDarkLaf()); - break; - case SYSTEM: - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + case NONE -> UIManager.setLookAndFeel(NONE_LAF); + case DEFAULT -> UIManager.setLookAndFeel(new FlatLightLaf()); + case METAL -> UIManager.setLookAndFeel(new MetalLookAndFeel()); + case DARCULA -> UIManager.setLookAndFeel(new FlatDarkLaf()); + case SYSTEM -> UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } } catch (Exception e) { throw new Error("Failed to set global look and feel", e); diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/FontDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/FontDialog.java index 1db8aea2..4e02a666 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/FontDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/FontDialog.java @@ -1,7 +1,6 @@ package cuchaz.enigma.gui.dialog; import java.awt.*; -import java.util.Arrays; import java.util.List; import javax.swing.JButton; @@ -18,14 +17,14 @@ import cuchaz.enigma.utils.I18n; public class FontDialog extends JDialog { - private static final List CATEGORIES = Arrays.asList( + private static final List CATEGORIES = List.of( "Default", "Default 2", "Small", "Editor" ); - private static final List CATEGORY_TEXTS = Arrays.asList( + private static final List CATEGORY_TEXTS = List.of( "fonts.cat.default", "fonts.cat.default2", "fonts.cat.small", diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ProgressDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ProgressDialog.java index 7110fc86..5f6dbdb5 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ProgressDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ProgressDialog.java @@ -93,13 +93,10 @@ public class ProgressDialog implements ProgressListener, AutoCloseable { return progress; }, SwingUtilities::invokeLater).thenAcceptAsync(progress -> { - // TODO use "try (progress)" with Java 9 - try { + try (progress) { runnable.run(progress); } catch (Exception e) { throw new RuntimeException(e); - } finally { - progress.close(); } }); } diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java index 9ed7339c..053adad8 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java @@ -142,30 +142,23 @@ public class SearchDialog { final EntryIndex entryIndex = parent.getController().project.getJarIndex().getEntryIndex(); switch (type) { - default: - case CLASS: - entryIndex.getClasses().parallelStream() - .filter(e -> !e.isInnerClass()) - .map(e -> SearchEntryImpl.from(e, parent.getController())) - .map(SearchUtil.Entry::from) - .sequential() - .forEach(su::add); - break; - case METHOD: - entryIndex.getMethods().parallelStream() - .filter(e -> !e.isConstructor() && !entryIndex.getMethodAccess(e).isSynthetic()) - .map(e -> SearchEntryImpl.from(e, parent.getController())) - .map(SearchUtil.Entry::from) - .sequential() - .forEach(su::add); - break; - case FIELD: - entryIndex.getFields().parallelStream() - .map(e -> SearchEntryImpl.from(e, parent.getController())) - .map(SearchUtil.Entry::from) - .sequential() - .forEach(su::add); - break; + case CLASS -> entryIndex.getClasses().parallelStream() + .filter(e -> !e.isInnerClass()) + .map(e -> SearchEntryImpl.from(e, parent.getController())) + .map(SearchUtil.Entry::from) + .sequential() + .forEach(su::add); + case METHOD -> entryIndex.getMethods().parallelStream() + .filter(e -> !e.isConstructor() && !entryIndex.getMethodAccess(e).isSynthetic()) + .map(e -> SearchEntryImpl.from(e, parent.getController())) + .map(SearchUtil.Entry::from) + .sequential() + .forEach(su::add); + case FIELD -> entryIndex.getFields().parallelStream() + .map(e -> SearchEntryImpl.from(e, parent.getController())) + .map(SearchUtil.Entry::from) + .sequential() + .forEach(su::add); } updateList(); @@ -290,10 +283,10 @@ public class SearchDialog { secondaryName.setToolTipText(value.obf.getFullName()); } - if (value.obf instanceof ClassEntry) { - mainName.setIcon(GuiUtil.getClassIcon(gui, (ClassEntry) value.obf)); - } else if (value.obf instanceof MethodEntry) { - mainName.setIcon(GuiUtil.getMethodIcon((MethodEntry) value.obf)); + if (value.obf instanceof ClassEntry classEntry) { + mainName.setIcon(GuiUtil.getClassIcon(gui, classEntry)); + } else if (value.obf instanceof MethodEntry methodEntry) { + mainName.setIcon(GuiUtil.getMethodIcon(methodEntry)); } else if (value.obf instanceof FieldEntry) { mainName.setIcon(GuiUtil.FIELD_ICON); } 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 8f020b8a..f6564f59 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 @@ -305,17 +305,10 @@ public class EditorPanel { public void displayError(ClassHandleError t) { this.setDisplayMode(DisplayMode.ERRORED); - String str; - switch (t.type) { - case DECOMPILE: - str = "editor.decompile_error"; - break; - case REMAP: - str = "editor.remap_error"; - break; - default: - throw new IllegalStateException("unreachable"); - } + String str = switch (t.type) { + case DECOMPILE -> "editor.decompile_error"; + case REMAP -> "editor.remap_error"; + }; this.errorLabel.setText(I18n.translate(str)); this.errorTextArea.setText(t.getStackTrace()); this.errorTextArea.setCaretPosition(0); diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/StructurePanel.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/StructurePanel.java index d8c46614..d6f7e5a7 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/StructurePanel.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/StructurePanel.java @@ -89,10 +89,10 @@ public class StructurePanel extends JPanel { Component c = super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); ParentedEntry entry = ((StructureTreeNode) value).getEntry(); - if (entry instanceof ClassEntry) { - this.setIcon(GuiUtil.getClassIcon(gui, (ClassEntry) entry)); - } else if (entry instanceof MethodEntry) { - this.setIcon(GuiUtil.getMethodIcon((MethodEntry) entry)); + if (entry instanceof ClassEntry classEntry) { + this.setIcon(GuiUtil.getClassIcon(gui, classEntry)); + } else if (entry instanceof MethodEntry methodEntry) { + this.setIcon(GuiUtil.getMethodIcon(methodEntry)); } else if (entry instanceof FieldEntry) { this.setIcon(GuiUtil.FIELD_ICON); } diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/CallsTreeCellRenderer.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/CallsTreeCellRenderer.java index d5cfdab8..0aa6510c 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/CallsTreeCellRenderer.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/CallsTreeCellRenderer.java @@ -31,10 +31,10 @@ public class CallsTreeCellRenderer extends DefaultTreeCellRenderer { } // if the node represents the called entry } else { - if (value instanceof ClassReferenceTreeNode) { - this.setIcon(GuiUtil.getClassIcon(this.gui, ((ClassReferenceTreeNode) value).getEntry())); - } else if (value instanceof MethodReferenceTreeNode) { - this.setIcon(GuiUtil.getMethodIcon(((MethodReferenceTreeNode) value).getEntry())); + if (value instanceof ClassReferenceTreeNode node) { + this.setIcon(GuiUtil.getClassIcon(this.gui, node.getEntry())); + } else if (value instanceof MethodReferenceTreeNode node) { + this.setIcon(GuiUtil.getMethodIcon(node.getEntry())); } else if (value instanceof FieldReferenceTreeNode) { this.setIcon(GuiUtil.FIELD_ICON); } diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/ImplementationsTreeCellRenderer.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/ImplementationsTreeCellRenderer.java index 2eb7efc4..7bf39005 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/ImplementationsTreeCellRenderer.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/ImplementationsTreeCellRenderer.java @@ -23,10 +23,10 @@ public class ImplementationsTreeCellRenderer extends DefaultTreeCellRenderer { this.setForeground(UiConfig.getTextColor()); - if (value instanceof ClassImplementationsTreeNode) { - this.setIcon(GuiUtil.getClassIcon(this.gui, ((ClassImplementationsTreeNode) value).getClassEntry())); - } else if (value instanceof MethodImplementationsTreeNode) { - this.setIcon(GuiUtil.getMethodIcon(((MethodImplementationsTreeNode) value).getMethodEntry())); + if (value instanceof ClassImplementationsTreeNode node) { + this.setIcon(GuiUtil.getClassIcon(this.gui, node.getClassEntry())); + } else if (value instanceof MethodImplementationsTreeNode node) { + this.setIcon(GuiUtil.getMethodIcon(node.getMethodEntry())); } return c; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/InheritanceTreeCellRenderer.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/InheritanceTreeCellRenderer.java index e377b9a3..a1025531 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/InheritanceTreeCellRenderer.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/renderer/InheritanceTreeCellRenderer.java @@ -34,7 +34,7 @@ public class InheritanceTreeCellRenderer extends DefaultTreeCellRenderer { public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { Component ret = super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); - if (!(value instanceof MethodInheritanceTreeNode) || ((MethodInheritanceTreeNode) value).isImplemented()) { + if (!(value instanceof MethodInheritanceTreeNode node) || node.isImplemented()) { ret.setForeground(UiConfig.getTextColor()); ret.setFont(ret.getFont().deriveFont(Font.PLAIN)); if (value instanceof ClassInheritanceTreeNode) { diff --git a/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java index a9e022fa..4f50f2ff 100644 --- a/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java +++ b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java @@ -120,11 +120,11 @@ public class EnigmaProject { } public boolean isRenamable(Entry obfEntry) { - if (obfEntry instanceof MethodEntry) { + if (obfEntry instanceof MethodEntry obfMethodEntry) { // HACKHACK: Object methods are not obfuscated identifiers - MethodEntry obfMethodEntry = (MethodEntry) obfEntry; String name = obfMethodEntry.getName(); String sig = obfMethodEntry.getDesc().toString(); + //TODO replace with a map or check if declaring class is java.lang.Object if (name.equals("clone") && sig.equals("()Ljava/lang/Object;")) { return false; } else if (name.equals("equals") && sig.equals("(Ljava/lang/Object;)Z")) { @@ -249,14 +249,14 @@ public class EnigmaProject { } public SourceExport decompile(ProgressListener progress, DecompilerService decompilerService, DecompileErrorStrategy errorStrategy) { - List decompiled = this.decompileStream(progress, decompilerService, errorStrategy).collect(Collectors.toList()); + List decompiled = this.decompileStream(progress, decompilerService, errorStrategy).toList(); return new SourceExport(decompiled); } public Stream decompileStream(ProgressListener progress, DecompilerService decompilerService, DecompileErrorStrategy errorStrategy) { Collection classes = this.compiled.values().stream() .filter(classNode -> classNode.name.indexOf('$') == -1) - .collect(Collectors.toList()); + .toList(); progress.init(classes.size(), I18n.translate("progress.classes.decompiling")); diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java index 90d8a6cf..01424120 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java @@ -70,8 +70,7 @@ public class ClassReferenceTreeNode extends DefaultMutableTreeNode if (recurse && this.children != null) { for (Object child : this.children) { - if (child instanceof ClassReferenceTreeNode) { - ClassReferenceTreeNode node = (ClassReferenceTreeNode) child; + if (child instanceof ClassReferenceTreeNode node) { // don't recurse into ancestor Set> ancestors = Sets.newHashSet(); diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java b/enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java index 6dd65260..281b05ff 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java @@ -91,7 +91,7 @@ public class EntryReference, C extends Entry> implements T } public Entry getNameableEntry() { - if (entry instanceof MethodEntry && ((MethodEntry) entry).isConstructor()) { + if (entry instanceof MethodEntry method && method.isConstructor()) { // renaming a constructor really means renaming the class return entry.getContainingClass(); } @@ -112,7 +112,7 @@ public class EntryReference, C extends Entry> implements T @Override public boolean equals(Object other) { - return other instanceof EntryReference && equals((EntryReference) other); + return other instanceof EntryReference reference && equals(reference); } public boolean equals(EntryReference other) { diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java index 4beab7f8..c93ac53f 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java @@ -72,10 +72,10 @@ public class FieldReferenceTreeNode extends DefaultMutableTreeNode implements Re if (recurse && children != null) { for (Object node : children) { - if (node instanceof MethodReferenceTreeNode) { - ((MethodReferenceTreeNode) node).load(index, true, false); - } else if (node instanceof FieldReferenceTreeNode) { - ((FieldReferenceTreeNode) node).load(index, true); + if (node instanceof MethodReferenceTreeNode methodNode) { + methodNode.load(index, true, false); + } else if (node instanceof FieldReferenceTreeNode fieldNode) { + fieldNode.load(index, true); } } } diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/InterpreterPair.java b/enigma/src/main/java/cuchaz/enigma/analysis/InterpreterPair.java index fad10bf7..a624b7c5 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/InterpreterPair.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/InterpreterPair.java @@ -9,7 +9,6 @@ import org.objectweb.asm.tree.analysis.Value; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; public class InterpreterPair extends Interpreter> { private final Interpreter left; @@ -72,8 +71,8 @@ public class InterpreterPair extends Interpret @Override public PairValue naryOperation(AbstractInsnNode insn, List> values) throws AnalyzerException { return pair( - left.naryOperation(insn, values.stream().map(v -> v.left).collect(Collectors.toList())), - right.naryOperation(insn, values.stream().map(v -> v.right).collect(Collectors.toList())) + left.naryOperation(insn, values.stream().map(v -> v.left).toList()), + right.naryOperation(insn, values.stream().map(v -> v.right).toList()) ); } @@ -114,7 +113,7 @@ public class InterpreterPair extends Interpret @Override public boolean equals(Object o) { - return o instanceof InterpreterPair.PairValue && Objects.equals(left, ((PairValue) o).left) && Objects.equals(right, ((PairValue) o).right); + return o instanceof InterpreterPair.PairValue pairValue && Objects.equals(left, pairValue.left) && Objects.equals(right, pairValue.right); } @Override diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/MethodReferenceTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/MethodReferenceTreeNode.java index 8995eb5c..68038615 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/MethodReferenceTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/MethodReferenceTreeNode.java @@ -72,8 +72,7 @@ public class MethodReferenceTreeNode extends DefaultMutableTreeNode implements R if (recurse && this.children != null) { for (Object child : this.children) { - if (child instanceof MethodReferenceTreeNode) { - MethodReferenceTreeNode node = (MethodReferenceTreeNode) child; + if (child instanceof MethodReferenceTreeNode node) { // don't recurse into ancestor Set> ancestors = Sets.newHashSet(); diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/StructureTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/StructureTreeNode.java index 55d75cf3..b4343c10 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/StructureTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/StructureTreeNode.java @@ -49,7 +49,7 @@ public class StructureTreeNode extends DefaultMutableTreeNode { } // don't add constructor methods if hideDeobfuscated is true - if (hideDeobfuscated && (child instanceof MethodEntry) && ((MethodEntry) child).isConstructor()) { + if (hideDeobfuscated && (child instanceof MethodEntry method) && method.isConstructor()) { continue; } @@ -95,12 +95,12 @@ public class StructureTreeNode extends DefaultMutableTreeNode { public String toHtml() { List modifiers = new ArrayList<>(); - if (this.entry instanceof DefEntry) { - AccessFlags access = ((DefEntry) this.entry).getAccess(); + if (this.entry instanceof DefEntry defEntry) { + AccessFlags access = defEntry.getAccess(); boolean isInterfaceMethod = false; - if (this.entry instanceof MethodEntry && this.entry.getParent() instanceof ClassDefEntry) { - isInterfaceMethod = ((ClassDefEntry) this.entry.getParent()).getAccess().isInterface(); + if (this.entry instanceof MethodEntry && this.entry.getParent() instanceof ClassDefEntry parent) { + isInterfaceMethod = parent.getAccess().isInterface(); } if (access.isStatic() && !access.isEnum()) { diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/index/EntryIndex.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/EntryIndex.java index 9a2726e5..bb992b73 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/index/EntryIndex.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/EntryIndex.java @@ -43,14 +43,14 @@ public class EntryIndex implements JarIndexer { } public boolean hasEntry(Entry entry) { - if (entry instanceof ClassEntry) { - return hasClass((ClassEntry) entry); - } else if (entry instanceof MethodEntry) { - return hasMethod((MethodEntry) entry); - } else if (entry instanceof FieldEntry) { - return hasField((FieldEntry) entry); - } else if (entry instanceof LocalVariableEntry) { - return hasMethod(((LocalVariableEntry) entry).getParent()); + if (entry instanceof ClassEntry classEntry) { + return hasClass(classEntry); + } else if (entry instanceof MethodEntry methodEntry) { + return hasMethod(methodEntry); + } else if (entry instanceof FieldEntry fieldEntry) { + return hasField(fieldEntry); + } else if (entry instanceof LocalVariableEntry localVariableEntry) { + return hasMethod(localVariableEntry.getParent()); } return false; @@ -73,12 +73,12 @@ public class EntryIndex implements JarIndexer { @Nullable public AccessFlags getEntryAccess(Entry entry) { - if (entry instanceof MethodEntry) { - return getMethodAccess((MethodEntry) entry); - } else if (entry instanceof FieldEntry) { - return getFieldAccess((FieldEntry) entry); - } else if (entry instanceof LocalVariableEntry) { - return getMethodAccess(((LocalVariableEntry) entry).getParent()); + if (entry instanceof MethodEntry methodEntry) { + return getMethodAccess(methodEntry); + } else if (entry instanceof FieldEntry fieldEntry) { + return getFieldAccess(fieldEntry); + } else if (entry instanceof LocalVariableEntry localVariableEntry) { + return getMethodAccess(localVariableEntry.getParent()); } return null; diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java index f3d419ee..efea83d4 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java @@ -17,7 +17,6 @@ import org.objectweb.asm.tree.MethodInsnNode; import org.objectweb.asm.tree.analysis.*; import java.util.List; -import java.util.stream.Collectors; public class IndexReferenceVisitor extends ClassVisitor { private final JarIndexer indexer; @@ -112,7 +111,7 @@ public class IndexReferenceVisitor extends ClassVisitor { if (insn.getOpcode() == Opcodes.INVOKEDYNAMIC) { InvokeDynamicInsnNode invokeDynamicInsn = (InvokeDynamicInsnNode) insn; - List args = values.stream().map(v -> v.right.insns.stream().findFirst().orElseThrow(AssertionError::new)).collect(Collectors.toList()); + List args = values.stream().map(v -> v.right.insns.stream().findFirst().orElseThrow(AssertionError::new)).toList(); if ("java/lang/invoke/LambdaMetafactory".equals(invokeDynamicInsn.bsm.getOwner()) && "metafactory".equals(invokeDynamicInsn.bsm.getName())) { Type samMethodType = (Type) invokeDynamicInsn.bsmArgs[0]; diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/index/JarIndex.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/JarIndex.java index aa360cfd..6c26282e 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/index/JarIndex.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/JarIndex.java @@ -44,7 +44,7 @@ public class JarIndex implements JarIndexer { this.referenceIndex = referenceIndex; this.bridgeMethodIndex = bridgeMethodIndex; this.packageVisibilityIndex = packageVisibilityIndex; - this.indexers = Arrays.asList(entryIndex, inheritanceIndex, referenceIndex, bridgeMethodIndex, packageVisibilityIndex); + this.indexers = List.of(entryIndex, inheritanceIndex, referenceIndex, bridgeMethodIndex, packageVisibilityIndex); this.entryResolver = new IndexEntryResolver(this); this.childrenByClass = ArrayListMultimap.create(); } diff --git a/enigma/src/main/java/cuchaz/enigma/classprovider/ObfuscationFixClassProvider.java b/enigma/src/main/java/cuchaz/enigma/classprovider/ObfuscationFixClassProvider.java index db9e2d04..36236a8d 100644 --- a/enigma/src/main/java/cuchaz/enigma/classprovider/ObfuscationFixClassProvider.java +++ b/enigma/src/main/java/cuchaz/enigma/classprovider/ObfuscationFixClassProvider.java @@ -65,8 +65,7 @@ public class ObfuscationFixClassProvider implements ClassProvider { for (MethodNode methodNode : node.methods) { AbstractInsnNode insnNode = methodNode.instructions.getFirst(); while (insnNode != null) { - if (insnNode instanceof MethodInsnNode && insnNode.getOpcode() == Opcodes.INVOKEVIRTUAL) { - MethodInsnNode methodInsnNode = (MethodInsnNode) insnNode; + if (insnNode instanceof MethodInsnNode methodInsnNode && insnNode.getOpcode() == Opcodes.INVOKEVIRTUAL) { if (methodInsnNode.name.equals("getClass") && methodInsnNode.owner.equals("java/lang/Object") && methodInsnNode.desc.equals("()Ljava/lang/Class;")) { AbstractInsnNode previous = methodInsnNode.getPrevious(); AbstractInsnNode next = methodInsnNode.getNext(); diff --git a/enigma/src/main/java/cuchaz/enigma/source/SourceIndex.java b/enigma/src/main/java/cuchaz/enigma/source/SourceIndex.java index ed6cfb94..971252e2 100644 --- a/enigma/src/main/java/cuchaz/enigma/source/SourceIndex.java +++ b/enigma/src/main/java/cuchaz/enigma/source/SourceIndex.java @@ -13,7 +13,6 @@ import java.util.Collection; import java.util.List; import java.util.Map; import java.util.TreeMap; -import java.util.stream.Collectors; public class SourceIndex { private String source; @@ -159,7 +158,7 @@ public class SourceIndex { Collection newTokens = oldTokens .stream() .map(result::getRemappedToken) - .collect(Collectors.toList()); + .toList(); remapped.referenceToTokens.putAll(reference, newTokens); } diff --git a/enigma/src/main/java/cuchaz/enigma/translation/Translator.java b/enigma/src/main/java/cuchaz/enigma/translation/Translator.java index d3bc188d..66c2f9ec 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/Translator.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/Translator.java @@ -36,7 +36,7 @@ public interface Translator { default Collection translate(Collection translatable) { return translatable.stream() .map(this::translate) - .collect(Collectors.toList()); + .toList(); } default Set translate(Set translatable) { diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/AccessModifier.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/AccessModifier.java index 5b79b794..f57dd900 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/AccessModifier.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/AccessModifier.java @@ -10,16 +10,11 @@ public enum AccessModifier { } public AccessFlags transform(AccessFlags access) { - switch (this) { - case PUBLIC: - return access.setPublic(); - case PROTECTED: - return access.setProtected(); - case PRIVATE: - return access.setPrivate(); - case UNCHANGED: - default: - return access; - } + return switch (this) { + case PUBLIC -> access.setPublic(); + case PROTECTED -> access.setProtected(); + case PRIVATE -> access.setPrivate(); + default -> access; + }; } } diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryRemapper.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryRemapper.java index ef904d7f..8b5490e1 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryRemapper.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryRemapper.java @@ -2,7 +2,6 @@ package cuchaz.enigma.translation.mapping; import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; import java.util.stream.Stream; import javax.annotation.Nullable; @@ -95,7 +94,7 @@ public class EntryRemapper { // Find all the methods in this record class List classMethods = jarIndex.getEntryIndex().getMethods().stream() .filter(entry -> classEntry.equals(entry.getParent())) - .collect(Collectors.toList()); + .toList(); MethodEntry methodEntry = null; diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryResolver.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryResolver.java index 521f72d0..9dd0c3aa 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryResolver.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryResolver.java @@ -7,7 +7,6 @@ import cuchaz.enigma.translation.representation.entry.MethodEntry; import java.util.Collection; import java.util.Set; -import java.util.stream.Collectors; public interface EntryResolver { > Collection resolveEntry(E entry, ResolutionStrategy strategy); @@ -21,11 +20,11 @@ public interface EntryResolver { if (reference.context != null) { Collection context = resolveEntry(reference.context, strategy); return Streams.zip(entry.stream(), context.stream(), (e, c) -> new EntryReference<>(e, c, reference)) - .collect(Collectors.toList()); + .toList(); } else { return entry.stream() .map(e -> new EntryReference<>(e, null, reference)) - .collect(Collectors.toList()); + .toList(); } } diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/IdentifierValidation.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/IdentifierValidation.java index 9595c4e6..e3aeb205 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/IdentifierValidation.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/IdentifierValidation.java @@ -11,7 +11,6 @@ package cuchaz.enigma.translation.mapping; -import java.util.Arrays; import java.util.List; import cuchaz.enigma.utils.validation.Message; @@ -23,12 +22,13 @@ public final class IdentifierValidation { private IdentifierValidation() { } - private static final List ILLEGAL_IDENTIFIERS = Arrays.asList( - "abstract", "continue", "for", "new", "switch", "assert", "default", "goto", "package", "synchronized", - "boolean", "do", "if", "private", "this", "break", "double", "implements", "protected", "throw", "byte", - "else", "import", "public", "throws", "case", "enum", "instanceof", "return", "transient", "catch", - "extends", "int", "short", "try", "char", "final", "interface", "static", "void", "class", "finally", - "long", "strictfp", "volatile", "const", "float", "native", "super", "while", "true", "false", "null", "_" + private static final List ILLEGAL_IDENTIFIERS = List.of( + "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", + "continue", "default", "do", "double", "else", "enum", "extends", "false", "final", "finally", + "float", "for", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", + "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", + "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", + "void", "volatile", "while", "_" ); public static boolean validateClassName(ValidationContext vc, String name, boolean isInner) { diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/IndexEntryResolver.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/IndexEntryResolver.java index 78231ddd..1a89df7b 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/IndexEntryResolver.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/IndexEntryResolver.java @@ -16,7 +16,6 @@ import cuchaz.enigma.translation.representation.entry.MethodEntry; import javax.annotation.Nullable; import java.util.*; -import java.util.stream.Collectors; public class IndexEntryResolver implements EntryResolver { private final EntryIndex entryIndex; @@ -54,7 +53,7 @@ public class IndexEntryResolver implements EntryResolver { if (!resolvedChildren.isEmpty()) { return resolvedChildren.stream() .map(resolvedChild -> (E) entry.replaceAncestor(classChild, resolvedChild)) - .collect(Collectors.toList()); + .toList(); } } } diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingValidator.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingValidator.java index f9f3b88e..1615912b 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingValidator.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingValidator.java @@ -2,7 +2,7 @@ package cuchaz.enigma.translation.mapping; import java.util.Collection; import java.util.HashSet; -import java.util.stream.Collectors; +import java.util.List; import cuchaz.enigma.analysis.index.InheritanceIndex; import cuchaz.enigma.analysis.index.JarIndex; @@ -41,9 +41,9 @@ public class MappingValidator { Entry relatedEntry = entry.replaceAncestor(containingClass, relatedClass); Entry translatedEntry = deobfuscator.translate(relatedEntry); - Collection> translatedSiblings = obfToDeobf.getSiblings(relatedEntry).stream() + List> translatedSiblings = obfToDeobf.getSiblings(relatedEntry).stream() .map(deobfuscator::translate) - .collect(Collectors.toList()); + .toList(); if (!isUnique(translatedEntry, translatedSiblings, name)) { Entry parent = translatedEntry.getParent(); @@ -67,7 +67,7 @@ public class MappingValidator { return relatedClasses; } - private boolean isUnique(Entry entry, Collection> siblings, String name) { + private boolean isUnique(Entry entry, List> siblings, String name) { for (Entry sibling : siblings) { if (entry.canConflictWith(sibling) && sibling.getName().equals(name)) { return false; diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java index 5d9794fb..141a07cc 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java @@ -24,7 +24,6 @@ import cuchaz.enigma.translation.representation.entry.MethodEntry; import java.util.Collection; import java.util.HashMap; import java.util.Map; -import java.util.stream.Collectors; public class MappingsChecker { private final JarIndex index; @@ -40,7 +39,7 @@ public class MappingsChecker { Collection> obfEntries = mappings.getAllEntries() .filter(e -> e instanceof ClassEntry || e instanceof MethodEntry || e instanceof FieldEntry || e instanceof LocalVariableEntry) - .collect(Collectors.toList()); + .toList(); progress.init(obfEntries.size(), "Checking for dropped mappings"); diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java index a1e975c1..27545c03 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java @@ -28,7 +28,6 @@ import java.util.Arrays; import java.util.Deque; import java.util.List; import java.util.Locale; -import java.util.stream.Collectors; public enum EnigmaMappingsReader implements MappingsReader { FILE { @@ -52,7 +51,7 @@ public enum EnigmaMappingsReader implements MappingsReader { List files = Files.walk(root) .filter(f -> !Files.isDirectory(f)) .filter(f -> f.toString().endsWith(".mapping")) - .collect(Collectors.toList()); + .toList(); progress.init(files.size(), I18n.translate("progress.mappings.enigma_directory.loading")); int step = 0; diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java index 378ed984..d9f1470d 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java @@ -26,7 +26,6 @@ import java.util.Collection; import java.util.Collections; import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; import java.util.stream.Stream; import cuchaz.enigma.ProgressListener; @@ -57,7 +56,7 @@ public enum EnigmaMappingsWriter implements MappingsWriter { Collection classes = mappings.getRootNodes() .filter(entry -> entry.getEntry() instanceof ClassEntry) .map(entry -> (ClassEntry) entry.getEntry()) - .collect(Collectors.toList()); + .toList(); progress.init(classes.size(), I18n.translate("progress.mappings.enigma_file.writing")); @@ -78,7 +77,7 @@ public enum EnigmaMappingsWriter implements MappingsWriter { Collection changedClasses = delta.getChangedRoots() .filter(entry -> entry instanceof ClassEntry) .map(entry -> (ClassEntry) entry) - .collect(Collectors.toList()); + .toList(); applyDeletions(path, changedClasses, mappings, delta.getBaseMappings(), saveParameters.getFileNameFormat()); @@ -120,7 +119,7 @@ public enum EnigmaMappingsWriter implements MappingsWriter { deletedClassStream = deletedClassStream.map(oldMappingTranslator::translate); } - Collection deletedClasses = deletedClassStream.collect(Collectors.toList()); + Collection deletedClasses = deletedClassStream.toList(); for (ClassEntry classEntry : deletedClasses) { try { @@ -309,9 +308,7 @@ public enum EnigmaMappingsWriter implements MappingsWriter { private String indent(String line, int depth) { StringBuilder builder = new StringBuilder(); - for (int i = 0; i < depth; i++) { - builder.append("\t"); - } + builder.append("\t".repeat(Math.max(0, depth))); builder.append(line.trim()); return builder.toString(); } diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java index 9c9f103d..92758475 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java @@ -26,7 +26,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.List; -import java.util.stream.Collectors; public enum SrgMappingsWriter implements MappingsWriter { INSTANCE; @@ -44,9 +43,9 @@ public enum SrgMappingsWriter implements MappingsWriter { List fieldLines = new ArrayList<>(); List methodLines = new ArrayList<>(); - Collection> rootEntries = Lists.newArrayList(mappings).stream() + List> rootEntries = Lists.newArrayList(mappings).stream() .map(EntryTreeNode::getEntry) - .collect(Collectors.toList()); + .toList(); progress.init(rootEntries.size(), I18n.translate("progress.mappings.srg_file.generating")); int steps = 0; @@ -111,7 +110,7 @@ public enum SrgMappingsWriter implements MappingsWriter { return entry.getParent().getFullName() + "/" + entry.getName(); } - private Collection> sorted(Iterable> iterable) { + private Collection> sorted(Iterable> iterable) { ArrayList> sorted = Lists.newArrayList(iterable); sorted.sort(Comparator.comparing(Entry::getName)); return sorted; diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Writer.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Writer.java index 5546b2fe..5160eda3 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Writer.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Writer.java @@ -24,7 +24,6 @@ import java.nio.file.Path; import java.util.Deque; import java.util.LinkedList; import java.util.List; -import java.util.stream.Collectors; import java.util.stream.StreamSupport; public final class TinyV2Writer implements MappingsWriter { @@ -40,7 +39,7 @@ public final class TinyV2Writer implements MappingsWriter { @Override public void write(EntryTree mappings, MappingDelta delta, Path path, ProgressListener progress, MappingSaveParameters parameters) { - List> classes = StreamSupport.stream(mappings.spliterator(), false).filter(node -> node.getEntry() instanceof ClassEntry).collect(Collectors.toList()); + List> classes = StreamSupport.stream(mappings.spliterator(), false).filter(node -> node.getEntry() instanceof ClassEntry).toList(); try (PrintWriter writer = new LfPrintWriter(Files.newBufferedWriter(path))) { writer.println("tiny\t2\t" + MINOR_VERSION + "\t" + obfHeader + "\t" + deobfHeader); diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTreeNode.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTreeNode.java index affcd504..eb26ea99 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTreeNode.java @@ -5,7 +5,7 @@ import cuchaz.enigma.translation.representation.entry.Entry; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collection; -import java.util.stream.Collectors; +import java.util.List; public interface EntryTreeNode { @Nullable @@ -28,10 +28,10 @@ public interface EntryTreeNode { return nodes; } - default Collection> getChildrenRecursively() { + default List> getChildrenRecursively() { return getNodesRecursively().stream() .map(EntryTreeNode::getEntry) - .collect(Collectors.toList()); + .toList(); } default boolean hasValue() { diff --git a/enigma/src/main/java/cuchaz/enigma/utils/I18n.java b/enigma/src/main/java/cuchaz/enigma/utils/I18n.java index cb498e05..26e5b27a 100644 --- a/enigma/src/main/java/cuchaz/enigma/utils/I18n.java +++ b/enigma/src/main/java/cuchaz/enigma/utils/I18n.java @@ -18,15 +18,10 @@ import com.google.gson.Gson; public class I18n { public static final String DEFAULT_LANGUAGE = "en_us"; private static final Gson GSON = new Gson(); - private static Map translations = Maps.newHashMap(); - private static Map defaultTranslations = Maps.newHashMap(); + private static Map defaultTranslations = load(DEFAULT_LANGUAGE); + private static Map translations = defaultTranslations; private static Map languageNames = Maps.newHashMap(); - static { - defaultTranslations = load(DEFAULT_LANGUAGE); - translations = defaultTranslations; - } - @SuppressWarnings("unchecked") public static Map load(String language) { try (InputStream inputStream = I18n.class.getResourceAsStream("/lang/" + language + ".json")) { diff --git a/enigma/src/main/java/cuchaz/enigma/utils/Utils.java b/enigma/src/main/java/cuchaz/enigma/utils/Utils.java index 8beaaae6..ad4e9368 100644 --- a/enigma/src/main/java/cuchaz/enigma/utils/Utils.java +++ b/enigma/src/main/java/cuchaz/enigma/utils/Utils.java @@ -27,7 +27,6 @@ import java.util.List; import java.util.Locale; import java.util.concurrent.locks.Lock; import java.util.function.Supplier; -import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -46,7 +45,7 @@ public class Utils { public static void delete(Path path) throws IOException { if (Files.exists(path)) { - for (Path p : Files.walk(path).sorted(Comparator.reverseOrder()).collect(Collectors.toList())) { + for (Path p : Files.walk(path).sorted(Comparator.reverseOrder()).toList()) { Files.delete(p); } } @@ -97,17 +96,4 @@ public class Utils { l.unlock(); } } - - - public static boolean isBlank(String input) { - if (input == null) { - return true; - } - for (int i = 0; i < input.length(); i++) { - if (!Character.isWhitespace(input.charAt(i))) { - return false; - } - } - return true; - } } diff --git a/enigma/src/main/java/cuchaz/enigma/utils/validation/ParameterizedMessage.java b/enigma/src/main/java/cuchaz/enigma/utils/validation/ParameterizedMessage.java index 48a5a10f..9ad58679 100644 --- a/enigma/src/main/java/cuchaz/enigma/utils/validation/ParameterizedMessage.java +++ b/enigma/src/main/java/cuchaz/enigma/utils/validation/ParameterizedMessage.java @@ -26,8 +26,7 @@ public final class ParameterizedMessage { @Override public boolean equals(Object o) { if (this == o) return true; - if (!(o instanceof ParameterizedMessage)) return false; - ParameterizedMessage that = (ParameterizedMessage) o; + if (!(o instanceof ParameterizedMessage that)) return false; return Objects.equals(message, that.message) && Arrays.equals(params, that.params) && Objects.equals(target, that.target); diff --git a/enigma/src/main/java/cuchaz/enigma/utils/validation/PrintValidatable.java b/enigma/src/main/java/cuchaz/enigma/utils/validation/PrintValidatable.java index fe91cc11..81b6c43f 100644 --- a/enigma/src/main/java/cuchaz/enigma/utils/validation/PrintValidatable.java +++ b/enigma/src/main/java/cuchaz/enigma/utils/validation/PrintValidatable.java @@ -10,20 +10,11 @@ public class PrintValidatable implements Validatable { public void addMessage(ParameterizedMessage message) { String text = message.getText(); String longText = message.getLongText(); - String type; - switch (message.message.type) { - case INFO: - type = "info"; - break; - case WARNING: - type = "warning"; - break; - case ERROR: - type = "error"; - break; - default: - throw new IllegalStateException("unreachable"); - } + String type = switch (message.message.type) { + case INFO -> "info"; + case WARNING -> "warning"; + case ERROR -> "error"; + }; System.out.printf("%s: %s\n", type, text); if (!longText.isEmpty()) { Arrays.stream(longText.split("\n")).forEach(s -> System.out.printf(" %s\n", s)); -- cgit v1.2.3