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.

HotswapTest.java 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package javassist;
  2. import javassist.util.HotSwapAgent;
  3. import junit.framework.TestCase;
  4. public class HotswapTest extends TestCase {
  5. public static void main(String[] args) throws Exception {
  6. // run java -javaagent:hotswap.jar javassist.HotswapTest
  7. new HotswapTest(HotswapTest.class.getName()).testHotswap();
  8. }
  9. public HotswapTest(String name) {
  10. super(name);
  11. }
  12. public static class Foo {
  13. public int foo() { return 1; }
  14. }
  15. public void testHotswap() throws Exception {
  16. if (javassist.bytecode.ClassFile.MAJOR_VERSION
  17. >= javassist.bytecode.ClassFile.JAVA_9)
  18. return;
  19. Foo f = new Foo();
  20. assertEquals(1, f.foo());
  21. ClassPool cp = ClassPool.getDefault();
  22. CtClass clazz = cp.get(Foo.class.getName());
  23. CtMethod m = clazz.getDeclaredMethod("foo");
  24. clazz.removeMethod(m);
  25. clazz.addMethod(CtNewMethod.make("public int foo() { return 2; }", clazz));
  26. HotSwapAgent.redefine(Foo.class, clazz);
  27. Foo g = new Foo();
  28. assertEquals(2, g.foo());
  29. System.out.println("Foo#foo() = " + g.foo());
  30. }
  31. }