1 package org.oddjob.jmx.server; 2 3 import javax.management.MBeanAttributeInfo ; 4 import javax.management.MBeanException ; 5 import javax.management.MBeanNotificationInfo ; 6 import javax.management.MBeanOperationInfo ; 7 import javax.management.MBeanParameterInfo ; 8 import javax.management.Notification ; 9 import javax.management.ReflectionException ; 10 11 import org.oddjob.scheduling.OddjobScheduler; 12 import org.oddjob.scheduling.ScheduleInstruction; 13 import org.oddjob.scheduling.ScheduleSummary; 14 15 17 public class OddjobSchedulerInfo implements InterfaceInfo { 18 19 public Class interfaceClass() { 20 return OddjobScheduler.class; 21 } 22 23 public MBeanAttributeInfo [] getMBeanAttributeInfo() { 24 return new MBeanAttributeInfo [0]; 25 } 26 27 public MBeanOperationInfo [] getMBeanOperationInfo() { 28 return new MBeanOperationInfo [] { 29 new MBeanOperationInfo ("canSchedule", "Can the job be scheduled.", 30 new MBeanParameterInfo [] { 31 new MBeanParameterInfo ("component", Object .class.getName(), "The job."), 32 }, 33 Boolean.TYPE.getName(), 34 MBeanOperationInfo.INFO), 35 new MBeanOperationInfo ("summariesFor", "Get Schedule Summaris for a job.", 36 new MBeanParameterInfo [] { 37 new MBeanParameterInfo ("component", Object .class.getName(), "The job."), 38 }, 39 ScheduleSummary[].class.getName(), 40 MBeanOperationInfo.INFO), 41 new MBeanOperationInfo ("schedule", "Schedule a job.", 42 new MBeanParameterInfo [] { 43 new MBeanParameterInfo ("scheduleInstruction", ScheduleInstruction.class.getName(), "The schedule instruction.") 44 }, 45 Void.TYPE.getName(), 46 MBeanOperationInfo.ACTION), 47 new MBeanOperationInfo ("unSchedule", "Unschedule a schedule.", 48 new MBeanParameterInfo [] { 49 new MBeanParameterInfo ("id", String .class.getName(), "The schedule id.") 50 }, 51 Void.TYPE.getName(), 52 MBeanOperationInfo.ACTION) 53 }; 54 } 55 56 public MBeanNotificationInfo [] getMBeanNotificationInfo() { 57 return new MBeanNotificationInfo [0]; 58 } 59 60 61 public InterfaceHandler attach(Object 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 invoke(String actionName, Object [] params, String [] signature) throws MBeanException , ReflectionException { 74 if ("canSchedule".equals(actionName) && signature.length == 1 75 && Object .class.getName().equals(signature[0])) { 76 return new Boolean (scheduler.canSchedule(params[0])); 77 } 78 else if ("summariesFor".equals(actionName) && signature.length == 1 79 && Object .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 .class.getName().equals(signature[0])) { 89 scheduler.unSchedule((String ) params[0]); 90 return null; 91 } 92 else { 93 throw new ReflectionException ( 94 new IllegalStateException ("invoked for an unknown method."), 95 actionName); 96 } 97 } 98 99 public Notification [] getLastNotifications() { 100 return null; 101 } 102 103 public void destroy() { 104 } 105 } 106 } | Popular Tags |