Index: src/main/java/info/magnolia/module/scheduler/StatefulCommandJob.java =================================================================== --- src/main/java/info/magnolia/module/scheduler/StatefulCommandJob.java (revision 0) +++ src/main/java/info/magnolia/module/scheduler/StatefulCommandJob.java (revision 0) @@ -0,0 +1,47 @@ +/** + * This file Copyright (c) 2010 Magnolia International + * Ltd. (http://www.magnolia-cms.com). All rights reserved. + * + * + * This file is dual-licensed under both the Magnolia + * Network Agreement and the GNU General Public License. + * You may elect to use one or the other of these licenses. + * + * This file is distributed in the hope that it will be + * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the + * implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT. + * Redistribution, except as permitted by whichever of the GPL + * or MNA you select, is prohibited. + * + * 1. For the GPL license (GPL), you can redistribute and/or + * modify this file under the terms of the GNU General + * Public License, Version 3, as published by the Free Software + * Foundation. You should have received a copy of the GNU + * General Public License, Version 3 along with this program; + * if not, write to the Free Software Foundation, Inc., 51 + * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * 2. For the Magnolia Network Agreement (MNA), this file + * and the accompanying materials are made available under the + * terms of the MNA which accompanies this distribution, and + * is available at http://www.magnolia-cms.com/mna.html + * + * Any modifications to this file must keep this entire header + * intact. + * + */ +package info.magnolia.module.scheduler; + +import org.quartz.StatefulJob; + +/** + * A simple subclass of {@link CommandJob} which implements the {@link StatefulJob} marker interface, + * allowing the non-concurrent execution of jobs. + * + * @author gjoseph + * @version $Revision: $ ($Author: $) + */ +public class StatefulCommandJob extends CommandJob implements StatefulJob { + +} Index: src/main/java/info/magnolia/module/scheduler/JobDefinition.java =================================================================== --- src/main/java/info/magnolia/module/scheduler/JobDefinition.java (revision 40600) +++ src/main/java/info/magnolia/module/scheduler/JobDefinition.java (working copy) @@ -53,6 +53,8 @@ private String catalog; + private boolean isConcurrent = true; + private Map params; public JobDefinition() { @@ -107,6 +109,14 @@ this.cron = cron; } + public boolean isConcurrent() { + return isConcurrent; + } + + public void setConcurrent(boolean concurrent) { + isConcurrent = concurrent; + } + public Map getParams() { return this.params; } Index: src/main/java/info/magnolia/module/scheduler/SchedulerModule.java =================================================================== --- src/main/java/info/magnolia/module/scheduler/SchedulerModule.java (revision 40601) +++ src/main/java/info/magnolia/module/scheduler/SchedulerModule.java (working copy) @@ -173,7 +173,8 @@ return; } - JobDetail jd = new JobDetail(job.getName(), SchedulerConsts.SCHEDULER_GROUP_NAME, CommandJob.class); + final Class jobClass = job.isConcurrent() ? CommandJob.class : StatefulCommandJob.class; + final JobDetail jd = new JobDetail(job.getName(), SchedulerConsts.SCHEDULER_GROUP_NAME, jobClass); jd.getJobDataMap().put(SchedulerConsts.CONFIG_JOB_COMMAND, job.getCommand()); jd.getJobDataMap().put(SchedulerConsts.CONFIG_JOB_COMMAND_CATALOG, job.getCatalog()); jd.getJobDataMap().put(SchedulerConsts.CONFIG_JOB_PARAMS, job.getParams());