1package annotations;
2import org.objectweb.asm.*;
3public class ValuesDump implements Opcodes {
4
5public static byte[] dump () throws Exception {
6
7ClassWriter cw = new ClassWriter(false);
8FieldVisitor fv;
9MethodVisitor mv;
10AnnotationVisitor av0;
11
12cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/Values", null, "java/lang/Object", null);
13
14cw.visitSource("Values.java", null);
15
16{
17av0 = cw.visitAnnotation("Lannotations/ValuesAnnotation;", true);
18av0.visit("byteValue", new Byte((byte)1));
19av0.visit("charValue", new Character((char)65));
20av0.visit("booleanValue", new Boolean(true));
21av0.visit("intValue", new Integer(1));
22av0.visit("shortValue", new Short((short)1));
23av0.visit("longValue", new Long(1L));
24av0.visit("floatValue", new Float("1.0"));
25av0.visit("doubleValue", new Double("1.0"));
26av0.visit("stringValue", "A");
27av0.visitEnum("enumValue", "Lannotations/ValuesEnum;", "ONE");
28{
29AnnotationVisitor av1 = av0.visitAnnotation("annotationValue", "Lannotations/ValueAttrAnnotation;");
30av1.visit("value", "annotation");
31av1.visitEnd();
32}
33av0.visit("classValue", Type.getType("Lannotations/Values;"));
34av0.visit("byteArrayValue", new byte[] {1,-1});
35av0.visit("charArrayValue", new char[] {(char)99,(char)98,(char)65535});
36av0.visit("booleanArrayValue", new boolean[] {true,false});
37av0.visit("intArrayValue", new int[] {1,-1});
38av0.visit("shortArrayValue", new short[] {(short)1,(short)-1});
39av0.visit("longArrayValue", new long[] {1L,-1L});
40av0.visit("floatArrayValue", new float[] {1.0f,-1.0f});
41av0.visit("doubleArrayValue", new double[] {1.0d,-1.0d});
42{
43AnnotationVisitor av1 = av0.visitArray("stringArrayValue");
44av1.visit(null, "aa");
45av1.visit(null, "bb");
46av1.visitEnd();
47}
48{
49AnnotationVisitor av1 = av0.visitArray("enumArrayValue");
50av1.visitEnum(null, "Lannotations/ValuesEnum;", "ONE");
51av1.visitEnum(null, "Lannotations/ValuesEnum;", "TWO");
52av1.visitEnd();
53}
54{
55AnnotationVisitor av1 = av0.visitArray("annotationArrayValue");
56{
57AnnotationVisitor av2 = av1.visitAnnotation(null, "Lannotations/ValueAttrAnnotation;");
58av2.visit("value", "annotation1");
59av2.visitEnd();
60}
61{
62AnnotationVisitor av2 = av1.visitAnnotation(null, "Lannotations/ValueAttrAnnotation;");
63av2.visit("value", "annotation2");
64av2.visitEnd();
65}
66av1.visitEnd();
67}
68{
69AnnotationVisitor av1 = av0.visitArray("classArrayValue");
70av1.visit(null, Type.getType("Lannotations/Values;"));
71av1.visit(null, Type.getType("Lannotations/Values;"));
72av1.visitEnd();
73}
74av0.visitEnd();
75}
76{
77av0 = cw.visitAnnotation("Lannotations/ValueAttrAnnotation1;", true);
78av0.visit("value", "classAnnotation1");
79av0.visitEnd();
80}
81{
82av0 = cw.visitAnnotation("Lannotations/ValueAttrAnnotation2;", true);
83av0.visit("value", "classAnnotation2");
84av0.visitEnd();
85}
86{
87fv = cw.visitField(ACC_PUBLIC, "testfield", "Ljava/lang/String;", null, null);
88{
89av0 = fv.visitAnnotation("Lannotations/ValueAttrAnnotation1;", true);
90av0.visit("value", "fieldAnnotation1");
91av0.visitEnd();
92}
93{
94av0 = fv.visitAnnotation("Lannotations/ValueAttrAnnotation2;", true);
95av0.visit("value", "fieldAnnotation2");
96av0.visitEnd();
97}
98fv.visitEnd();
99}
100{
101mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
102mv.visitVarInsn(ALOAD, 0);
103mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
104mv.visitVarInsn(ALOAD, 0);
105mv.visitLdcInsn("test");
106mv.visitFieldInsn(PUTFIELD, "annotations/Values", "testfield", "Ljava/lang/String;");
107mv.visitInsn(RETURN);
108mv.visitMaxs(2, 1);
109mv.visitEnd();
110}
111{
112mv = cw.visitMethod(ACC_PUBLIC, "testMethod", "(Ljava/lang/String;I)V", null, null);
113{
114av0 = mv.visitAnnotation("Lannotations/ValueAttrAnnotation1;", true);
115av0.visit("value", "methodAnnotation1");
116av0.visitEnd();
117}
118{
119av0 = mv.visitAnnotation("Lannotations/ValueAttrAnnotation2;", true);
120av0.visit("value", "methodAnnotation2");
121av0.visitEnd();
122}
123{
124av0 = mv.visitParameterAnnotation(0, "Lannotations/ValueAttrAnnotation1;", true);
125av0.visit("value", "param1Annotation1");
126av0.visitEnd();
127}
128{
129av0 = mv.visitParameterAnnotation(0, "Lannotations/ValueAttrAnnotation2;", true);
130av0.visit("value", "param1Annotation2");
131av0.visitEnd();
132}
133{
134av0 = mv.visitParameterAnnotation(1, "Lannotations/ValueAttrAnnotation1;", true);
135av0.visit("value", "param2Annotation1");
136av0.visitEnd();
137}
138{
139av0 = mv.visitParameterAnnotation(1, "Lannotations/ValueAttrAnnotation2;", true);
140av0.visit("value", "param2Annotation2");
141av0.visitEnd();
142}
143mv.visitInsn(RETURN);
144mv.visitMaxs(0, 3);
145mv.visitEnd();
146}
147cw.visitEnd();
148
149return cw.toByteArray();
150}
151}
152