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

org.glassfish.api.admin.JobManager Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.api.admin;

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.Iterator;

import org.glassfish.api.admin.progress.JobInfos;
import org.jvnet.hk2.annotations.Contract;

/**
 * This is the contract for the JobManagerService The JobManager will be responsible for 1. generating unique ids for
 * jobs 2. serving as a registry for jobs 3. creating thread pools for jobs 4.removing expired jobs
 *
 * @author Martin Mares
 * @author Bhakti Mehta
 */

@Contract
public interface JobManager {

    /**
     * Container for checkpoint related objects
     */
    public class Checkpoint implements Serializable {

        private static final long serialVersionUID = 1L;

        private Job job;
        private AdminCommand command;
        private AdminCommandContext context;

        public Checkpoint(Job job, AdminCommand command, AdminCommandContext context) {
            this.job = job;
            this.command = command;
            this.context = context;
        }

        public Job getJob() {
            return job;
        }

        public AdminCommand getCommand() {
            return command;
        }

        public AdminCommandContext getContext() {
            return context;
        }

    }

    /**
     * This method is used to generate a unique id for a managed job
     *
     * @return returns a new id for the job
     */
    String getNewId();

    /**
     * This method will register the job in the job registry
     *
     * @param instance job to be registered
     * @throws IllegalArgumentException
     */
    void registerJob(Job instance) throws IllegalArgumentException;

    /**
     * This method will return the list of jobs in the job registry
     *
     * @return list of jobs
     */
    Iterator getJobs();

    /**
     * This method is used to get a job by its id
     *
     * @param id The id to look up the job in the job registry
     * @return the Job
     */
    Job get(String id);

    /**
     * This will purge the job associated with the id from the registry
     *
     * @param id the id of the Job which needs to be purged
     */
    void purgeJob(String id);

    /**
     * This will get the list of jobs from the job registry which have completed
     *
     * @return the details of all completed jobs using JobInfos
     */
    JobInfos getCompletedJobs(File jobs);

    /**
     * This is a convenience method to get a completed job with an id
     *
     * @param id the completed Job whose id needs to be looked up
     * @return the completed Job
     */
    Object getCompletedJobForId(String id);

    /**
     * This is used to purge a completed job whose id is provided
     *
     * @param id the id of the Job which needs to be purged
     * @return the new list of completed jobs
     */
    Object purgeCompletedJobForId(String id);

    /**
     * This is used to get the jobs file for a job
     *
     * @return the location of the job file
     */
    File getJobsFile();

    /**
     * Stores current command state.
     */
    void checkpoint(AdminCommand command, AdminCommandContext context) throws IOException;

    /**
     * Stores current command state.
     */
    void checkpoint(AdminCommandContext context, Serializable data) throws IOException;

    /**
     * Load checkpoint related data.
     */
     T loadCheckpointData(String jobId) throws IOException, ClassNotFoundException;

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy