/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow; import org.apache.commons.logging.LogFactory; import org.eclipse.core.runtime.jobs.IJobManager; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchListener; /** * Waits until all jobs of the job family {@link #MUST_BE_COMPLETED_ON_SHUTDOWN_JOB_FAMILY} completed. * * @author Doreen Seider */ public final class UncompletedJobsShutdownListener implements IWorkbenchListener { /** * Constant defining the job family the jobs must belong to to be considered on shutdown. */ public static final Object MUST_BE_COMPLETED_ON_SHUTDOWN_JOB_FAMILY = "de.rcenvironment.jobs"; @Override public void postShutdown(final IWorkbench workbench) { IJobManager jobMan = Job.getJobManager(); try { jobMan.join(MUST_BE_COMPLETED_ON_SHUTDOWN_JOB_FAMILY, null); } catch (InterruptedException e) { LogFactory.getLog(getClass()).error("Completing jobs failed", e); } } @Override public boolean preShutdown(IWorkbench workbench, boolean forced) { return true; } }