diff options
| author | 2016-07-02 15:10:44 +1000 | |
|---|---|---|
| committer | 2016-07-02 15:10:44 +1000 | |
| commit | c1d7c42de903cc471f21d78072f1a973d08d2a49 (patch) | |
| tree | 17dd4e0fa7ae7a61a6f5aea4f19e5e8f166ddb50 | |
| parent | Fixed Constructor loading (diff) | |
| download | enigma-c1d7c42de903cc471f21d78072f1a973d08d2a49.tar.gz enigma-c1d7c42de903cc471f21d78072f1a973d08d2a49.tar.xz enigma-c1d7c42de903cc471f21d78072f1a973d08d2a49.zip | |
Fixed Null.json and #4
| -rw-r--r-- | src/main/java/cuchaz/enigma/mapping/MappingsReader.java | 4 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/mapping/MappingsWriter.java | 61 |
2 files changed, 34 insertions, 31 deletions
diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsReader.java b/src/main/java/cuchaz/enigma/mapping/MappingsReader.java index ccbbf8d9..7110d40c 100644 --- a/src/main/java/cuchaz/enigma/mapping/MappingsReader.java +++ b/src/main/java/cuchaz/enigma/mapping/MappingsReader.java | |||
| @@ -74,9 +74,7 @@ public class MappingsReader { | |||
| 74 | classMapping.addMethodMapping(methodMapping); | 74 | classMapping.addMethodMapping(methodMapping); |
| 75 | }); | 75 | }); |
| 76 | 76 | ||
| 77 | jsonClass.getInnerClass().forEach(jsonInnerClasses -> { | 77 | jsonClass.getInnerClass().forEach(jsonInnerClasses -> load(classMapping, jsonInnerClasses, mappings)); |
| 78 | load(classMapping, jsonInnerClasses, mappings); | ||
| 79 | }); | ||
| 80 | } | 78 | } |
| 81 | 79 | ||
| 82 | private ArgumentMapping readArgument(int index, String name) { | 80 | private ArgumentMapping readArgument(int index, String name) { |
diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsWriter.java b/src/main/java/cuchaz/enigma/mapping/MappingsWriter.java index aa37f166..89fee4e8 100644 --- a/src/main/java/cuchaz/enigma/mapping/MappingsWriter.java +++ b/src/main/java/cuchaz/enigma/mapping/MappingsWriter.java | |||
| @@ -27,46 +27,51 @@ public class MappingsWriter { | |||
| 27 | 27 | ||
| 28 | public void write(File file, Mappings mappings) throws IOException { | 28 | public void write(File file, Mappings mappings) throws IOException { |
| 29 | if (!file.isDirectory()) { | 29 | if (!file.isDirectory()) { |
| 30 | //TODO Error | 30 | return; |
| 31 | } | ||
| 32 | |||
| 33 | String[] entries = file.list(); | ||
| 34 | for (String s : entries) { | ||
| 35 | File currentFile = new File(file.getPath(), s); | ||
| 36 | currentFile.delete(); | ||
| 31 | } | 37 | } |
| 32 | 38 | ||
| 33 | Gson gson = new GsonBuilder().setPrettyPrinting().create(); | 39 | Gson gson = new GsonBuilder().setPrettyPrinting().create(); |
| 34 | for (ClassMapping classMapping : sorted(mappings.classes())) { | 40 | for (ClassMapping classMapping : sorted(mappings.classes())) { |
| 35 | JsonClass jsonClass = new JsonClass(classMapping.getObfSimpleName(), classMapping.getDeobfName()); | 41 | if (classMapping.getDeobfName() != null && !classMapping.getDeobfName().equalsIgnoreCase("") && !classMapping.getDeobfName().equalsIgnoreCase("null")) { |
| 36 | write(jsonClass, classMapping); | 42 | JsonClass jsonClass = new JsonClass(classMapping.getObfSimpleName(), classMapping.getDeobfName()); |
| 43 | write(jsonClass, classMapping); | ||
| 37 | 44 | ||
| 38 | File f = new File(file, jsonClass.getName() + ".json"); | 45 | File f = new File(file, jsonClass.getName() + ".json"); |
| 39 | f.getParentFile().mkdirs(); | 46 | f.getParentFile().mkdirs(); |
| 40 | f.createNewFile(); | 47 | f.createNewFile(); |
| 41 | FileWriter writer = new FileWriter(f); | 48 | FileWriter writer = new FileWriter(f); |
| 42 | writer.write(gson.toJson(jsonClass)); | 49 | writer.write(gson.toJson(jsonClass)); |
| 43 | writer.close(); | 50 | writer.close(); |
| 51 | } | ||
| 44 | } | 52 | } |
| 45 | } | 53 | } |
| 46 | 54 | ||
| 47 | private void write(JsonClass jsonClass, ClassMapping classMapping) throws IOException { | 55 | private void write(JsonClass jsonClass, ClassMapping classMapping) throws IOException { |
| 48 | if (classMapping.getDeobfName() != null && !classMapping.getDeobfName().equalsIgnoreCase("") && !classMapping.getDeobfName().equalsIgnoreCase("null")) { | 56 | for (ClassMapping innerClassMapping : sorted(classMapping.innerClasses())) { |
| 57 | JsonClass innerClass = new JsonClass(classMapping.getObfSimpleName() + "$" + innerClassMapping.getObfSimpleName().replace("nome/", ""), innerClassMapping.getDeobfName()); | ||
| 58 | write(innerClass, innerClassMapping); | ||
| 59 | jsonClass.addInnerClass(innerClass); | ||
| 60 | } | ||
| 49 | 61 | ||
| 50 | for (ClassMapping innerClassMapping : sorted(classMapping.innerClasses())) { | 62 | for (FieldMapping fieldMapping : sorted(classMapping.fields())) { |
| 51 | JsonClass innerClass = new JsonClass(classMapping.getObfSimpleName() + "$" + innerClassMapping.getObfSimpleName().replace("nome/", ""), innerClassMapping.getDeobfName()); | 63 | jsonClass.addField(new JsonField(fieldMapping.getObfName(), fieldMapping.getDeobfName(), fieldMapping.getObfType().toString())); |
| 52 | write(innerClass, innerClassMapping); | 64 | } |
| 53 | jsonClass.addInnerClass(innerClass); | ||
| 54 | } | ||
| 55 | 65 | ||
| 56 | for (FieldMapping fieldMapping : sorted(classMapping.fields())) { | 66 | for (MethodMapping methodMapping : sorted(classMapping.methods())) { |
| 57 | jsonClass.addField(new JsonField(fieldMapping.getObfName(), fieldMapping.getDeobfName(), fieldMapping.getObfType().toString())); | 67 | List<JsonArgument> args = new ArrayList<>(); |
| 68 | for (ArgumentMapping argumentMapping : sorted(methodMapping.arguments())) { | ||
| 69 | args.add(new JsonArgument(argumentMapping.getIndex(), argumentMapping.getName())); | ||
| 58 | } | 70 | } |
| 59 | 71 | if (methodMapping.getObfName().contains("<init>") || methodMapping.getObfName().contains("<clinit>")) { | |
| 60 | for (MethodMapping methodMapping : sorted(classMapping.methods())) { | 72 | jsonClass.addConstructor(new JsonConstructor(methodMapping.getObfSignature().toString(), args, methodMapping.getObfName().contains("<clinit>"))); |
| 61 | List<JsonArgument> args = new ArrayList<>(); | 73 | } else { |
| 62 | for (ArgumentMapping argumentMapping : sorted(methodMapping.arguments())) { | 74 | jsonClass.addMethod(new JsonMethod(methodMapping.getObfName(), methodMapping.getDeobfName(), methodMapping.getObfSignature().toString(), args)); |
| 63 | args.add(new JsonArgument(argumentMapping.getIndex(), argumentMapping.getName())); | ||
| 64 | } | ||
| 65 | if (methodMapping.getObfName().contains("<init>") || methodMapping.getObfName().contains("<clinit>")) { | ||
| 66 | jsonClass.addConstructor(new JsonConstructor(methodMapping.getObfSignature().toString(), args, methodMapping.getObfName().contains("<clinit>"))); | ||
| 67 | } else { | ||
| 68 | jsonClass.addMethod(new JsonMethod(methodMapping.getObfName(), methodMapping.getDeobfName(), methodMapping.getObfSignature().toString(), args)); | ||
| 69 | } | ||
| 70 | } | 75 | } |
| 71 | } | 76 | } |
| 72 | } | 77 | } |