package org.jboss.tools.runtime.reddeer.condition; import java.util.HashSet; import java.util.Set; import org.eclipse.core.runtime.jobs.Job; import org.jboss.reddeer.common.condition.AbstractWaitCondition; import org.jboss.reddeer.common.logging.Logger; /** * * @author apodhrad * */ public class JobIsKilled extends AbstractWaitCondition { private static final Logger log = Logger.getLogger(JobIsKilled.class); private Job[] currentJobs; private Set<String> jobsToBeKilled; public JobIsKilled(String... jobsToBeKilled) { this.jobsToBeKilled = new HashSet<>(); for (String jobToBeKilled : jobsToBeKilled) { this.jobsToBeKilled.add(jobToBeKilled); } } @Override public boolean test() { currentJobs = Job.getJobManager().find(null); for (Job job : currentJobs) { if (jobsToBeKilled.contains(job.getName())) { log.info("Job '" + job.getName() + "' will be killed"); job.cancel(); jobsToBeKilled.remove(job.getName()); } } return jobsToBeKilled.isEmpty(); } @Override public String description() { return "at least one job is waiting for killing"; } @Override public String errorMessage() { return "The following jobs were not killed " + jobsToBeKilled; } }