package nl.ipo.cds.executor; import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; import nl.idgis.commons.jobexecutor.Job; import nl.idgis.commons.jobexecutor.JobExecutor; import org.springframework.jmx.export.annotation.ManagedAttribute; import org.springframework.jmx.export.annotation.ManagedOperation; import org.springframework.jmx.export.annotation.ManagedResource; @ManagedResource(description="CDS-INSPIRE JobExecutor") public class JobExecuterMBean { private final JobExecutor jobExecutor; private final Date startTime; public JobExecuterMBean (JobExecutor jobExecutor) { this.jobExecutor = jobExecutor; this.startTime = new Date(); } @ManagedAttribute(description="A list of IDs of running jobs") public List<Long> getRunningJobs() { final Job runningJob = jobExecutor.getRunningJob(); if(runningJob == null) { return Collections.emptyList(); } return Arrays.asList(runningJob.getId()); } @ManagedAttribute(description="The start time of this JobExecuter") public Date getStartTime() { return startTime; } @ManagedOperation(description="Terminate JobExecuter") public void terminate() { jobExecutor.terminate(); } @ManagedAttribute(description="The number of processed jobs") public Long getProcessedJobs() { return jobExecutor.getProcessedJobs(); } @ManagedAttribute(description="Indicates whether this JobExecuter is terminating") public boolean isTerminating() { return jobExecutor.isTerminating(); } }