package dynaop.remote;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import dynaop.util.NestedException;
/**
*
*
* @author Bob Lee (crazybob@crazybob.org)
*/
class InvocationHandle implements Serializable {
static final long serialVersionUID = 0;
private Class remoteClass;
private String methodName;
private Class[] parameterTypes;
private Object[] parameters;
InvocationHandle(Method method, Object[] parameters) {
this.remoteClass = method.getDeclaringClass();
this.methodName = method.getName();
this.parameterTypes = method.getParameterTypes();
this.parameters = parameters;
}
Object invoke(Object ejbObject) {
try {
Method method =
remoteClass.getMethod(this.methodName, this.parameterTypes);
return method.invoke(ejbObject, this.parameters);
}
catch (InvocationTargetException e) {
return new ThrowableWrapper(e.getTargetException());
}
catch (Exception e) {
throw NestedException.wrap(e);
}
}
}
|