2015-09-29 12:02:55 +02:00
|
|
|
package org.gcube.common.clients.stubs.jaxws.proxies;
|
|
|
|
|
|
|
|
import java.lang.reflect.InvocationHandler;
|
2015-10-08 12:12:25 +02:00
|
|
|
import java.lang.reflect.InvocationTargetException;
|
2015-09-29 12:02:55 +02:00
|
|
|
import java.lang.reflect.Method;
|
|
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
public class MethodRetriever<T> implements InvocationHandler{
|
|
|
|
|
|
|
|
public static Logger log = LoggerFactory.getLogger(MethodRetriever.class);
|
|
|
|
|
|
|
|
private T service;
|
|
|
|
|
|
|
|
public MethodRetriever(T service){
|
|
|
|
this.service= service;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Object invoke(Object proxy, Method method,
|
2015-10-08 12:12:25 +02:00
|
|
|
Object[] args) throws Throwable{
|
2015-09-29 12:02:55 +02:00
|
|
|
try{
|
|
|
|
return method.invoke(service, args);
|
2015-10-08 12:12:25 +02:00
|
|
|
}catch(IllegalAccessException | IllegalArgumentException proxyEx){
|
2015-10-20 18:30:02 +02:00
|
|
|
log.error("error invoking method "+method.getName()+" in service "+service.getClass().getCanonicalName()+" using proxy ", proxyEx);
|
2015-10-08 12:12:25 +02:00
|
|
|
throw new RuntimeException(proxyEx);
|
|
|
|
}catch(InvocationTargetException ite){
|
2015-10-20 18:29:44 +02:00
|
|
|
log.error("exception invoking method "+method.getName()+" in service "+service.getClass().getCanonicalName()+" using proxy ");
|
2015-10-08 12:12:25 +02:00
|
|
|
throw ite.getCause();
|
2015-09-29 12:02:55 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|