comparison src/main/java/alice/test/reflection/ReflectionTest.java @ 345:8f71c3e6f11d

Change directory structure Maven standard
author sugi
date Wed, 16 Apr 2014 18:26:07 +0900
parents
children aefbe41fcf12
comparison
equal deleted inserted replaced
344:9f97ec18f8c5 345:8f71c3e6f11d
1 package alice.test.reflection;
2
3 import javassist.ClassPool;
4 import javassist.CtClass;
5 import javassist.CtConstructor;
6 import javassist.CtField;
7 import javassist.CtMethod;
8
9 public class ReflectionTest {
10
11 public static void main(String[] args){
12 try {
13 new ReflectionTest().createCS();
14 } catch (Exception e) {
15 e.printStackTrace();
16 }
17 System.out.println("TEST END");
18 }
19
20 public void createCS() throws Exception{
21
22 ClassPool cp = ClassPool.getDefault();
23 CtClass tep = cp.get("alice.test.reflection.CSTemplate");
24 CtClass rec = cp.get("alice.datasegment.Receiver");
25
26 // ---- define Field -----
27 //CtField f1 = CtField.make("alice.datasegment.Receiver arg1 = ids.create(alice.datasegment.CommandType.PEEK);", tep);
28 //tep.addField(f1);
29 CtField f1 = new CtField(rec,"arg1",tep);
30 tep.addField(f1,"ids.create(alice.datasegment.CommandType.PEEK)");
31
32 // ---- define Constructor -----
33 CtConstructor c = tep.getConstructor("()V");
34 c.insertAfter("arg1.setKey(\"key1\");");
35
36 // ---- define run -----
37 CtMethod m = tep.getMethod("run", "()V");
38 m.insertAfter("System.out.println(\"type = \" + arg1.type);");
39 m.insertAfter("System.out.println(\"index = \" + arg1.index);");
40 m.insertAfter("System.out.println(\"data = \" + arg1.getVal());");
41 m.insertAfter("System.out.println(((org.msgpack.type.Value)arg1.getVal()).getType());");
42 m.insertAfter("if (arg1.index==10){ System.exit(0);}");
43 m.insertAfter("new alice.test.reflection.CSTemplate();");
44 m.insertAfter("ods.update(\"key1\", \"String Data\");");
45
46 Class<?> clazz = tep.toClass(); // load Class
47 @SuppressWarnings("unused")
48 CSTemplate cs = (CSTemplate)clazz.newInstance(); // create instance
49
50 }
51 }