From 6032f55ede3c1b550cfd83b2f768926c992d9a98 Mon Sep 17 00:00:00 2001 From: Thog Date: Fri, 12 Aug 2016 19:59:54 +0200 Subject: Remoe JSON directory format support and clean up others things --- src/main/java/cuchaz/enigma/CommandMain.java | 8 +- src/main/java/cuchaz/enigma/Main.java | 2 +- .../java/cuchaz/enigma/bytecode/ClassRenamer.java | 10 +- .../cuchaz/enigma/bytecode/ClassTranslator.java | 2 + src/main/java/cuchaz/enigma/gui/Gui.java | 17 ++- src/main/java/cuchaz/enigma/gui/GuiController.java | 16 --- .../java/cuchaz/enigma/gui/elements/MenuBar.java | 54 +++------- .../java/cuchaz/enigma/gui/panels/PanelEditor.java | 2 + src/main/java/cuchaz/enigma/json/JsonArgument.java | 20 ---- src/main/java/cuchaz/enigma/json/JsonClass.java | 58 ---------- .../java/cuchaz/enigma/json/JsonConstructor.java | 27 ----- src/main/java/cuchaz/enigma/json/JsonField.java | 25 ----- src/main/java/cuchaz/enigma/json/JsonMethod.java | 33 ------ src/main/java/cuchaz/enigma/mapping/Mappings.java | 2 +- .../cuchaz/enigma/mapping/MappingsJsonReader.java | 120 --------------------- .../cuchaz/enigma/mapping/MappingsJsonWriter.java | 101 ----------------- 16 files changed, 32 insertions(+), 465 deletions(-) delete mode 100644 src/main/java/cuchaz/enigma/json/JsonArgument.java delete mode 100644 src/main/java/cuchaz/enigma/json/JsonClass.java delete mode 100644 src/main/java/cuchaz/enigma/json/JsonConstructor.java delete mode 100644 src/main/java/cuchaz/enigma/json/JsonField.java delete mode 100644 src/main/java/cuchaz/enigma/json/JsonMethod.java delete mode 100644 src/main/java/cuchaz/enigma/mapping/MappingsJsonReader.java delete mode 100644 src/main/java/cuchaz/enigma/mapping/MappingsJsonWriter.java (limited to 'src') diff --git a/src/main/java/cuchaz/enigma/CommandMain.java b/src/main/java/cuchaz/enigma/CommandMain.java index 4e3f447..0678458 100644 --- a/src/main/java/cuchaz/enigma/CommandMain.java +++ b/src/main/java/cuchaz/enigma/CommandMain.java @@ -15,7 +15,7 @@ import java.util.jar.JarFile; import cuchaz.enigma.Deobfuscator.ProgressListener; import cuchaz.enigma.mapping.Mappings; -import cuchaz.enigma.mapping.MappingsJsonReader; +import cuchaz.enigma.mapping.MappingsEnigmaReader; public class CommandMain { @@ -47,7 +47,7 @@ public class CommandMain { this.lastReportTime = now; } if (isLastUpdate) { - double elapsedSeconds = (now - this.startTime) / 1000; + double elapsedSeconds = (now - this.startTime) / 1000.0; System.out.println(String.format("Finished in %.1f seconds", elapsedSeconds)); } } @@ -119,7 +119,7 @@ public class CommandMain { Deobfuscator deobfuscator = new Deobfuscator(jar); if (fileMappings != null) { System.out.println("Reading mappings..."); - Mappings mappings = new MappingsJsonReader().read(fileMappings); + Mappings mappings = new MappingsEnigmaReader().read(fileMappings); deobfuscator.setMappings(mappings); } return deobfuscator; @@ -143,7 +143,7 @@ public class CommandMain { File file = new File(path).getAbsoluteFile(); File dir = file.getParentFile(); if (dir == null) { - throw new IllegalArgumentException("Cannot write to folder: " + dir); + throw new IllegalArgumentException("Cannot write file: " + path); } // quick fix to avoid stupid stuff in Gradle code if (!dir.isDirectory()) { diff --git a/src/main/java/cuchaz/enigma/Main.java b/src/main/java/cuchaz/enigma/Main.java index 0be1d90..c141982 100644 --- a/src/main/java/cuchaz/enigma/Main.java +++ b/src/main/java/cuchaz/enigma/Main.java @@ -28,7 +28,7 @@ public class Main { gui.getController().openJar(new JarFile(getFile(args[0]))); } if (args.length >= 2) { - gui.getController().openJsonMappings(getFile(args[1])); + gui.getController().openEnigmaMappings(getFile(args[1])); } // DEBUG diff --git a/src/main/java/cuchaz/enigma/bytecode/ClassRenamer.java b/src/main/java/cuchaz/enigma/bytecode/ClassRenamer.java index 944e486..4a77eec 100644 --- a/src/main/java/cuchaz/enigma/bytecode/ClassRenamer.java +++ b/src/main/java/cuchaz/enigma/bytecode/ClassRenamer.java @@ -241,10 +241,7 @@ public class ClassRenamer { private static String renameClassSignature(String signature, ReplacerClassMap map) { try { ClassSignature type = renameType(SignatureAttribute.toClassSignature(signature), map); - if (type != null) { - return type.encode(); - } - return null; + return type.encode(); } catch (BadBytecode ex) { throw new Error("Can't parse field signature: " + signature); } @@ -265,10 +262,7 @@ public class ClassRenamer { private static String renameMethodSignature(String signature, ReplacerClassMap map) { try { MethodSignature type = renameType(SignatureAttribute.toMethodSignature(signature), map); - if (type != null) { - return type.encode(); - } - return null; + return type.encode(); } catch (BadBytecode ex) { throw new Error("Can't parse method signature: " + signature); } diff --git a/src/main/java/cuchaz/enigma/bytecode/ClassTranslator.java b/src/main/java/cuchaz/enigma/bytecode/ClassTranslator.java index 8fdd851..6c05b83 100644 --- a/src/main/java/cuchaz/enigma/bytecode/ClassTranslator.java +++ b/src/main/java/cuchaz/enigma/bytecode/ClassTranslator.java @@ -68,6 +68,8 @@ public class ClassTranslator { } } break; + default: + break; } } diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java index 2269476..262c8b6 100644 --- a/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/src/main/java/cuchaz/enigma/gui/Gui.java @@ -79,7 +79,6 @@ public class Gui { public EntryReference m_reference; public JFileChooser jarFileChooser; - public JFileChooser jsonMappingsFileChooser; public JFileChooser enigmaMappingsFileChooser; public JFileChooser exportSourceFileChooser; @@ -107,7 +106,6 @@ public class Gui { // init file choosers this.jarFileChooser = new FileChooserFile(); - this.jsonMappingsFileChooser = new FileChooserFolder(); this.enigmaMappingsFileChooser = new FileChooserAny(); @@ -317,9 +315,7 @@ public class Gui { // update menu this.menuBar.closeJarMenu.setEnabled(true); this.menuBar.openEnigmaMappingsMenu.setEnabled(true); - this.menuBar.openMappingsJsonMenu.setEnabled(true); this.menuBar.saveMappingsMenu.setEnabled(false); - this.menuBar.saveMappingsJsonMenu.setEnabled(true); this.menuBar.saveMappingEnigmaFileMenu.setEnabled(true); this.menuBar.saveMappingEnigmaDirectoryMenu.setEnabled(true); this.menuBar.saveMappingsSrgMenu.setEnabled(true); @@ -341,9 +337,7 @@ public class Gui { // update menu this.menuBar.closeJarMenu.setEnabled(false); this.menuBar.openEnigmaMappingsMenu.setEnabled(false); - this.menuBar.openMappingsJsonMenu.setEnabled(false); this.menuBar.saveMappingsMenu.setEnabled(false); - this.menuBar.saveMappingsJsonMenu.setEnabled(false); this.menuBar.saveMappingEnigmaFileMenu.setEnabled(false); this.menuBar.saveMappingEnigmaDirectoryMenu.setEnabled(false); this.menuBar.saveMappingsSrgMenu.setEnabled(false); @@ -363,7 +357,7 @@ public class Gui { } public void setMappingsFile(File file) { - this.jsonMappingsFileChooser.setSelectedFile(file); + this.enigmaMappingsFileChooser.setSelectedFile(file); this.menuBar.saveMappingsMenu.setEnabled(file != null); } @@ -564,6 +558,8 @@ public class Gui { case KeyEvent.VK_ESCAPE: finishRename(text, false); break; + default: + break; } } }); @@ -668,7 +664,6 @@ public class Gui { } public void showCalls() { - if (m_reference == null) { return; } @@ -724,9 +719,9 @@ public class Gui { JOptionPane.QUESTION_MESSAGE, null, options, options[2]); switch (response) { case JOptionPane.YES_OPTION: // save and exit - if (this.jsonMappingsFileChooser.getSelectedFile() != null || this.jsonMappingsFileChooser.showSaveDialog(this.frame) == JFileChooser.APPROVE_OPTION) { + if (this.enigmaMappingsFileChooser.getSelectedFile() != null || this.enigmaMappingsFileChooser.showSaveDialog(this.frame) == JFileChooser.APPROVE_OPTION) { try { - this.controller.saveMappings(this.jsonMappingsFileChooser.getCurrentDirectory()); + this.controller.saveMappings(this.enigmaMappingsFileChooser.getCurrentDirectory()); this.frame.dispose(); } catch (IOException ex) { throw new Error(ex); @@ -738,6 +733,8 @@ public class Gui { // don't save, exit this.frame.dispose(); break; + default: + break; // cancel means do nothing } diff --git a/src/main/java/cuchaz/enigma/gui/GuiController.java b/src/main/java/cuchaz/enigma/gui/GuiController.java index d416345..68f7c56 100644 --- a/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -72,14 +72,6 @@ public class GuiController { refreshCurrentClass(); } - public void openJsonMappings(File file) throws IOException { - this.deobfuscator.setMappings(new MappingsJsonReader().read(file)); - this.isDirty = false; - this.gui.setMappingsFile(file); - refreshClasses(); - refreshCurrentClass(); - } - public void saveMappings(File file) throws IOException { Mappings mappings = this.deobfuscator.getMappings(); switch (mappings.getOriginMappingFormat()) @@ -87,9 +79,6 @@ public class GuiController { case SRG_FILE: saveSRGMappings(file); break; - case JSON_DIRECTORY: - saveJsonMappings(file); - break; default: saveEnigmaMappings(file, Mappings.FormatType.ENIGMA_FILE != mappings.getOriginMappingFormat()); break; @@ -97,11 +86,6 @@ public class GuiController { } - public void saveJsonMappings(File file) throws IOException { - new MappingsJsonWriter().write(file, this.deobfuscator.getMappings()); - this.isDirty = false; - } - public void saveEnigmaMappings(File file, boolean isDirectoryFormat) throws IOException { new MappingsEnigmaWriter().write(file, this.deobfuscator.getMappings(), isDirectoryFormat); this.isDirty = false; diff --git a/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index e988d74..038698b 100644 --- a/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java @@ -17,11 +17,9 @@ public class MenuBar extends JMenuBar { public final JMenuItem closeJarMenu; - public final JMenuItem openMappingsJsonMenu; public final JMenuItem openEnigmaMappingsMenu; public final JMenuItem saveMappingsMenu; - public final JMenuItem saveMappingsJsonMenu; public final JMenuItem saveMappingEnigmaFileMenu; public final JMenuItem saveMappingEnigmaDirectoryMenu; public final JMenuItem saveMappingsSrgMenu; @@ -64,6 +62,7 @@ public class MenuBar extends JMenuBar { } menu.addSeparator(); JMenu openMenu = new JMenu("Open Mappings..."); + menu.add(openMenu); { JMenuItem item = new JMenuItem("Enigma"); openMenu.add(item); @@ -80,27 +79,12 @@ public class MenuBar extends JMenuBar { }); this.openEnigmaMappingsMenu = item; } - menu.add(openMenu); - { - JMenuItem item = new JMenuItem("JSON (directory)"); - openMenu.add(item); - item.addActionListener(event -> { - if (this.gui.jsonMappingsFileChooser.showOpenDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { - try { - this.gui.getController().openJsonMappings(this.gui.jsonMappingsFileChooser.getSelectedFile()); - } catch (IOException ex) { - throw new Error(ex); - } - } - }); - this.openMappingsJsonMenu = item; - } { JMenuItem item = new JMenuItem("Save Mappings"); menu.add(item); item.addActionListener(event -> { try { - this.gui.getController().saveMappings(this.gui.jsonMappingsFileChooser.getSelectedFile()); + this.gui.getController().saveMappings(this.gui.enigmaMappingsFileChooser.getSelectedFile()); } catch (IOException ex) { throw new Error(ex); } @@ -109,13 +93,15 @@ public class MenuBar extends JMenuBar { this.saveMappingsMenu = item; } JMenu saveMenu = new JMenu("Save Mappings As..."); + menu.add(saveMenu); { JMenuItem item = new JMenuItem("Enigma (single file)"); saveMenu.add(item); item.addActionListener(event -> { - if (this.gui.jsonMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { + // TODO: Use a specific file chooser for it + if (this.gui.enigmaMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { try { - this.gui.getController().saveEnigmaMappings(this.gui.jsonMappingsFileChooser.getSelectedFile(), false); + this.gui.getController().saveEnigmaMappings(this.gui.enigmaMappingsFileChooser.getSelectedFile(), false); this.saveMappingsMenu.setEnabled(true); } catch (IOException ex) { throw new Error(ex); @@ -128,9 +114,10 @@ public class MenuBar extends JMenuBar { JMenuItem item = new JMenuItem("Enigma (directory)"); saveMenu.add(item); item.addActionListener(event -> { - if (this.gui.jsonMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { + // TODO: Use a specific file chooser for it + if (this.gui.enigmaMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { try { - this.gui.getController().saveEnigmaMappings(this.gui.jsonMappingsFileChooser.getSelectedFile(), true); + this.gui.getController().saveEnigmaMappings(this.gui.enigmaMappingsFileChooser.getSelectedFile(), true); this.saveMappingsMenu.setEnabled(true); } catch (IOException ex) { throw new Error(ex); @@ -140,29 +127,14 @@ public class MenuBar extends JMenuBar { item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); this.saveMappingEnigmaDirectoryMenu = item; } - menu.add(saveMenu); - { - JMenuItem item = new JMenuItem("JSON (directory)"); - saveMenu.add(item); - item.addActionListener(event -> { - if (this.gui.jsonMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { - try { - this.gui.getController().saveJsonMappings(this.gui.jsonMappingsFileChooser.getSelectedFile()); - this.saveMappingsMenu.setEnabled(true); - } catch (IOException ex) { - throw new Error(ex); - } - } - }); - this.saveMappingsJsonMenu = item; - } { - JMenuItem item = new JMenuItem("SRG"); + JMenuItem item = new JMenuItem("SRG (single file)"); saveMenu.add(item); item.addActionListener(event -> { - if (this.gui.jsonMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { + // TODO: Use a specific file chooser for it + if (this.gui.enigmaMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { try { - this.gui.getController().saveSRGMappings(this.gui.jsonMappingsFileChooser.getSelectedFile()); + this.gui.getController().saveSRGMappings(this.gui.enigmaMappingsFileChooser.getSelectedFile()); this.saveMappingsMenu.setEnabled(true); } catch (IOException ex) { throw new Error(ex); diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java b/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java index 6237710..1c0ee9e 100644 --- a/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java +++ b/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java @@ -50,6 +50,8 @@ public class PanelEditor extends JEditorPane { case KeyEvent.VK_T: gui.popupMenu.toggleMappingMenu.doClick(); break; + default: + break; } } }); diff --git a/src/main/java/cuchaz/enigma/json/JsonArgument.java b/src/main/java/cuchaz/enigma/json/JsonArgument.java deleted file mode 100644 index 4600c87..0000000 --- a/src/main/java/cuchaz/enigma/json/JsonArgument.java +++ /dev/null @@ -1,20 +0,0 @@ -package cuchaz.enigma.json; - -public class JsonArgument { - - private int index; - private String name; - - public JsonArgument(int index, String name) { - this.index = index; - this.name = name; - } - - public int getIndex() { - return index; - } - - public String getName() { - return name; - } -} diff --git a/src/main/java/cuchaz/enigma/json/JsonClass.java b/src/main/java/cuchaz/enigma/json/JsonClass.java deleted file mode 100644 index dc646bc..0000000 --- a/src/main/java/cuchaz/enigma/json/JsonClass.java +++ /dev/null @@ -1,58 +0,0 @@ -package cuchaz.enigma.json; - -import java.util.ArrayList; -import java.util.List; - -public class JsonClass { - private String obf; - private String name; - private List field = new ArrayList<>(); - private List constructors = new ArrayList<>(); - private List method = new ArrayList<>(); - private List innerClass = new ArrayList<>(); - - public JsonClass(String obf, String name) { - this.obf = obf; - this.name = name; - } - - public void addField(JsonField jsonField) { - this.field.add(jsonField); - } - - public void addConstructor(JsonConstructor jsonConstructor) { - this.constructors.add(jsonConstructor); - } - - public void addMethod(JsonMethod jsonMethod) { - this.method.add(jsonMethod); - } - - public void addInnerClass(JsonClass jsonInnerClass) { - this.innerClass.add(jsonInnerClass); - } - - public String getObf() { - return obf; - } - - public String getName() { - return name; - } - - public List getField() { - return field; - } - - public List getConstructors() { - return constructors; - } - - public List getMethod() { - return method; - } - - public List getInnerClass() { - return innerClass; - } -} diff --git a/src/main/java/cuchaz/enigma/json/JsonConstructor.java b/src/main/java/cuchaz/enigma/json/JsonConstructor.java deleted file mode 100644 index 8cbecf7..0000000 --- a/src/main/java/cuchaz/enigma/json/JsonConstructor.java +++ /dev/null @@ -1,27 +0,0 @@ -package cuchaz.enigma.json; - -import java.util.List; - -public class JsonConstructor { - private String signature; - private List args; - private boolean statics; - - public JsonConstructor(String signature, List args, boolean statics) { - this.signature = signature; - this.args = args; - this.statics = statics; - } - - public String getSignature() { - return signature; - } - - public List getArgs() { - return args; - } - - public boolean isStatics() { - return statics; - } -} diff --git a/src/main/java/cuchaz/enigma/json/JsonField.java b/src/main/java/cuchaz/enigma/json/JsonField.java deleted file mode 100644 index c55a5e9..0000000 --- a/src/main/java/cuchaz/enigma/json/JsonField.java +++ /dev/null @@ -1,25 +0,0 @@ -package cuchaz.enigma.json; - -public class JsonField { - private String obf; - private String name; - private String type; - - public JsonField(String obf, String name, String type) { - this.obf = obf; - this.name = name; - this.type = type; - } - - public String getObf() { - return this.obf; - } - - public String getName() { - return this.name; - } - - public String getType() { - return this.type; - } -} diff --git a/src/main/java/cuchaz/enigma/json/JsonMethod.java b/src/main/java/cuchaz/enigma/json/JsonMethod.java deleted file mode 100644 index 7ec4480..0000000 --- a/src/main/java/cuchaz/enigma/json/JsonMethod.java +++ /dev/null @@ -1,33 +0,0 @@ -package cuchaz.enigma.json; - -import java.util.List; - -public class JsonMethod { - private String obf; - private String name; - private String signature; - private List args; - - public JsonMethod(String obf, String name, String signature, List args) { - this.obf = obf; - this.name = name; - this.signature = signature; - this.args = args; - } - - public String getObf() { - return obf; - } - - public String getName() { - return name; - } - - public String getSignature() { - return signature; - } - - public List getArgs() { - return args; - } -} diff --git a/src/main/java/cuchaz/enigma/mapping/Mappings.java b/src/main/java/cuchaz/enigma/mapping/Mappings.java index 1f4ca02..538c67e 100644 --- a/src/main/java/cuchaz/enigma/mapping/Mappings.java +++ b/src/main/java/cuchaz/enigma/mapping/Mappings.java @@ -160,6 +160,6 @@ public class Mappings { public enum FormatType { - JSON_DIRECTORY, ENIGMA_FILE, ENIGMA_DIRECTORY, SRG_FILE + ENIGMA_FILE, ENIGMA_DIRECTORY, SRG_FILE } } diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsJsonReader.java b/src/main/java/cuchaz/enigma/mapping/MappingsJsonReader.java deleted file mode 100644 index 8f5bde3..0000000 --- a/src/main/java/cuchaz/enigma/mapping/MappingsJsonReader.java +++ /dev/null @@ -1,120 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Jeff Martin. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser General Public - * License v3.0 which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/lgpl.html - *

- * Contributors: - * Jeff Martin - initial API and implementation - ******************************************************************************/ -package cuchaz.enigma.mapping; - -import com.google.common.base.Charsets; -import com.google.common.io.Files; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import java.io.*; - -import cuchaz.enigma.json.JsonClass; -import cuchaz.enigma.throwables.MappingConflict; - -public class MappingsJsonReader { - - public Mappings read(File in) throws IOException { - Mappings mappings = new Mappings(Mappings.FormatType.JSON_DIRECTORY); - readDirectory(mappings, in); - return mappings; - } - - public void readDirectory(Mappings mappings, File in) throws IOException { - File[] fList = in.listFiles(); - if (fList != null) { - for (File file : fList) { - if (file.isFile() && Files.getFileExtension(file.getName()).equalsIgnoreCase("json")) { - readFile(mappings, new BufferedReader(new InputStreamReader(new FileInputStream(file), - Charsets.UTF_8))); - } else if (file.isDirectory()) { - readDirectory(mappings, file.getAbsoluteFile()); - } - } - } - } - - public void readFile(Mappings mappings, BufferedReader in) throws IOException { - StringBuilder buf = new StringBuilder(); - String line; - while ((line = in.readLine()) != null) { - buf.append(line); - } - - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - JsonClass jsonClass = gson.fromJson(buf.toString(), JsonClass.class); - try { - load(null, jsonClass, mappings); - } catch (MappingConflict e) { - e.printStackTrace(); - } - in.close(); - } - - public void load(ClassMapping parent, JsonClass jsonClass, Mappings mappings) throws MappingConflict { - ClassMapping classMapping = readClass(jsonClass.getObf(), jsonClass.getName()); - if (parent != null) { - parent.addInnerClassMapping(classMapping); - } else { - mappings.addClassMapping(classMapping); - } - jsonClass.getField().forEach(jsonField -> classMapping.addFieldMapping(readField(jsonField.getObf(), jsonField.getName(), jsonField.getType()))); - - jsonClass.getConstructors().forEach(jsonConstructor -> { - MethodMapping methodMapping = readMethod(jsonConstructor.isStatics() ? "" : "", null, jsonConstructor.getSignature()); - jsonConstructor.getArgs().forEach(jsonArgument -> { - try { - methodMapping.addArgumentMapping(readArgument(jsonArgument.getIndex(), jsonArgument.getName())); - } catch (MappingConflict e) { - e.printStackTrace(); - } - }); - classMapping.addMethodMapping(methodMapping); - }); - - jsonClass.getMethod().forEach(jsonMethod -> { - MethodMapping methodMapping = readMethod(jsonMethod.getObf(), jsonMethod.getName(), jsonMethod.getSignature()); - jsonMethod.getArgs().forEach(jsonArgument -> { - try { - methodMapping.addArgumentMapping(readArgument(jsonArgument.getIndex(), jsonArgument.getName())); - } catch (MappingConflict e) { - e.printStackTrace(); - } - }); - classMapping.addMethodMapping(methodMapping); - }); - - jsonClass.getInnerClass().forEach(jsonInnerClasses -> { - try { - load(classMapping, jsonInnerClasses, mappings); - } catch (MappingConflict e) { - e.printStackTrace(); - } - }); - } - - private ArgumentMapping readArgument(int index, String name) { - return new ArgumentMapping(index, name); - } - - private ClassMapping readClass(String obf, String deobf) { - return new ClassMapping("none/" + obf, deobf); - } - - /* TEMP */ - protected FieldMapping readField(String obf, String deobf, String sig) { - return new FieldMapping(obf, new Type(sig), deobf); - } - - private MethodMapping readMethod(String obf, String deobf, String sig) { - return new MethodMapping(obf, new Signature(sig), deobf); - } -} diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsJsonWriter.java b/src/main/java/cuchaz/enigma/mapping/MappingsJsonWriter.java deleted file mode 100644 index db95322..0000000 --- a/src/main/java/cuchaz/enigma/mapping/MappingsJsonWriter.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Jeff Martin. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser General Public - * License v3.0 which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/lgpl.html - *

- * Contributors: - * Jeff Martin - initial API and implementation - ******************************************************************************/ -package cuchaz.enigma.mapping; - -import com.google.common.base.Charsets; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import java.io.*; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import cuchaz.enigma.json.*; - -public class MappingsJsonWriter { - - public void write(File file, Mappings mappings) throws IOException { - if (!file.isDirectory()) { - return; - } - - String[] entries = file.list(); - for (String s : entries) { - File currentFile = new File(file.getPath(), s); - deleteDirectory(currentFile); - } - - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - for (ClassMapping classMapping : sorted(mappings.classes())) { - if (classMapping.getDeobfName() != null && !classMapping.getDeobfName().equalsIgnoreCase("") && !classMapping.getDeobfName().equalsIgnoreCase("null")) { - JsonClass jsonClass = new JsonClass(classMapping.getObfSimpleName(), classMapping.getDeobfName()); - write(jsonClass, classMapping); - - File f = new File(file, jsonClass.getName() + ".json"); - f.getParentFile().mkdirs(); - f.createNewFile(); - PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(f), Charsets.UTF_8)); - writer.write(gson.toJson(jsonClass)); - writer.close(); - } - } - } - - private void write(JsonClass jsonClass, ClassMapping classMapping) { - for (ClassMapping innerClassMapping : sorted(classMapping.innerClasses())) { - JsonClass innerClass = new JsonClass(classMapping.getObfSimpleName() + "$" + innerClassMapping.getObfSimpleName().replace("nome/", ""), innerClassMapping.getDeobfName()); - write(innerClass, innerClassMapping); - jsonClass.addInnerClass(innerClass); - } - - for (FieldMapping fieldMapping : sorted(classMapping.fields())) { - jsonClass.addField(new JsonField(fieldMapping.getObfName(), fieldMapping.getDeobfName(), fieldMapping.getObfType().toString())); - } - - for (MethodMapping methodMapping : sorted(classMapping.methods())) { - List args = new ArrayList<>(); - for (ArgumentMapping argumentMapping : sorted(methodMapping.arguments())) { - args.add(new JsonArgument(argumentMapping.getIndex(), argumentMapping.getName())); - } - if (methodMapping.getObfName().contains("") || methodMapping.getObfName().contains("")) { - jsonClass.addConstructor(new JsonConstructor(methodMapping.getObfSignature().toString(), args, methodMapping.getObfName().contains(""))); - } else { - jsonClass.addMethod(new JsonMethod(methodMapping.getObfName(), methodMapping.getDeobfName(), methodMapping.getObfSignature().toString(), args)); - } - } - } - - private > List sorted(Iterable classes) { - List out = new ArrayList<>(); - for (T t : classes) { - out.add(t); - } - Collections.sort(out); - return out; - } - - public static boolean deleteDirectory(File directory) { - if (directory.exists()) { - File[] files = directory.listFiles(); - if (null != files) { - for (int i = 0; i < files.length; i++) { - if (files[i].isDirectory()) { - deleteDirectory(files[i]); - } else { - files[i].delete(); - } - } - } - } - return (directory.delete()); - } -} -- cgit v1.2.3