annotate src/alice/test/reflection/ReflectionTest.java @ 276:3e0d1ac4f4a8

Refactor iterating process with for-each sentence.
author kazz <kazz@cr.ie.u-ryukyu.ac.jp>
date Fri, 18 Oct 2013 01:51:15 +0900
parents 16bfc302bff2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
256
6afe5be39205 add reflection
sugi
parents:
diff changeset
1 package alice.test.reflection;
6afe5be39205 add reflection
sugi
parents:
diff changeset
2
6afe5be39205 add reflection
sugi
parents:
diff changeset
3 import javassist.ClassPool;
6afe5be39205 add reflection
sugi
parents:
diff changeset
4 import javassist.CtClass;
6afe5be39205 add reflection
sugi
parents:
diff changeset
5 import javassist.CtConstructor;
6afe5be39205 add reflection
sugi
parents:
diff changeset
6 import javassist.CtField;
6afe5be39205 add reflection
sugi
parents:
diff changeset
7 import javassist.CtMethod;
6afe5be39205 add reflection
sugi
parents:
diff changeset
8
6afe5be39205 add reflection
sugi
parents:
diff changeset
9 public class ReflectionTest {
6afe5be39205 add reflection
sugi
parents:
diff changeset
10
6afe5be39205 add reflection
sugi
parents:
diff changeset
11 public static void main(String[] args){
6afe5be39205 add reflection
sugi
parents:
diff changeset
12 try {
6afe5be39205 add reflection
sugi
parents:
diff changeset
13 new ReflectionTest().createCS();
6afe5be39205 add reflection
sugi
parents:
diff changeset
14 } catch (Exception e) {
6afe5be39205 add reflection
sugi
parents:
diff changeset
15 e.printStackTrace();
6afe5be39205 add reflection
sugi
parents:
diff changeset
16 }
6afe5be39205 add reflection
sugi
parents:
diff changeset
17 System.out.println("TEST END");
6afe5be39205 add reflection
sugi
parents:
diff changeset
18 }
6afe5be39205 add reflection
sugi
parents:
diff changeset
19
6afe5be39205 add reflection
sugi
parents:
diff changeset
20 public void createCS() throws Exception{
6afe5be39205 add reflection
sugi
parents:
diff changeset
21
6afe5be39205 add reflection
sugi
parents:
diff changeset
22 ClassPool cp = ClassPool.getDefault();
6afe5be39205 add reflection
sugi
parents:
diff changeset
23 CtClass tep = cp.get("alice.test.reflection.CSTemplate");
6afe5be39205 add reflection
sugi
parents:
diff changeset
24 CtClass rec = cp.get("alice.datasegment.Receiver");
6afe5be39205 add reflection
sugi
parents:
diff changeset
25
6afe5be39205 add reflection
sugi
parents:
diff changeset
26 // ---- define Field -----
6afe5be39205 add reflection
sugi
parents:
diff changeset
27 //CtField f1 = CtField.make("alice.datasegment.Receiver arg1 = ids.create(alice.datasegment.CommandType.PEEK);", tep);
6afe5be39205 add reflection
sugi
parents:
diff changeset
28 //tep.addField(f1);
6afe5be39205 add reflection
sugi
parents:
diff changeset
29 CtField f1 = new CtField(rec,"arg1",tep);
6afe5be39205 add reflection
sugi
parents:
diff changeset
30 tep.addField(f1,"ids.create(alice.datasegment.CommandType.PEEK)");
6afe5be39205 add reflection
sugi
parents:
diff changeset
31
6afe5be39205 add reflection
sugi
parents:
diff changeset
32 // ---- define Constructor -----
6afe5be39205 add reflection
sugi
parents:
diff changeset
33 CtConstructor c = tep.getConstructor("()V");
6afe5be39205 add reflection
sugi
parents:
diff changeset
34 c.insertAfter("arg1.setKey(\"key1\");");
6afe5be39205 add reflection
sugi
parents:
diff changeset
35
6afe5be39205 add reflection
sugi
parents:
diff changeset
36 // ---- define run -----
6afe5be39205 add reflection
sugi
parents:
diff changeset
37 CtMethod m = tep.getMethod("run", "()V");
6afe5be39205 add reflection
sugi
parents:
diff changeset
38 m.insertAfter("System.out.println(\"type = \" + arg1.type);");
6afe5be39205 add reflection
sugi
parents:
diff changeset
39 m.insertAfter("System.out.println(\"index = \" + arg1.index);");
6afe5be39205 add reflection
sugi
parents:
diff changeset
40 m.insertAfter("System.out.println(\"data = \" + arg1.getVal());");
6afe5be39205 add reflection
sugi
parents:
diff changeset
41 m.insertAfter("System.out.println(((org.msgpack.type.Value)arg1.getVal()).getType());");
6afe5be39205 add reflection
sugi
parents:
diff changeset
42 m.insertAfter("if (arg1.index==10){ System.exit(0);}");
6afe5be39205 add reflection
sugi
parents:
diff changeset
43 m.insertAfter("new alice.test.reflection.CSTemplate();");
6afe5be39205 add reflection
sugi
parents:
diff changeset
44 m.insertAfter("ods.update(\"key1\", \"String Data\");");
6afe5be39205 add reflection
sugi
parents:
diff changeset
45
6afe5be39205 add reflection
sugi
parents:
diff changeset
46 Class<?> clazz = tep.toClass(); // load Class
257
16bfc302bff2 delete warning
sugi
parents: 256
diff changeset
47 @SuppressWarnings("unused")
256
6afe5be39205 add reflection
sugi
parents:
diff changeset
48 CSTemplate cs = (CSTemplate)clazz.newInstance(); // create instance
6afe5be39205 add reflection
sugi
parents:
diff changeset
49
6afe5be39205 add reflection
sugi
parents:
diff changeset
50 }
6afe5be39205 add reflection
sugi
parents:
diff changeset
51 }