summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/MethodCallsTreeNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/analysis/MethodCallsTreeNode.java')
-rw-r--r--src/cuchaz/enigma/analysis/MethodCallsTreeNode.java96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/analysis/MethodCallsTreeNode.java b/src/cuchaz/enigma/analysis/MethodCallsTreeNode.java
new file mode 100644
index 0000000..dedfb2e
--- /dev/null
+++ b/src/cuchaz/enigma/analysis/MethodCallsTreeNode.java
@@ -0,0 +1,96 @@
1/*******************************************************************************
2 * Copyright (c) 2014 Jeff Martin.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Public License v3.0
5 * which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/gpl.html
7 *
8 * Contributors:
9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/
11package cuchaz.enigma.analysis;
12
13import java.util.List;
14
15import javax.swing.tree.DefaultMutableTreeNode;
16
17import com.google.common.collect.Lists;
18
19import cuchaz.enigma.mapping.MethodEntry;
20import cuchaz.enigma.mapping.Translator;
21
22public class MethodCallsTreeNode extends DefaultMutableTreeNode
23{
24 private static final long serialVersionUID = -3658163700783307520L;
25
26 private Translator m_deobfuscatingTranslator;
27 private MethodEntry m_entry;
28
29 public MethodCallsTreeNode( Translator deobfuscatingTranslator, MethodEntry entry )
30 {
31 m_deobfuscatingTranslator = deobfuscatingTranslator;
32 m_entry = entry;
33 }
34
35 public MethodEntry getMethodEntry( )
36 {
37 return m_entry;
38 }
39
40 public String getDeobfClassName( )
41 {
42 return m_deobfuscatingTranslator.translateClass( m_entry.getClassName() );
43 }
44
45 public String getDeobfMethodName( )
46 {
47 return m_deobfuscatingTranslator.translate( m_entry );
48 }
49
50 @Override
51 public String toString( )
52 {
53 String className = getDeobfClassName();
54 if( className == null )
55 {
56 className = m_entry.getClassName();
57 }
58
59 String methodName = getDeobfMethodName();
60 if( methodName == null )
61 {
62 methodName = m_entry.getName();
63 }
64 return className + "." + methodName + "()";
65 }
66
67 public void load( JarIndex index, boolean recurse )
68 {
69 // get all the child nodes
70 List<MethodCallsTreeNode> nodes = Lists.newArrayList();
71 for( MethodEntry entry : index.getMethodCallers( m_entry ) )
72 {
73 nodes.add( new MethodCallsTreeNode( m_deobfuscatingTranslator, entry ) );
74 }
75
76 // add them to this node
77 for( MethodCallsTreeNode node : nodes )
78 {
79 this.add( node );
80 }
81
82 if( recurse )
83 {
84 for( MethodCallsTreeNode node : nodes )
85 {
86 // don't recurse into self
87 if( node.getMethodEntry().equals( m_entry ) )
88 {
89 continue;
90 }
91
92 node.load( index, true );
93 }
94 }
95 }
96}