KickJava   Java API By Example, From Geeks To Geeks.

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


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 import org.oddjob.scheduling.OddjobScheduler;
12 import org.oddjob.scheduling.ScheduleInstruction;
13 import org.oddjob.scheduling.ScheduleSummary;
14
15 /**
16  */

17 public class OddjobSchedulerInfo implements InterfaceInfo {
18     
19     public Class JavaDoc interfaceClass() {
20         return OddjobScheduler.class;
21     }
22     
23     public MBeanAttributeInfo JavaDoc[] getMBeanAttributeInfo() {
24         return new MBeanAttributeInfo JavaDoc[0];
25     }
26
27     public MBeanOperationInfo JavaDoc[] getMBeanOperationInfo() {
28         return new MBeanOperationInfo JavaDoc[] {
29             new MBeanOperationInfo JavaDoc("canSchedule", "Can the job be scheduled.",
30                     new MBeanParameterInfo JavaDoc[] {
31                         new MBeanParameterInfo JavaDoc("component", Object JavaDoc.class.getName(), "The job."),
32                     },
33                     Boolean.TYPE.getName(),
34                     MBeanOperationInfo.INFO),
35             new MBeanOperationInfo JavaDoc("summariesFor", "Get Schedule Summaris for a job.",
36                     new MBeanParameterInfo JavaDoc[] {
37                         new MBeanParameterInfo JavaDoc("component", Object JavaDoc.class.getName(), "The job."),
38                     },
39                     ScheduleSummary[].class.getName(),
40                     MBeanOperationInfo.INFO),
41             new MBeanOperationInfo JavaDoc("schedule", "Schedule a job.",
42                     new MBeanParameterInfo JavaDoc[] {
43                         new MBeanParameterInfo JavaDoc("scheduleInstruction", ScheduleInstruction.class.getName(), "The schedule instruction.")
44                     },
45             Void.TYPE.getName(),
46             MBeanOperationInfo.ACTION),
47             new MBeanOperationInfo JavaDoc("unSchedule", "Unschedule a schedule.",
48                     new MBeanParameterInfo JavaDoc[] {
49                         new MBeanParameterInfo JavaDoc("id", String JavaDoc.class.getName(), "The schedule id.")
50                     },
51             Void.TYPE.getName(),
52             MBeanOperationInfo.ACTION)
53             };
54     }
55     
56     public MBeanNotificationInfo JavaDoc[] getMBeanNotificationInfo() {
57         return new MBeanNotificationInfo JavaDoc[0];
58     }
59     
60     
61     public InterfaceHandler attach(Object JavaDoc target, OddjobMBean ojmb) {
62         return new OddjobSchedulerHandler((OddjobScheduler) target);
63     }
64
65     class OddjobSchedulerHandler implements InterfaceHandler {
66     
67         private final OddjobScheduler scheduler;
68         
69         OddjobSchedulerHandler(OddjobScheduler scheduler) {
70             this.scheduler = scheduler;
71         }
72         
73         public Object JavaDoc invoke(String JavaDoc actionName, Object JavaDoc[] params, String JavaDoc[] signature) throws MBeanException JavaDoc, ReflectionException JavaDoc {
74             if ("canSchedule".equals(actionName) && signature.length == 1
75                     && Object JavaDoc.class.getName().equals(signature[0])) {
76                 return new Boolean JavaDoc(scheduler.canSchedule(params[0]));
77             }
78             else if ("summariesFor".equals(actionName) && signature.length == 1
79                     && Object JavaDoc.class.getName().equals(signature[0])) {
80                 return scheduler.summariesFor(params[0]);
81             }
82             else if ("schedule".equals(actionName) && signature.length == 1
83                     && ScheduleInstruction.class.getName().equals(signature[0])) {
84                 scheduler.schedule((ScheduleInstruction) params[0]);
85                 return null;
86             }
87             else if ("unSchedule".equals(actionName) && signature.length == 1
88                     && String JavaDoc.class.getName().equals(signature[0])) {
89                 scheduler.unSchedule((String JavaDoc) params[0]);
90                 return null;
91             }
92             else {
93                 throw new ReflectionException JavaDoc(
94                         new IllegalStateException JavaDoc("invoked for an unknown method."),
95                                 actionName);
96             }
97         }
98         
99         public Notification JavaDoc[] getLastNotifications() {
100             return null;
101         }
102         
103         public void destroy() {
104         }
105     }
106 }
Popular Tags