diff options
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/test/javassist/proxy/ProxySimpleTest.java | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/src/test/test/javassist/proxy/ProxySimpleTest.java b/src/test/test/javassist/proxy/ProxySimpleTest.java index 212c15fa..76178a7e 100644 --- a/src/test/test/javassist/proxy/ProxySimpleTest.java +++ b/src/test/test/javassist/proxy/ProxySimpleTest.java @@ -1,7 +1,5 @@ package test.javassist.proxy; -import junit.framework.TestCase; - import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; @@ -13,6 +11,7 @@ import javassist.util.proxy.MethodFilter; import javassist.util.proxy.MethodHandler; import javassist.util.proxy.Proxy; import javassist.util.proxy.ProxyFactory; +import junit.framework.TestCase; @SuppressWarnings({"rawtypes","unchecked"}) public class ProxySimpleTest extends TestCase { @@ -286,4 +285,50 @@ public class ProxySimpleTest extends TestCase { protected void bar(int i) { result += "q"; } public void baz(int i) { result += "r"; } } + + + String value267; + + public void testJIRA267() throws Exception { + Extended267 extended267 = new Extended267(); + for (Method method: extended267.getClass().getMethods()) { + System.out.println(method.getName() + "::" + method.getModifiers() + ":" + method.getParameterCount() + ":" + method.isSynthetic() + ":" + method.isBridge()); + } + ProxyFactory factory = new ProxyFactory(); + factory.setSuperclass(Extended267.class); + Extended267 e = (Extended267)factory.create(null, null, new MethodHandler() { + @Override + public Object invoke(Object self, Method thisMethod, + Method proceed, Object[] args) throws Throwable { + value267 += thisMethod.getDeclaringClass().getName(); + return proceed.invoke(self, args); + } + }); + + value267 = ""; + assertEquals("base", e.base()); + System.out.println(value267); + assertEquals(Extended267.class.getName(), value267); + + value267 = ""; + assertEquals("base2", e.base("2")); + System.out.println(value267); + assertEquals(Extended267.class.getName(), value267); + + value267 = ""; + assertEquals("extended22", e.base(2)); + System.out.println(value267); + assertEquals(Extended267.class.getName(), value267); + } + + private static abstract class Base267 { + public String base() { return "base"; } + public String base(String s) { return "base" + s; } + public String base(Integer i) { return "base" + i; } + } + + public static class Extended267 extends Base267 { + public String base(Integer i) { return "extended" + i + i; } + } + } |