KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > dynaop > remote > InvocationHandle


1 package dynaop.remote;
2
3 import java.io.Serializable JavaDoc;
4 import java.lang.reflect.InvocationTargetException JavaDoc;
5 import java.lang.reflect.Method JavaDoc;
6
7 import dynaop.util.NestedException;
8
9 /**
10  *
11  *
12  * @author Bob Lee (crazybob@crazybob.org)
13  */

14 class InvocationHandle implements Serializable JavaDoc {
15
16     static final long serialVersionUID = 0;
17
18     private Class JavaDoc remoteClass;
19     private String JavaDoc methodName;
20     private Class JavaDoc[] parameterTypes;
21     private Object JavaDoc[] parameters;
22
23     InvocationHandle(Method JavaDoc method, Object JavaDoc[] parameters) {
24         this.remoteClass = method.getDeclaringClass();
25         this.methodName = method.getName();
26         this.parameterTypes = method.getParameterTypes();
27         this.parameters = parameters;
28     }
29
30     Object JavaDoc invoke(Object JavaDoc ejbObject) {
31         try {
32             Method JavaDoc method =
33                 remoteClass.getMethod(this.methodName, this.parameterTypes);
34             return method.invoke(ejbObject, this.parameters);
35         }
36         catch (InvocationTargetException JavaDoc e) {
37             return new ThrowableWrapper(e.getTargetException());
38         }
39         catch (Exception JavaDoc e) {
40             throw NestedException.wrap(e);
41         }
42     }
43 }
44
Popular Tags