/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * 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 Lesser General Public License for more details. * * Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved. */ package org.pentaho.platform.scheduler2.ws; import java.util.Map; import javax.jws.WebService; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.pentaho.platform.api.scheduler2.ComplexJobTrigger; import org.pentaho.platform.api.scheduler2.Job; import org.pentaho.platform.api.scheduler2.SchedulerException; import org.pentaho.platform.api.scheduler2.SimpleJobTrigger; /** * A service interface used for exposing scheduling capabilities as JAXWS or other endpoints. * <p> * <strong>WARNING: If you change this interface or any of the objects related to this API, you are effectively changing * the WSDL which is generated by JAXWS from this interface. Changing the WSDL means you are changing the contract by * which clients talk to the scheduling service.</strong> * <p> * Currently {@link SimpleJobTrigger} and {@link ComplexJobTrigger} are natively JAXB marshallable. Each trigger class * contains JAXB annotations to allow us to use the real trigger object model and not to use a XmlJavaTypeAdapter class. * For the {@link Job} object, we are using the {@link JobAdapter} to send the {@link Job} over the wire. We realize * that two different approaches were taken here and perhaps a unified approach is best, but each object model was taken * on and the best approach to JAXB compatibility assessed based on their own merits. In any case, the JAXB compliance * unit tests in this project will provide assurance that each type transported over the WS remains functional. * * @author aphillips */ @WebService public interface ISchedulerService { /** @see IScheduler#createJob(String, Class, java.util.Map, org.pentaho.platform.api.scheduler2.JobTrigger) */ public String createSimpleJob( String jobName, @XmlJavaTypeAdapter( JobParamsAdapter.class ) Map<String, ParamValue> jobParams, SimpleJobTrigger trigger ) throws SchedulerException; /** @see IScheduler#createJob(String, Class, java.util.Map, org.pentaho.platform.api.scheduler2.JobTrigger) */ public String createComplexJob( String jobName, @XmlJavaTypeAdapter( JobParamsAdapter.class ) Map<String, ParamValue> jobParams, ComplexJobTrigger trigger ) throws SchedulerException; /** @see IScheduler#updateJob(String, java.util.Map, org.pentaho.platform.api.scheduler2.JobTrigger) */ public void updateJobToUseSimpleTrigger( String jobId, @XmlJavaTypeAdapter( JobParamsAdapter.class ) Map<String, ParamValue> jobParams, SimpleJobTrigger trigger ) throws SchedulerException; /** @see IScheduler#updateJob(String, java.util.Map, org.pentaho.platform.api.scheduler2.JobTrigger) */ public void updateJobToUseComplexTrigger( String jobId, @XmlJavaTypeAdapter( JobParamsAdapter.class ) Map<String, ParamValue> jobParams, ComplexJobTrigger trigger ) throws SchedulerException; /** @see IScheduler#removeJob(String) */ public void removeJob( String jobId ) throws SchedulerException; /** @see IScheduler#pauseJob(String) */ public void pauseJob( String jobId ) throws SchedulerException; /** @see IScheduler#resumeJob(String) */ public void resumeJob( String jobId ) throws SchedulerException; /** @see IScheduler#pause() */ public void pause() throws SchedulerException; /** @see IScheduler#start() */ public void start() throws SchedulerException; /** @see IScheduler#getJobs(org.pentaho.platform.api.scheduler2.IJobFilter) */ @XmlJavaTypeAdapter( JobAdapter.class ) public Job[] getJobs() throws SchedulerException; /** * Returns the scheduler status. * * @return the ordinal value of the current scheduler state * @see IScheduler#getStatus() */ public int getSchedulerStatus() throws SchedulerException; }