summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar lclc982016-07-02 15:10:44 +1000
committerGravatar lclc982016-07-02 15:10:44 +1000
commitc1d7c42de903cc471f21d78072f1a973d08d2a49 (patch)
tree17dd4e0fa7ae7a61a6f5aea4f19e5e8f166ddb50
parentFixed Constructor loading (diff)
downloadenigma-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.java4
-rw-r--r--src/main/java/cuchaz/enigma/mapping/MappingsWriter.java61
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 }