package org.gcube.common.clients.stubs.jaxws.proxies; import java.lang.reflect.Proxy; import java.util.HashMap; import java.util.Map; public class GenericProxyFactory { private static Map proxyMap = new HashMap<>(); @SuppressWarnings("unchecked") public static T getProxy(Class intf, final I obj) { if (proxyMap.containsKey(intf.getCanonicalName())) return (T) proxyMap.get(intf.getCanonicalName()); T proxy = (T) Proxy.newProxyInstance(obj.getClass().getClassLoader(), new Class[] { intf }, new MethodRetriever(obj)); proxyMap.put(intf.getCanonicalName(), proxy); return proxy; } }