/* ** ** Copyright 2013, Jules White ** ** */ package org.magnum.soda.server.wamp.test; import static org.junit.Assert.*; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import org.junit.Test; import org.magnum.soda.server.wamp.CglibProxyCreator; public class CglibProxyCreatorTest { public static class Foo { public boolean bar(){ return false; } } public static class FooWCons { public FooWCons(boolean b){ } public boolean bar(){ return false; } } @Test public void testProxyConcreteWithoutConstructor() { CglibProxyCreator ctor = new CglibProxyCreator(getClass().getClassLoader()); Foo foo = (Foo)ctor.createProxy(ctor.getProxyClassLoader(), new Class[]{Foo.class}, new InvocationHandler() { private Foo foo_ = new Foo(); @Override public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable { if(arg1.getName().equals("bar")){ return true; } else { return arg1.invoke(foo_, arg2); } } }); assertTrue(foo.bar()); } @Test public void testProxyConcreteWithConstructor() { CglibProxyCreator ctor = new CglibProxyCreator(getClass().getClassLoader()); FooWCons foo = (FooWCons)ctor.createProxy(ctor.getProxyClassLoader(), new Class[]{FooWCons.class}, new InvocationHandler() { private FooWCons foo_ = new FooWCons(false); @Override public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable { if(arg1.getName().equals("bar")){ return true; } else { return arg1.invoke(foo_, arg2); } } }); assertTrue(foo.bar()); } }