001 /*
002 @license.text@
003 */
004
005 package biz.hammurapi.util;
006
007 import java.lang.reflect.InvocationHandler;
008 import java.lang.reflect.Method;
009 import java.lang.reflect.Proxy;
010
011 /**
012 * @author Pavel Vlasov
013 * @version $Revision: 1.3 $
014 */
015 public class ProxyInvocationPump extends InvocationPump implements InvocationHandler {
016 private Object proxy;
017 private final Object obj;
018
019 public ProxyInvocationPump(Object obj) {
020 this.obj=obj;
021 proxy=Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
022 }
023
024 public Object getProxy() {
025 return proxy;
026 }
027
028 public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
029 Command command=new Command() {
030 protected Object execute() throws Throwable {
031 return method.invoke(obj, args);
032 }
033 };
034
035 return command.post();
036 }
037 }