22 lines
655 B
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;
|
|
}
|
|
} |