summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java
diff options
context:
space:
mode:
authorGravatar Gegy2019-01-24 14:48:32 +0200
committerGravatar Adrian Siekierka2019-01-24 13:48:32 +0100
commit00fcd0550fcdda621c2e4662f6ddd55ce673b931 (patch)
tree6f9e4c24dbcc6d118fceec56adf7bf9d747a485c /src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java
parentmark as 0.13.0-SNAPSHOT for preliminary development (diff)
downloadenigma-fork-00fcd0550fcdda621c2e4662f6ddd55ce673b931.tar.gz
enigma-fork-00fcd0550fcdda621c2e4662f6ddd55ce673b931.tar.xz
enigma-fork-00fcd0550fcdda621c2e4662f6ddd55ce673b931.zip
[WIP] Mapping rework (#91)
* Move packages * Mapping & entry refactor: first pass * Fix deobf -> obf tree remapping * Resolve various issues * Give all entries the potential for parents and treat inner classes as children * Deobf UI tree elements * Tests pass * Sort mapping output * Fix delta tracking * Index separation and first pass for #97 * Keep track of remapped jar index * Fix child entries not being remapped * Drop non-root entries * Track dropped mappings * Fix enigma mapping ordering * EntryTreeNode interface * Small tweaks * Naive full index remap on rename * Entries can resolve to more than one root entry * Support alternative resolution strategies * Bridge method resolution * Tests pass * Fix mappings being used where there are none * Fix methods with different descriptors being considered unique. closes #89
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java')
-rw-r--r--src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java32
1 files changed, 12 insertions, 20 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java b/src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java
index b8ee17d..7904c5f 100644
--- a/src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java
+++ b/src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java
@@ -12,25 +12,25 @@
12package cuchaz.enigma.analysis; 12package cuchaz.enigma.analysis;
13 13
14import com.google.common.collect.Lists; 14import com.google.common.collect.Lists;
15import cuchaz.enigma.mapping.entry.ClassEntry; 15import cuchaz.enigma.analysis.index.InheritanceIndex;
16import cuchaz.enigma.mapping.Translator; 16import cuchaz.enigma.translation.Translator;
17import cuchaz.enigma.translation.representation.entry.ClassEntry;
17 18
18import javax.swing.tree.DefaultMutableTreeNode; 19import javax.swing.tree.DefaultMutableTreeNode;
19import java.util.List; 20import java.util.List;
20 21
21public class ClassInheritanceTreeNode extends DefaultMutableTreeNode { 22public class ClassInheritanceTreeNode extends DefaultMutableTreeNode {
22 23 private final Translator translator;
23 private final Translator deobfuscatingTranslator;
24 private final ClassEntry obfClassEntry; 24 private final ClassEntry obfClassEntry;
25 25
26 public ClassInheritanceTreeNode(Translator deobfuscatingTranslator, String obfClassName) { 26 public ClassInheritanceTreeNode(Translator translator, String obfClassName) {
27 this.deobfuscatingTranslator = deobfuscatingTranslator; 27 this.translator = translator;
28 this.obfClassEntry = new ClassEntry(obfClassName); 28 this.obfClassEntry = new ClassEntry(obfClassName);
29 } 29 }
30 30
31 public static ClassInheritanceTreeNode findNode(ClassInheritanceTreeNode node, ClassEntry entry) { 31 public static ClassInheritanceTreeNode findNode(ClassInheritanceTreeNode node, ClassEntry entry) {
32 // is this the node? 32 // is this the node?
33 if (node.getObfClassName().equals(entry.getName())) { 33 if (node.getObfClassName().equals(entry.getFullName())) {
34 return node; 34 return node;
35 } 35 }
36 36
@@ -45,27 +45,19 @@ public class ClassInheritanceTreeNode extends DefaultMutableTreeNode {
45 } 45 }
46 46
47 public String getObfClassName() { 47 public String getObfClassName() {
48 return this.obfClassEntry.getClassName(); 48 return this.obfClassEntry.getFullName();
49 }
50
51 public String getDeobfClassName() {
52 return this.deobfuscatingTranslator.getTranslatedClass(this.obfClassEntry).getClassName();
53 } 49 }
54 50
55 @Override 51 @Override
56 public String toString() { 52 public String toString() {
57 String deobfClassName = getDeobfClassName(); 53 return translator.translate(obfClassEntry).getFullName();
58 if (deobfClassName != null) {
59 return deobfClassName;
60 }
61 return this.obfClassEntry.getName();
62 } 54 }
63 55
64 public void load(TranslationIndex ancestries, boolean recurse) { 56 public void load(InheritanceIndex ancestries, boolean recurse) {
65 // get all the child nodes 57 // get all the child nodes
66 List<ClassInheritanceTreeNode> nodes = Lists.newArrayList(); 58 List<ClassInheritanceTreeNode> nodes = Lists.newArrayList();
67 for (ClassEntry subclassEntry : ancestries.getSubclass(this.obfClassEntry)) { 59 for (ClassEntry inheritor : ancestries.getChildren(this.obfClassEntry)) {
68 nodes.add(new ClassInheritanceTreeNode(this.deobfuscatingTranslator, subclassEntry.getName())); 60 nodes.add(new ClassInheritanceTreeNode(translator, inheritor.getFullName()));
69 } 61 }
70 62
71 // add them to this node 63 // add them to this node