KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > jmx > server > RunnableInfo


1 package org.oddjob.jmx.server;
2
3 import javax.management.MBeanAttributeInfo JavaDoc;
4 import javax.management.MBeanException JavaDoc;
5 import javax.management.MBeanNotificationInfo JavaDoc;
6 import javax.management.MBeanOperationInfo JavaDoc;
7 import javax.management.MBeanParameterInfo JavaDoc;
8 import javax.management.Notification JavaDoc;
9 import javax.management.ReflectionException JavaDoc;
10
11 /**
12  */

13 public class RunnableInfo implements InterfaceInfo {
14     
15     public Class JavaDoc interfaceClass() {
16         return Runnable JavaDoc.class;
17     }
18     
19     public MBeanAttributeInfo JavaDoc[] getMBeanAttributeInfo() {
20         return new MBeanAttributeInfo JavaDoc[0];
21     }
22
23     public MBeanOperationInfo JavaDoc[] getMBeanOperationInfo() {
24         return new MBeanOperationInfo JavaDoc[] {
25             new MBeanOperationInfo JavaDoc("run", "Execute the job.",
26                         new MBeanParameterInfo JavaDoc[0], Void.TYPE.getName(),
27                         MBeanOperationInfo.ACTION)
28             };
29     }
30     
31     public MBeanNotificationInfo JavaDoc[] getMBeanNotificationInfo() {
32         return new MBeanNotificationInfo JavaDoc[0];
33     }
34     
35     
36     public InterfaceHandler attach(Object JavaDoc target, OddjobMBean ojmb) {
37         return new RunnableHandler((Runnable JavaDoc) target, ojmb);
38     }
39
40     class RunnableHandler implements InterfaceHandler {
41     
42         private final Runnable JavaDoc runnable;
43         private final OddjobMBean ojmb;
44         
45         RunnableHandler(Runnable JavaDoc runnable, OddjobMBean ojmb) {
46             this.runnable = runnable;
47             this.ojmb = ojmb;
48         }
49         
50         public Object JavaDoc invoke(String JavaDoc actionName, Object JavaDoc[] params, String JavaDoc[] signature) throws MBeanException JavaDoc, ReflectionException JavaDoc {
51             if ("run".equals(actionName)
52                     && signature.length == 0) {
53                 ojmb.getContext().getThreadManager().run(
54                         runnable, "run invoked by client.");
55                 return null;
56             }
57             else {
58                 throw new ReflectionException JavaDoc(
59                         new IllegalStateException JavaDoc("invoked for an unknown method."),
60                                 actionName);
61             }
62         }
63         
64         public Notification JavaDoc[] getLastNotifications() {
65             return null;
66         }
67         
68         public void destroy() {
69         }
70     }
71 }
Popular Tags