common-gcore-stubs/src/main/java/org/gcube/common/clients/stubs/jaxws/proxies/GenericProxyFactory.java

22 lines
655 B
Java

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<String, Object> proxyMap = new HashMap<>();
@SuppressWarnings("unchecked")
public static <T, I extends T> T getProxy(Class<T> 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<I>(obj));
proxyMap.put(intf.getCanonicalName(), proxy);
return proxy;
}
}