blob: f5861cebb06fcdd32c20e52cc1f4f9f9368ef144 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package javassist.tools;
import javassist.*;
import junit.framework.TestCase;
import test.javassist.tools.DummyClass;
import test.javassist.tools.DefineClassCapability;
import static javassist.tools.Callback.*;
public class CallbackTest extends TestCase {
public void testSomeCallbacks() throws Exception {
// Get class and method to change
ClassPool pool = ClassPool.getDefault();
CtClass classToChange = pool.get("test.javassist.tools.DummyClass");
CtMethod methodToChange = classToChange.getDeclaredMethod("dummyMethod");
// Insert after
methodToChange.insertAfter(new Callback("Thread.currentThread(), dummyString") {
@Override
public void result(Object... objects) {
assertEquals(objects[0], Thread.currentThread());
assertEquals(objects[1], "dummyStringValue");
}
}.sourceCode());
// Insert after using utility method
insertAfter(methodToChange, new Callback("Thread.currentThread(), dummyString") {
@Override
public void result(Object... objects) {
assertEquals(objects[0], Thread.currentThread());
assertEquals(objects[1], "dummyStringValue");
}
});
// Change class and invoke method;
classToChange.toClass(DefineClassCapability.class);
new DummyClass().dummyMethod();
}
}
|