From a9612c058c2a1805a91e551d6e1606722ed9d37b Mon Sep 17 00:00:00 2001 From: SuspiciousActivity <38253929+SuspiciousActivity@users.noreply.github.com> Date: Fri, 12 Mar 2021 23:29:47 +0100 Subject: [PATCH] Removed ".class" from internal classNodes map --- src/me/ByteEdit/boxes/CompilationBox.java | 4 ++-- .../ByteEdit/boxes/GlobalSearchOpenBox.java | 4 +--- src/me/ByteEdit/boxes/RenameBox.java | 6 ++--- src/me/ByteEdit/boxes/TypeOpenBox.java | 14 +++++------- src/me/ByteEdit/decompiler/CFRDecompiler.java | 2 +- src/me/ByteEdit/decompiler/JDDecompiler.java | 4 ++-- .../decompiler/ProcyonDecompiler.java | 2 +- src/me/ByteEdit/main/ArchiveTreeModel.java | 4 ++-- src/me/ByteEdit/main/Main.java | 22 +++++++------------ 9 files changed, 26 insertions(+), 36 deletions(-) diff --git a/src/me/ByteEdit/boxes/CompilationBox.java b/src/me/ByteEdit/boxes/CompilationBox.java index 30f021a..9940774 100644 --- a/src/me/ByteEdit/boxes/CompilationBox.java +++ b/src/me/ByteEdit/boxes/CompilationBox.java @@ -130,7 +130,7 @@ public class CompilationBox extends JFrame { synchronized (Main.classNodes) { classNodes = new HashMap<>(Main.classNodes); } - classNodes.put("Compiled.class", node); + classNodes.put("Compiled", node); File[] files = tmpFolder.listFiles(); if (files != null) for (File f : files) { @@ -145,7 +145,7 @@ public class CompilationBox extends JFrame { read = new ClassReader(baos.toByteArray()); node = new ClassNode(); read.accept(node, 0); - classNodes.put(f.getName(), node); + classNodes.put(node.name, node); } compSuccess.textArea .setText(decompiler.getDecompiler().decompile(mainNode, classNodes)); diff --git a/src/me/ByteEdit/boxes/GlobalSearchOpenBox.java b/src/me/ByteEdit/boxes/GlobalSearchOpenBox.java index f320335..41a9068 100644 --- a/src/me/ByteEdit/boxes/GlobalSearchOpenBox.java +++ b/src/me/ByteEdit/boxes/GlobalSearchOpenBox.java @@ -40,7 +40,7 @@ public class GlobalSearchOpenBox extends JFrame { SingleThreadedExecutor.submit(() -> { Info val = list.getSelectedValue(); if (val != null && !val.owner.equals(Main.currentNodeName)) { - Main.selectFile(val.nodePath); + Main.selectFile(val.owner); } }); } @@ -59,14 +59,12 @@ public class GlobalSearchOpenBox extends JFrame { String name; String desc; MethodNode mn; - String nodePath; public Info(String owner, String name, String desc, MethodNode mn) { this.owner = owner; this.name = name; this.desc = desc; this.mn = mn; - nodePath = Main.getFullName(owner); } @Override diff --git a/src/me/ByteEdit/boxes/RenameBox.java b/src/me/ByteEdit/boxes/RenameBox.java index c44364b..429be4f 100644 --- a/src/me/ByteEdit/boxes/RenameBox.java +++ b/src/me/ByteEdit/boxes/RenameBox.java @@ -79,7 +79,7 @@ public class RenameBox extends JFrame { JOptionPane.showMessageDialog(null, "Desc not set!", "Error!", JOptionPane.ERROR_MESSAGE); return; } - ClassNode clazz = Main.classNodes.get(Main.getFullName(className)); + ClassNode clazz = Main.classNodes.get(className); if (clazz == null) { JOptionPane.showMessageDialog(null, "ClassNode not found!", "Error!", JOptionPane.ERROR_MESSAGE); return; @@ -94,7 +94,7 @@ public class RenameBox extends JFrame { if (newDesc.startsWith("(")) { // method ClassNode lastHit = clazz; while (clazz != null && clazz.superName != null) { - ClassNode tmp = Main.classNodes.get(Main.getFullName(clazz.superName)); + ClassNode tmp = Main.classNodes.get(clazz.superName); if (tmp != null) { boolean found = false; for (MethodNode mn : clazz.methods) { @@ -127,7 +127,7 @@ public class RenameBox extends JFrame { extendsMyClass = true; break; } - ClassNode tmp = Main.classNodes.get(Main.getFullName(checkCN.superName)); + ClassNode tmp = Main.classNodes.get(checkCN.superName); if (tmp != null) { checkCN = tmp; } else { diff --git a/src/me/ByteEdit/boxes/TypeOpenBox.java b/src/me/ByteEdit/boxes/TypeOpenBox.java index 9a07d69..1850302 100644 --- a/src/me/ByteEdit/boxes/TypeOpenBox.java +++ b/src/me/ByteEdit/boxes/TypeOpenBox.java @@ -79,19 +79,17 @@ public class TypeOpenBox extends JFrame { } String search = UnicodeUtils.unescape(null, txtSearch.getText(), true).toLowerCase(); if (search.contains("/")) { - for (String s : Main.classNodes.keySet()) { - String className = s.substring(0, s.length() - 6); + for (String className : Main.classNodes.keySet()) { if (!className.contains("$") && className.toLowerCase().startsWith(search)) { - model.addElement(s); + model.addElement(className); } } } else { - for (String s : Main.classNodes.keySet()) { - String[] split = s.split("/"); - String className = split[split.length - 1]; - className = className.substring(0, className.length() - 6); + for (String className : Main.classNodes.keySet()) { + String[] split = className.split("/"); + className = split[split.length - 1]; if (!className.contains("$") && className.toLowerCase().startsWith(search)) { - model.addElement(s); + model.addElement(className); } } } diff --git a/src/me/ByteEdit/decompiler/CFRDecompiler.java b/src/me/ByteEdit/decompiler/CFRDecompiler.java index 942cc02..96375f8 100644 --- a/src/me/ByteEdit/decompiler/CFRDecompiler.java +++ b/src/me/ByteEdit/decompiler/CFRDecompiler.java @@ -110,7 +110,7 @@ public class CFRDecompiler implements IDecompiler { // try loading other classes from jar ClassNode node; synchronized (classNodes) { - node = classNodes.get(name + ".class"); + node = classNodes.get(name); } if (node != null) return Pair.make(IDecompiler.getBytes(node), name); diff --git a/src/me/ByteEdit/decompiler/JDDecompiler.java b/src/me/ByteEdit/decompiler/JDDecompiler.java index 2fb2c8f..298a7c7 100644 --- a/src/me/ByteEdit/decompiler/JDDecompiler.java +++ b/src/me/ByteEdit/decompiler/JDDecompiler.java @@ -42,7 +42,7 @@ public class JDDecompiler implements Loader, Printer, IDecompiler { @Override public boolean canLoad(String internalName) { synchronized (classNodes) { - return classNodes.containsKey(internalName + ".class"); + return classNodes.containsKey(internalName); } } @@ -50,7 +50,7 @@ public class JDDecompiler implements Loader, Printer, IDecompiler { public byte[] load(String internalName) throws LoaderException { ClassNode node; synchronized (classNodes) { - node = classNodes.get(internalName + ".class"); + node = classNodes.get(internalName); } if (node != null) return IDecompiler.getBytes(node); diff --git a/src/me/ByteEdit/decompiler/ProcyonDecompiler.java b/src/me/ByteEdit/decompiler/ProcyonDecompiler.java index eb416b0..af706ee 100644 --- a/src/me/ByteEdit/decompiler/ProcyonDecompiler.java +++ b/src/me/ByteEdit/decompiler/ProcyonDecompiler.java @@ -51,7 +51,7 @@ public class ProcyonDecompiler implements IDecompiler { } ClassNode node; synchronized (classNodes) { - node = classNodes.get(s + ".class"); + node = classNodes.get(s); } if (node != null) { byte[] data = IDecompiler.getBytes(node); diff --git a/src/me/ByteEdit/main/ArchiveTreeModel.java b/src/me/ByteEdit/main/ArchiveTreeModel.java index 2de63ee..621aea8 100644 --- a/src/me/ByteEdit/main/ArchiveTreeModel.java +++ b/src/me/ByteEdit/main/ArchiveTreeModel.java @@ -61,7 +61,7 @@ public class ArchiveTreeModel extends DefaultTreeModel { ClassReader reader = new ClassReader(data); ClassNode node = new ClassNode(); reader.accept(node, 0); - classNodes.put(Main.getFullName(node.name), node); + classNodes.put(node.name, node); if ((next.getName().contains("/") ? (!Main.patternSlash @@ -70,7 +70,7 @@ public class ArchiveTreeModel extends DefaultTreeModel { : (!next.getName().contains("$"))) || (next.getName().startsWith("$") || next.getName().contains("$$") || next.getName().endsWith("$"))) { - paths.add(Main.getFullName(node.name)); + paths.add(node.name + ".class"); } } catch (Exception e) { otherFiles.put(next.getName(), data); diff --git a/src/me/ByteEdit/main/Main.java b/src/me/ByteEdit/main/Main.java index 5e9b1f3..28ebfd4 100644 --- a/src/me/ByteEdit/main/Main.java +++ b/src/me/ByteEdit/main/Main.java @@ -483,12 +483,11 @@ public class Main extends JFrame { String s = ((ByteEditTreeNode) tree.getSelectionPath().getLastPathComponent()).path; if (JOptionPane.showConfirmDialog(INSTANCE, "Do you want to delete\n\"" + s + "\"?", "Delete", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { - String substr = s.substring(0, s.length() - 6); ArrayList toRemove = new ArrayList<>(); for (String key : Main.classNodes.keySet()) { if (key.contains("$")) { String[] split = key.split("\\$"); - if (split[0].equals(substr)) { + if (split[0].equals(s)) { toRemove.add(key); } } @@ -757,15 +756,15 @@ public class Main extends JFrame { if (node == null) { continue; } - if (classNodes.replace(getFullName(node.name), node) == null) { - classNodes.put(getFullName(node.name), node); + if (classNodes.replace(node.name, node) == null) { + classNodes.put(node.name, node); ArchiveTreeModel model; if (tree.getModel().getClass().equals(DefaultTreeModel.class)) { tree.setModel(model = new ArchiveTreeModel(classNodes, otherFiles)); } else { model = (ArchiveTreeModel) tree.getModel(); } - String name = getFullName(node.name); + String name = node.name + ".class"; if (name.contains("/") ? (!name.split("/")[name.split("/").length - 1].contains("$")) : (!name.contains("$"))) { model.paths.add(name); @@ -801,6 +800,7 @@ public class Main extends JFrame { public static void selectFile(String s) { if (s != null && s.endsWith(".class")) { + s = s.substring(0, s.length() - 6); currentNodeName = s; decompileCurrentNode(); txtByteEditView.setCaretPosition(0); @@ -855,10 +855,8 @@ public class Main extends JFrame { try { EventQueue.invokeAndWait(new Runnable() { public void run() { - synchronized (treeLock) { - isChangingFile = false; - Main.this.setTitle("ByteEdit"); - } + isChangingFile = false; + Main.this.setTitle("ByteEdit"); } }); } catch (Exception e) { @@ -917,7 +915,7 @@ public class Main extends JFrame { for (ClassNode node : classes) { ClassWriter writer = new ClassWriter(computeFlags); node.accept(writer); - output.putNextEntry(new ZipEntry(getFullName(node.name))); + output.putNextEntry(new ZipEntry(node.name + ".class")); output.write(writer.toByteArray()); output.closeEntry(); } @@ -943,8 +941,4 @@ public class Main extends JFrame { public static void showError(String s) { JOptionPane.showMessageDialog(INSTANCE, s, "Error!", JOptionPane.ERROR_MESSAGE); } - - public static String getFullName(String s) { - return s + ".class"; - } }