You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CallbackTest.java 1.4KB

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