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