001 package biz.hammurapi.remoting; 002 003 import java.lang.reflect.InvocationHandler; 004 import java.lang.reflect.Method; 005 import java.lang.reflect.Proxy; 006 007 public interface Remoter { 008 009 Object invoke(Invocation invocation) throws Exception; 010 011 class ProxyFactory { 012 013 public static Object createProxy(Class[] interfaces, final LocalDelegate localDelegate, final Remoter remoter) { 014 InvocationHandler ih = new InvocationHandler() { 015 016 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 017 return localDelegate.invoke(proxy, method, args, remoter); 018 } 019 020 }; 021 return Proxy.newProxyInstance(ProxyFactory.class.getClassLoader(), interfaces, ih); 022 } 023 } 024 }