public void updateCronTrigger()

in hawtio-system/src/main/java/io/hawt/jmx/QuartzFacade.java [99:144]


    public void updateCronTrigger(String schedulerObjectName, String triggerName, String groupName, int misfireInstruction,
                                  String cronExpression, String timeZone) throws Exception {
        if (schedulerObjectName == null) {
            throw new IllegalArgumentException("Cannot find quartz scheduler with ObjectName: " + schedulerObjectName);
        }

        ObjectName on = ObjectName.getInstance(schedulerObjectName);
        if (!mBeanServer.isRegistered(on)) {
            throw new IllegalArgumentException("Cannot find quartz scheduler with ObjectName: " + schedulerObjectName);
        }

        // get existing trigger map
        CompositeData data = (CompositeData) mBeanServer.invoke(on, "getTrigger", new Object[] { triggerName, groupName }, new String[] { "java.lang.String", "java.lang.String" });
        if (data == null) {
            throw new IllegalArgumentException("Cannot find trigger details for group: " + groupName + " name: " + triggerName);
        }
        // trigger references job - let's get its data
        String jobName = (String) data.get("jobName");
        String jobGroupName = (String) data.get("jobGroup");
        CompositeData jobData = (CompositeData) mBeanServer.invoke(on, "getJobDetail", new Object[] { jobName, jobGroupName }, new String[] { "java.lang.String", "java.lang.String" });
        if (jobData == null) {
            throw new IllegalArgumentException("Cannot find job details for group: " + jobGroupName + " name: " + jobName);
        }

        Map<String, Object> jobParams = new HashMap<>();
        Map<String, Object> jobDataMap = new HashMap<>();
        initJobParams(jobParams, jobDataMap, jobName, jobGroupName, jobData);

        Map<String, Object> triggerParams = new HashMap<>();
        jobDataMap.put("CamelQuartzTriggerType", "cron");
        // also ensure the job data map is up to date with the cron trigger changes
        triggerParams.put("cronExpression", cronExpression);
        jobDataMap.put("CamelQuartzTriggerCronExpression", cronExpression);
        if (timeZone != null) {
            triggerParams.put("timeZone", timeZone);
            jobDataMap.put("CamelQuartzTriggerCronTimeZone", timeZone);
        }
        triggerParams.put("name", triggerName);
        triggerParams.put("group", groupName);
        triggerParams.put("jobName", jobName);
        triggerParams.put("jobGroup", jobGroupName);
        triggerParams.put("misfireInstruction", misfireInstruction);

        // update trigger
        mBeanServer.invoke(on, "scheduleBasicJob", new Object[] { jobParams, triggerParams }, new String[] { "java.util.Map", "java.util.Map" });
    }