From 4c23f0c4892e0cf43a18a2e84982153bf58fb67b Mon Sep 17 00:00:00 2001 From: Lucio Lelii Date: Thu, 8 Oct 2015 10:12:25 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/branches/common/common-gcore-stubs/1.0@119516 82a268e6-3cf1-43bd-a215-b396298e98cf --- distro/README | 6 ++++-- .../common/clients/stubs/jaxws/StubFactory.java | 4 ++-- .../stubs/jaxws/proxies/GenericProxyFactory.java | 15 +++++++-------- .../stubs/jaxws/proxies/MethodRetriever.java | 9 ++++++++- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/distro/README b/distro/README index feab5a2..07c1f6a 100644 --- a/distro/README +++ b/distro/README @@ -1,13 +1,15 @@ 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), -D4Science-II (FP7-INFRA-2008-1.2.2), iMarine (FP7-INFRASTRUCTURES-2011-2), and EUBrazilOpenBio (FP7-ICT-2011-EU-Brazil). +This work has been partially supported by the following European projects: DILIGENT (FP6-2003-IST-2), +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 ------- * 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 ------------------------ diff --git a/src/main/java/org/gcube/common/clients/stubs/jaxws/StubFactory.java b/src/main/java/org/gcube/common/clients/stubs/jaxws/StubFactory.java index a02b5fe..10f5bf3 100644 --- a/src/main/java/org/gcube/common/clients/stubs/jaxws/StubFactory.java +++ b/src/main/java/org/gcube/common/clients/stubs/jaxws/StubFactory.java @@ -114,8 +114,8 @@ public class StubFactory implements StubFactoryDSL.AtClause { // configure stub for gCube calls 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 diff --git a/src/main/java/org/gcube/common/clients/stubs/jaxws/proxies/GenericProxyFactory.java b/src/main/java/org/gcube/common/clients/stubs/jaxws/proxies/GenericProxyFactory.java index 3369fa4..9251ccb 100644 --- a/src/main/java/org/gcube/common/clients/stubs/jaxws/proxies/GenericProxyFactory.java +++ b/src/main/java/org/gcube/common/clients/stubs/jaxws/proxies/GenericProxyFactory.java @@ -1,22 +1,21 @@ package org.gcube.common.clients.stubs.jaxws.proxies; import java.lang.reflect.Proxy; -import java.util.HashMap; -import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class GenericProxyFactory { - - private static Map proxyMap = new HashMap<>(); + public static Logger log = LoggerFactory.getLogger(MethodRetriever.class); + @SuppressWarnings("unchecked") - public static T getProxy(Class intf, + public static T getProxy(Class intf, String endpointAddress, 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); + log.debug("for interface "+intf.getCanonicalName()+" the proxy class is "+proxy.getClass().getCanonicalName()); return proxy; } } \ No newline at end of file diff --git a/src/main/java/org/gcube/common/clients/stubs/jaxws/proxies/MethodRetriever.java b/src/main/java/org/gcube/common/clients/stubs/jaxws/proxies/MethodRetriever.java index b10242c..765cd97 100644 --- a/src/main/java/org/gcube/common/clients/stubs/jaxws/proxies/MethodRetriever.java +++ b/src/main/java/org/gcube/common/clients/stubs/jaxws/proxies/MethodRetriever.java @@ -1,6 +1,7 @@ package org.gcube.common.clients.stubs.jaxws.proxies; import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.gcube.common.authorization.library.provider.CalledMethodProvider; @@ -18,10 +19,16 @@ public class MethodRetriever implements InvocationHandler{ } public Object invoke(Object proxy, Method method, - Object[] args) throws Throwable { + Object[] args) throws Throwable{ CalledMethodProvider.instance.set(method.getName()); try{ 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{ CalledMethodProvider.instance.reset(); }