diff options
| author | 2019-01-24 14:48:32 +0200 | |
|---|---|---|
| committer | 2019-01-24 13:48:32 +0100 | |
| commit | 00fcd0550fcdda621c2e4662f6ddd55ce673b931 (patch) | |
| tree | 6f9e4c24dbcc6d118fceec56adf7bf9d747a485c /src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java | |
| parent | mark as 0.13.0-SNAPSHOT for preliminary development (diff) | |
| download | enigma-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.java | 32 |
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 @@ | |||
| 12 | package cuchaz.enigma.analysis; | 12 | package cuchaz.enigma.analysis; |
| 13 | 13 | ||
| 14 | import com.google.common.collect.Lists; | 14 | import com.google.common.collect.Lists; |
| 15 | import cuchaz.enigma.mapping.entry.ClassEntry; | 15 | import cuchaz.enigma.analysis.index.InheritanceIndex; |
| 16 | import cuchaz.enigma.mapping.Translator; | 16 | import cuchaz.enigma.translation.Translator; |
| 17 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | ||
| 17 | 18 | ||
| 18 | import javax.swing.tree.DefaultMutableTreeNode; | 19 | import javax.swing.tree.DefaultMutableTreeNode; |
| 19 | import java.util.List; | 20 | import java.util.List; |
| 20 | 21 | ||
| 21 | public class ClassInheritanceTreeNode extends DefaultMutableTreeNode { | 22 | public 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 |