View Javadoc

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  * *** Centre de Calcul de l'IN2P3 - Lyon (France) ***
11  * ***             http://cc.in2p3.fr/             ***
12  * ***************************************************
13  * File:   AbstractJobStatusListener
14  * Author: Sylvain Reynaud (sreynaud@in2p3.fr)
15  * Date:   11 janv. 2008
16  * ***************************************************
17  * Description:                                      */
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          // subscribe to next status changes
32          this.doSubscribeJob(nativeJobId, callback);
33  
34          // try to notify initial status
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              // ignore if no QueryJob interface is implemented
40          }
41      }
42  }