diff options
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java b/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java index 2318a2b..4beab7f 100644 --- a/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java +++ b/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java | |||
| @@ -11,32 +11,31 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.analysis; | 12 | package cuchaz.enigma.analysis; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.bytecode.AccessFlags; | 14 | import cuchaz.enigma.analysis.index.JarIndex; |
| 15 | import cuchaz.enigma.mapping.*; | 15 | import cuchaz.enigma.analysis.index.ReferenceIndex; |
| 16 | import cuchaz.enigma.mapping.entry.FieldEntry; | 16 | import cuchaz.enigma.translation.Translator; |
| 17 | import cuchaz.enigma.mapping.entry.MethodDefEntry; | 17 | import cuchaz.enigma.translation.representation.entry.FieldEntry; |
| 18 | import cuchaz.enigma.mapping.entry.MethodEntry; | 18 | import cuchaz.enigma.translation.representation.entry.MethodDefEntry; |
| 19 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | ||
| 19 | 20 | ||
| 20 | import javax.swing.tree.DefaultMutableTreeNode; | 21 | import javax.swing.tree.DefaultMutableTreeNode; |
| 21 | 22 | ||
| 22 | public class FieldReferenceTreeNode extends DefaultMutableTreeNode implements ReferenceTreeNode<FieldEntry, MethodDefEntry> { | 23 | public class FieldReferenceTreeNode extends DefaultMutableTreeNode implements ReferenceTreeNode<FieldEntry, MethodDefEntry> { |
| 23 | 24 | ||
| 24 | private Translator deobfuscatingTranslator; | 25 | private final Translator translator; |
| 25 | private FieldEntry entry; | 26 | private FieldEntry entry; |
| 26 | private EntryReference<FieldEntry, MethodDefEntry> reference; | 27 | private EntryReference<FieldEntry, MethodDefEntry> reference; |
| 27 | private AccessFlags access; | ||
| 28 | 28 | ||
| 29 | public FieldReferenceTreeNode(Translator deobfuscatingTranslator, FieldEntry entry) { | 29 | public FieldReferenceTreeNode(Translator translator, FieldEntry entry) { |
| 30 | this.deobfuscatingTranslator = deobfuscatingTranslator; | 30 | this.translator = translator; |
| 31 | this.entry = entry; | 31 | this.entry = entry; |
| 32 | this.reference = null; | 32 | this.reference = null; |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | private FieldReferenceTreeNode(Translator deobfuscatingTranslator, EntryReference<FieldEntry, MethodDefEntry> reference, AccessFlags access) { | 35 | private FieldReferenceTreeNode(Translator translator, EntryReference<FieldEntry, MethodDefEntry> reference) { |
| 36 | this.deobfuscatingTranslator = deobfuscatingTranslator; | 36 | this.translator = translator; |
| 37 | this.entry = reference.entry; | 37 | this.entry = reference.entry; |
| 38 | this.reference = reference; | 38 | this.reference = reference; |
| 39 | this.access = access; | ||
| 40 | } | 39 | } |
| 41 | 40 | ||
| 42 | @Override | 41 | @Override |
| @@ -52,27 +51,29 @@ public class FieldReferenceTreeNode extends DefaultMutableTreeNode implements Re | |||
| 52 | @Override | 51 | @Override |
| 53 | public String toString() { | 52 | public String toString() { |
| 54 | if (this.reference != null) { | 53 | if (this.reference != null) { |
| 55 | return String.format("%s (%s)", this.deobfuscatingTranslator.getTranslatedMethodDef(this.reference.context), this.access); | 54 | return String.format("%s", translator.translate(this.reference.context)); |
| 56 | } | 55 | } |
| 57 | return deobfuscatingTranslator.getTranslatedField(entry).getName(); | 56 | return translator.translate(entry).toString(); |
| 58 | } | 57 | } |
| 59 | 58 | ||
| 60 | public void load(JarIndex index, boolean recurse) { | 59 | public void load(JarIndex index, boolean recurse) { |
| 60 | ReferenceIndex referenceIndex = index.getReferenceIndex(); | ||
| 61 | |||
| 61 | // get all the child nodes | 62 | // get all the child nodes |
| 62 | if (this.reference == null) { | 63 | if (this.reference == null) { |
| 63 | for (EntryReference<FieldEntry, MethodDefEntry> reference : index.getFieldReferences(this.entry)) { | 64 | for (EntryReference<FieldEntry, MethodDefEntry> reference : referenceIndex.getReferencesToField(this.entry)) { |
| 64 | add(new FieldReferenceTreeNode(this.deobfuscatingTranslator, reference, index.getAccessFlags(this.entry))); | 65 | add(new FieldReferenceTreeNode(translator, reference)); |
| 65 | } | 66 | } |
| 66 | } else { | 67 | } else { |
| 67 | for (EntryReference<MethodEntry, MethodDefEntry> reference : index.getMethodsReferencing(this.reference.context)) { | 68 | for (EntryReference<MethodEntry, MethodDefEntry> reference : referenceIndex.getReferencesToMethod(this.reference.context)) { |
| 68 | add(new MethodReferenceTreeNode(this.deobfuscatingTranslator, reference, index.getAccessFlags(this.reference.context))); | 69 | add(new MethodReferenceTreeNode(translator, reference)); |
| 69 | } | 70 | } |
| 70 | } | 71 | } |
| 71 | 72 | ||
| 72 | if (recurse && children != null) { | 73 | if (recurse && children != null) { |
| 73 | for (Object node : children) { | 74 | for (Object node : children) { |
| 74 | if (node instanceof MethodReferenceTreeNode) { | 75 | if (node instanceof MethodReferenceTreeNode) { |
| 75 | ((MethodReferenceTreeNode) node).load(index, true); | 76 | ((MethodReferenceTreeNode) node).load(index, true, false); |
| 76 | } else if (node instanceof FieldReferenceTreeNode) { | 77 | } else if (node instanceof FieldReferenceTreeNode) { |
| 77 | ((FieldReferenceTreeNode) node).load(index, true); | 78 | ((FieldReferenceTreeNode) node).load(index, true); |
| 78 | } | 79 | } |