1 package fr.in2p3.jsaga.engine.job.monitor.listen;
2
3 import fr.in2p3.jsaga.adaptor.job.monitor.JobStatus;
4 import fr.in2p3.jsaga.engine.job.monitor.JobMonitorCallback;
5 import fr.in2p3.jsaga.engine.job.monitor.JobRegistry;
6 import fr.in2p3.jsaga.engine.job.monitor.request.JobStatusRequestor;
7 import org.ogf.saga.error.*;
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public abstract class AbstractJobStatusListener implements JobRegistry {
22 protected JobStatusRequestor m_requestor;
23
24 public AbstractJobStatusListener(JobStatusRequestor requestor) {
25 m_requestor = requestor;
26 }
27
28 protected abstract void doSubscribeJob(String nativeJobId, JobMonitorCallback callback) throws TimeoutException, NoSuccessException;
29
30 public void subscribeJob(String nativeJobId, JobMonitorCallback callback) throws TimeoutException, NoSuccessException {
31
32 this.doSubscribeJob(nativeJobId, callback);
33
34
35 try {
36 JobStatus status = m_requestor.getJobStatus(nativeJobId);
37 callback.setState(status.getSagaState(), status.getStateDetail(), status.getSubState(), status.getCause());
38 } catch (NotImplementedException e) {
39
40 }
41 }
42 }