1 | |
|
2 | |
|
3 | |
|
4 | |
|
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
|
17 | |
|
18 | |
|
19 | |
|
20 | |
|
21 | |
|
22 | |
|
23 | |
|
24 | |
|
25 | |
|
26 | |
|
27 | |
|
28 | |
|
29 | |
|
30 | |
|
31 | |
|
32 | |
|
33 | |
package com.jeantessier.classreader.impl; |
34 | |
|
35 | |
import java.io.*; |
36 | |
|
37 | |
import org.apache.log4j.*; |
38 | |
|
39 | |
import com.jeantessier.classreader.*; |
40 | |
|
41 | 0 | public class EnclosingMethod_attribute extends Attribute_info implements com.jeantessier.classreader.EnclosingMethod_attribute { |
42 | |
private int classIndex; |
43 | |
private int methodIndex; |
44 | |
|
45 | |
public EnclosingMethod_attribute(ConstantPool constantPool, Visitable owner, DataInput in) throws IOException { |
46 | 12 | super(constantPool, owner); |
47 | |
|
48 | 12 | int byteCount = in.readInt(); |
49 | 12 | Logger.getLogger(getClass()).debug("Attribute length: " + byteCount); |
50 | |
|
51 | 12 | classIndex = in.readUnsignedShort(); |
52 | 12 | Logger.getLogger(getClass()).debug("Class index: " + classIndex + " (" + getClassInfo() + ")"); |
53 | |
|
54 | 12 | methodIndex = in.readUnsignedShort(); |
55 | 12 | Logger.getLogger(getClass()).debug("Method index: " + methodIndex + " (" + getMethod() + ")"); |
56 | 12 | } |
57 | |
|
58 | |
public int getClassIndex() { |
59 | 26 | return classIndex; |
60 | |
} |
61 | |
|
62 | |
public Class_info getRawClassInfo() { |
63 | 13 | return (Class_info) getConstantPool().get(getClassIndex()); |
64 | |
} |
65 | |
|
66 | |
public String getClassInfo() { |
67 | 13 | String result = ""; |
68 | |
|
69 | 13 | if (getClassIndex() != 0) { |
70 | 13 | result = getRawClassInfo().getName(); |
71 | |
} |
72 | |
|
73 | 13 | return result; |
74 | |
} |
75 | |
|
76 | |
public int getMethodIndex() { |
77 | 18 | return methodIndex; |
78 | |
} |
79 | |
|
80 | |
public NameAndType_info getRawMethod() { |
81 | 5 | return (NameAndType_info) getConstantPool().get(getMethodIndex()); |
82 | |
} |
83 | |
|
84 | |
public String getMethod() { |
85 | 13 | String result = ""; |
86 | |
|
87 | 13 | if (getMethodIndex() != 0) { |
88 | 5 | NameAndType_info rawMethod = getRawMethod(); |
89 | 5 | result = rawMethod.getName() + rawMethod.getType(); |
90 | |
} |
91 | |
|
92 | 13 | return result; |
93 | |
} |
94 | |
|
95 | |
public String toString() { |
96 | 0 | return "Enclosing method \"" + getRawMethod().getType() + " " + getClassInfo() + "." + getRawMethod().getName() + "\""; |
97 | |
} |
98 | |
|
99 | |
public String getAttributeName() { |
100 | 1 | return AttributeType.ENCLOSING_METHOD.getAttributeName(); |
101 | |
} |
102 | |
|
103 | |
public void accept(Visitor visitor) { |
104 | 1 | visitor.visitEnclosingMethod_attribute(this); |
105 | 1 | } |
106 | |
} |