diff --git a/config/alfresco/scheduled-jobs-context.xml b/config/alfresco/scheduled-jobs-context.xml index e23ee83b59..8090725384 100644 --- a/config/alfresco/scheduled-jobs-context.xml +++ b/config/alfresco/scheduled-jobs-context.xml @@ -28,6 +28,9 @@ true + + org.alfresco.repo.scheduler.AlfrescoSchedulerFactory + diff --git a/source/java/org/alfresco/repo/scheduler/AlfrescoSchedulerFactory.java b/source/java/org/alfresco/repo/scheduler/AlfrescoSchedulerFactory.java new file mode 100644 index 0000000000..bc3728fd06 --- /dev/null +++ b/source/java/org/alfresco/repo/scheduler/AlfrescoSchedulerFactory.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2005-2009 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have received a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.repo.scheduler; + +import org.quartz.Scheduler; +import org.quartz.core.QuartzScheduler; +import org.quartz.core.QuartzSchedulerResources; +import org.quartz.impl.StdSchedulerFactory; +import org.quartz.spi.JobStore; + +/** + * A special Scheduler Factory that provides a Scheduler reference to JobStores implementing the {@link SchedulerAware} + * interface. + * + * @author dward + */ +public class AlfrescoSchedulerFactory extends StdSchedulerFactory +{ + + @Override + protected Scheduler instantiate(QuartzSchedulerResources rsrcs, QuartzScheduler qs) + { + Scheduler scheduler = super.instantiate(rsrcs, qs); + JobStore jobStore = rsrcs.getJobStore(); + if (jobStore instanceof SchedulerAware) + { + ((SchedulerAware) jobStore).setScheduler(scheduler); + } + return scheduler; + } + +} diff --git a/source/java/org/alfresco/repo/scheduler/SchedulerAware.java b/source/java/org/alfresco/repo/scheduler/SchedulerAware.java new file mode 100644 index 0000000000..1bea54ac45 --- /dev/null +++ b/source/java/org/alfresco/repo/scheduler/SchedulerAware.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2005-2009 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have received a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.repo.scheduler; + +import org.quartz.Scheduler; + +/** + * An interface used by the {@link AlfrescoSchedulerFactory} in order to initialise a Quartz job store with a reference + * to its scheduler. This is primarily to allow the monitoring interface on the job store to allow functions such as + * 'execute now'. + * + * @author dward + */ +public interface SchedulerAware +{ + + /** + * Provides a reference to the scheduler. + * + * @param scheduler + * the scheduler + */ + public void setScheduler(Scheduler scheduler); +}