All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ow2.petals.bc.quartz.QuartzBc Maven / Gradle / Ivy

There is a newer version: 1.8.0
Show newest version
/**
 * Copyright (c) 2007-2012 EBM WebSourcing, 2012-2017 Linagora
 * 
 * This program/library is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 2.1 of the License, or (at your
 * option) any later version.
 * 
 * This program/library 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 Lesser General Public License
 * for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program/library; If not, see http://www.gnu.org/licenses/
 * for the GNU Lesser General Public License version 2.1.
 */
package org.ow2.petals.bc.quartz;

import javax.jbi.JBIException;

import org.ow2.petals.component.framework.bc.AbstractBindingComponent;
import org.ow2.petals.component.framework.bc.BindingComponentServiceUnitManager;
import org.ow2.petals.component.framework.listener.AbstractExternalListener;
import org.ow2.petals.component.framework.su.AbstractServiceUnitManager;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;

/**
 * 
 * Apparently the Quartz SE is actually a BC...
 * 
 * @author Adrien LOUIS - EBM WebSourcing
 */
public class QuartzBc extends AbstractBindingComponent {

    /**
     * The Quartz scheduler.
     */
    private Scheduler quartzScheduler;

    /**
     * @return the Quartz scheduler
     */
    public Scheduler getQuartzScheduler() {
        return this.quartzScheduler;
    }

    @Override
    public void doInit() throws JBIException {
        try {
            this.quartzScheduler = StdSchedulerFactory.getDefaultScheduler();

        } catch (final SchedulerException e) {
            throw new JBIException("An error occurred while creating the Quartz scheduler.", e);
        }
    }

    @Override
    public void doStart() throws JBIException {
        try {
            this.quartzScheduler.start();

        } catch (final SchedulerException e) {
            throw new JBIException("An error occurred while starting the Quartz scheduler.", e);
        }
    }

    @Override
    public void doStop() throws JBIException {
        try {
            this.quartzScheduler.standby();

        } catch (final SchedulerException e) {
            throw new JBIException("An error occurred while stopping the Quartz scheduler.", e);
        }
    }

    @Override
    public void doShutdown() throws JBIException {
        try {
            if (this.quartzScheduler != null) {
                this.quartzScheduler.shutdown(false);
            }

        } catch (final SchedulerException e) {
            throw new JBIException("An error occurred while shutdowning the Quartz scheduler.", e);
        }
    }

    @Override
    protected AbstractServiceUnitManager createServiceUnitManager() {
        return new BindingComponentServiceUnitManager(this) {
            @Override
            protected AbstractExternalListener createExternalListener() {
                return new QuartzExternalListener();
            }
        };
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy