git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/branches/common/common-gcore-stubs/1.0@119516 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
3637558618
commit
4c23f0c489
|
@ -1,13 +1,15 @@
|
||||||
The gCube System - ${name}
|
The gCube System - ${name}
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
This work has been partially supported by the following European projects: DILIGENT (FP6-2003-IST-2), D4Science (FP7-INFRA-2007-1.2.2),
|
This work has been partially supported by the following European projects: DILIGENT (FP6-2003-IST-2),
|
||||||
D4Science-II (FP7-INFRA-2008-1.2.2), iMarine (FP7-INFRASTRUCTURES-2011-2), and EUBrazilOpenBio (FP7-ICT-2011-EU-Brazil).
|
D4Science (FP7-INFRA-2007-1.2.2), D4Science-II (FP7-INFRA-2008-1.2.2), iMarine (FP7-INFRASTRUCTURES-2011-2),
|
||||||
|
and EUBrazilOpenBio (FP7-ICT-2011-EU-Brazil), Parthenos (H2020-INFRADEV-1-2014-1), BlueBridge (H2020-EINFRA-2015-1).
|
||||||
|
|
||||||
Authors
|
Authors
|
||||||
-------
|
-------
|
||||||
|
|
||||||
* Fabio Simeoni (fabio.simeoni@fao.org), FAO of the UN, Italy
|
* Fabio Simeoni (fabio.simeoni@fao.org), FAO of the UN, Italy
|
||||||
|
* Lucio Lelii (lucio.lelii@isti.cnr.it), FAO of the UN, Italy
|
||||||
|
|
||||||
Version and Release Date
|
Version and Release Date
|
||||||
------------------------
|
------------------------
|
||||||
|
|
|
@ -115,7 +115,7 @@ public class StubFactory<T> implements StubFactoryDSL.AtClause<T> {
|
||||||
// configure stub for gCube calls
|
// configure stub for gCube calls
|
||||||
registerHandler(provider, target);
|
registerHandler(provider, target);
|
||||||
|
|
||||||
return GenericProxyFactory.getProxy(target.type(), stub);
|
return GenericProxyFactory.getProxy(target.type(),endpointAddress, stub);
|
||||||
|
|
||||||
} catch (Error e) { //bad stubs/wsdls cause java.lang.Errors
|
} catch (Error e) { //bad stubs/wsdls cause java.lang.Errors
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,21 @@
|
||||||
package org.gcube.common.clients.stubs.jaxws.proxies;
|
package org.gcube.common.clients.stubs.jaxws.proxies;
|
||||||
|
|
||||||
import java.lang.reflect.Proxy;
|
import java.lang.reflect.Proxy;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class GenericProxyFactory {
|
public class GenericProxyFactory {
|
||||||
|
|
||||||
private static Map<String, Object> proxyMap = new HashMap<>();
|
public static Logger log = LoggerFactory.getLogger(MethodRetriever.class);
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static <T, I extends T> T getProxy(Class<T> intf,
|
public static <T, I extends T> T getProxy(Class<T> intf, String endpointAddress,
|
||||||
final I obj) {
|
final I obj) {
|
||||||
if (proxyMap.containsKey(intf.getCanonicalName()))
|
|
||||||
return (T) proxyMap.get(intf.getCanonicalName());
|
|
||||||
T proxy = (T) Proxy.newProxyInstance(obj.getClass().getClassLoader(),
|
T proxy = (T) Proxy.newProxyInstance(obj.getClass().getClassLoader(),
|
||||||
new Class[] { intf },
|
new Class[] { intf },
|
||||||
new MethodRetriever<I>(obj));
|
new MethodRetriever<I>(obj));
|
||||||
proxyMap.put(intf.getCanonicalName(), proxy);
|
log.debug("for interface "+intf.getCanonicalName()+" the proxy class is "+proxy.getClass().getCanonicalName());
|
||||||
return proxy;
|
return proxy;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package org.gcube.common.clients.stubs.jaxws.proxies;
|
package org.gcube.common.clients.stubs.jaxws.proxies;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationHandler;
|
import java.lang.reflect.InvocationHandler;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
import org.gcube.common.authorization.library.provider.CalledMethodProvider;
|
import org.gcube.common.authorization.library.provider.CalledMethodProvider;
|
||||||
|
@ -22,6 +23,12 @@ public class MethodRetriever<T> implements InvocationHandler{
|
||||||
CalledMethodProvider.instance.set(method.getName());
|
CalledMethodProvider.instance.set(method.getName());
|
||||||
try{
|
try{
|
||||||
return method.invoke(service, args);
|
return method.invoke(service, args);
|
||||||
|
}catch(IllegalAccessException | IllegalArgumentException proxyEx){
|
||||||
|
log.error("error invoking method "+method.getName()+" in service "+service.getClass().getCanonicalName()+" using proxy ",proxyEx);
|
||||||
|
throw new RuntimeException(proxyEx);
|
||||||
|
}catch(InvocationTargetException ite){
|
||||||
|
log.error("error invoking method "+method.getName()+" in service "+service.getClass().getCanonicalName()+" using proxy ",ite);
|
||||||
|
throw ite.getCause();
|
||||||
}finally{
|
}finally{
|
||||||
CalledMethodProvider.instance.reset();
|
CalledMethodProvider.instance.reset();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue