1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.bcel.verifier.statics;
19
20
21 import org.apache.bcel.classfile.Annotations;
22 import org.apache.bcel.classfile.Code;
23 import org.apache.bcel.classfile.CodeException;
24 import org.apache.bcel.classfile.ConstantClass;
25 import org.apache.bcel.classfile.ConstantDouble;
26 import org.apache.bcel.classfile.ConstantFieldref;
27 import org.apache.bcel.classfile.ConstantFloat;
28 import org.apache.bcel.classfile.ConstantInteger;
29 import org.apache.bcel.classfile.ConstantInterfaceMethodref;
30 import org.apache.bcel.classfile.ConstantLong;
31 import org.apache.bcel.classfile.ConstantMethodref;
32 import org.apache.bcel.classfile.ConstantNameAndType;
33 import org.apache.bcel.classfile.ConstantPool;
34 import org.apache.bcel.classfile.ConstantString;
35 import org.apache.bcel.classfile.ConstantUtf8;
36 import org.apache.bcel.classfile.ConstantValue;
37 import org.apache.bcel.classfile.Deprecated;
38 import org.apache.bcel.classfile.ExceptionTable;
39 import org.apache.bcel.classfile.Field;
40 import org.apache.bcel.classfile.InnerClass;
41 import org.apache.bcel.classfile.InnerClasses;
42 import org.apache.bcel.classfile.JavaClass;
43 import org.apache.bcel.classfile.LineNumber;
44 import org.apache.bcel.classfile.LineNumberTable;
45 import org.apache.bcel.classfile.LocalVariable;
46 import org.apache.bcel.classfile.LocalVariableTable;
47 import org.apache.bcel.classfile.LocalVariableTypeTable;
48 import org.apache.bcel.classfile.Method;
49 import org.apache.bcel.classfile.Node;
50 import org.apache.bcel.classfile.Signature;
51 import org.apache.bcel.classfile.SourceFile;
52 import org.apache.bcel.classfile.StackMap;
53 import org.apache.bcel.classfile.Synthetic;
54 import org.apache.bcel.classfile.Unknown;
55 import org.apache.bcel.verifier.exc.AssertionViolatedException;
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 public class StringRepresentation extends org.apache.bcel.classfile.EmptyVisitor {
73
74 private String tostring;
75
76 private Node n;
77
78
79
80
81
82
83 public StringRepresentation(Node n) {
84 this.n = n;
85 n.accept(this);
86 }
87
88
89
90
91 @Override
92 public String toString() {
93
94
95
96
97
98 if (tostring == null) {
99 throw new AssertionViolatedException("Please adapt '" + getClass() + "' to deal with objects of class '" + n.getClass() + "'.");
100 }
101 return tostring;
102 }
103
104
105
106
107
108
109 private String toString(Node obj) {
110 String ret;
111 try {
112 ret = obj.toString();
113 }
114 catch (RuntimeException e) {
115 String s = obj.getClass().getName();
116 s = s.substring(s.lastIndexOf(".") + 1);
117 ret = "<<" + s + ">>";
118 }
119 return ret;
120 }
121
122
123
124
125
126
127
128 @Override
129 public void visitCode(Code obj) {
130
131 tostring = "<CODE>";
132 }
133
134 @Override
135 public void visitAnnotation(Annotations obj)
136 {
137
138
139 tostring = toString(obj);
140 }
141
142 @Override
143 public void visitLocalVariableTypeTable(LocalVariableTypeTable obj)
144 {
145
146
147 tostring = toString(obj);
148 }
149
150 @Override
151 public void visitCodeException(CodeException obj) {
152 tostring = toString(obj);
153 }
154
155 @Override
156 public void visitConstantClass(ConstantClass obj) {
157 tostring = toString(obj);
158 }
159
160 @Override
161 public void visitConstantDouble(ConstantDouble obj) {
162 tostring = toString(obj);
163 }
164
165 @Override
166 public void visitConstantFieldref(ConstantFieldref obj) {
167 tostring = toString(obj);
168 }
169
170 @Override
171 public void visitConstantFloat(ConstantFloat obj) {
172 tostring = toString(obj);
173 }
174
175 @Override
176 public void visitConstantInteger(ConstantInteger obj) {
177 tostring = toString(obj);
178 }
179
180 @Override
181 public void visitConstantInterfaceMethodref(ConstantInterfaceMethodref obj) {
182 tostring = toString(obj);
183 }
184
185 @Override
186 public void visitConstantLong(ConstantLong obj) {
187 tostring = toString(obj);
188 }
189
190 @Override
191 public void visitConstantMethodref(ConstantMethodref obj) {
192 tostring = toString(obj);
193 }
194
195 @Override
196 public void visitConstantNameAndType(ConstantNameAndType obj) {
197 tostring = toString(obj);
198 }
199
200 @Override
201 public void visitConstantPool(ConstantPool obj) {
202 tostring = toString(obj);
203 }
204
205 @Override
206 public void visitConstantString(ConstantString obj) {
207 tostring = toString(obj);
208 }
209
210 @Override
211 public void visitConstantUtf8(ConstantUtf8 obj) {
212 tostring = toString(obj);
213 }
214
215 @Override
216 public void visitConstantValue(ConstantValue obj) {
217 tostring = toString(obj);
218 }
219
220 @Override
221 public void visitDeprecated(Deprecated obj) {
222 tostring = toString(obj);
223 }
224
225 @Override
226 public void visitExceptionTable(ExceptionTable obj) {
227 tostring = toString(obj);
228 }
229
230 @Override
231 public void visitField(Field obj) {
232 tostring = toString(obj);
233 }
234
235 @Override
236 public void visitInnerClass(InnerClass obj) {
237 tostring = toString(obj);
238 }
239
240 @Override
241 public void visitInnerClasses(InnerClasses obj) {
242 tostring = toString(obj);
243 }
244
245 @Override
246 public void visitJavaClass(JavaClass obj) {
247 tostring = toString(obj);
248 }
249
250 @Override
251 public void visitLineNumber(LineNumber obj) {
252 tostring = toString(obj);
253 }
254
255 @Override
256 public void visitLineNumberTable(LineNumberTable obj) {
257 tostring = "<LineNumberTable: " + toString(obj) + ">";
258 }
259
260 @Override
261 public void visitLocalVariable(LocalVariable obj) {
262 tostring = toString(obj);
263 }
264
265 @Override
266 public void visitLocalVariableTable(LocalVariableTable obj) {
267 tostring = "<LocalVariableTable: " + toString(obj) + ">";
268 }
269
270 @Override
271 public void visitMethod(Method obj) {
272 tostring = toString(obj);
273 }
274
275 @Override
276 public void visitSignature(Signature obj) {
277 tostring = toString(obj);
278 }
279
280 @Override
281 public void visitSourceFile(SourceFile obj) {
282 tostring = toString(obj);
283 }
284
285 @Override
286 public void visitStackMap(StackMap obj) {
287 tostring = toString(obj);
288 }
289
290 @Override
291 public void visitSynthetic(Synthetic obj) {
292 tostring = toString(obj);
293 }
294
295 @Override
296 public void visitUnknown(Unknown obj) {
297 tostring = toString(obj);
298 }
299 }