View Javadoc

1   package fr.in2p3.jsaga.impl.job.instance;
2   
3   import fr.in2p3.jsaga.impl.job.service.AbstractSyncJobServiceImpl;
4   import fr.in2p3.jsaga.impl.job.staging.mgr.DataStagingManager;
5   import org.ogf.saga.error.*;
6   import org.ogf.saga.job.Job;
7   import org.ogf.saga.job.JobDescription;
8   import org.ogf.saga.session.Session;
9   import org.ogf.saga.task.State;
10  import org.ogf.saga.task.TaskMode;
11  
12  import java.io.InputStream;
13  import java.io.OutputStream;
14  
15  /* ***************************************************
16   * *** Centre de Calcul de l'IN2P3 - Lyon (France) ***
17   * ***             http://cc.in2p3.fr/             ***
18   * ***************************************************
19   * File:   JobImpl
20   * Author: Sylvain Reynaud (sreynaud@in2p3.fr)
21   * Date:   5 juin 2009
22   * ***************************************************
23   * Description:                                      */
24  /**
25   *
26   */
27  public class JobImpl extends AbstractAsyncJobImpl implements Job {
28      private String m_scheme;
29  
30      /** constructor for submission */
31      public JobImpl(Session session, String nativeJobDesc, JobDescription jobDesc, DataStagingManager stagingMgr, String uniqId, AbstractSyncJobServiceImpl service) throws NotImplementedException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, TimeoutException, NoSuccessException {
32          super(session, nativeJobDesc, jobDesc, stagingMgr, uniqId, service);
33          m_scheme = service.m_resourceManager.getScheme();
34      }
35  
36      /** constructor for control and monitoring only */
37      public JobImpl(Session session, String nativeJobId, DataStagingManager stagingMgr, AbstractSyncJobServiceImpl service) throws NotImplementedException, BadParameterException, TimeoutException, NoSuccessException {
38          super(session, nativeJobId, stagingMgr, service);
39          m_scheme = service.m_resourceManager.getScheme();
40      }
41  
42      ////////////////////////////////////////// interface Task ///////////////////////////////////////////
43  
44      public void run() throws NotImplementedException, IncorrectStateException, TimeoutException, NoSuccessException {
45          float timeout = this.getTimeout("run");
46          if (timeout == WAIT_FOREVER) {
47              super.run();
48          } else {
49              try {
50                  getResult(super.run(TaskMode.ASYNC), timeout);
51              }
52              catch (IncorrectURLException e) {throw new NoSuccessException(e);}
53              catch (AuthenticationFailedException e) {throw new NoSuccessException(e);}
54              catch (AuthorizationFailedException e) {throw new NoSuccessException(e);}
55              catch (PermissionDeniedException e) {throw new NoSuccessException(e);}
56              catch (BadParameterException e) {throw new NoSuccessException(e);}
57              catch (AlreadyExistsException e) {throw new NoSuccessException(e);}
58              catch (DoesNotExistException e) {throw new NoSuccessException(e);}
59              catch (SagaIOException e) {throw new NoSuccessException(e);}
60          }
61      }
62  
63      public void cancel() throws NotImplementedException, IncorrectStateException, TimeoutException, NoSuccessException {
64          float timeout = this.getTimeout("cancel");
65          if (timeout == WAIT_FOREVER) {
66              super.cancel();
67          } else {
68              try {
69                  getResult(super.cancel(TaskMode.ASYNC), timeout);
70              }
71              catch (IncorrectURLException e) {throw new NoSuccessException(e);}
72              catch (AuthenticationFailedException e) {throw new NoSuccessException(e);}
73              catch (AuthorizationFailedException e) {throw new NoSuccessException(e);}
74              catch (PermissionDeniedException e) {throw new NoSuccessException(e);}
75              catch (BadParameterException e) {throw new NoSuccessException(e);}
76              catch (AlreadyExistsException e) {throw new NoSuccessException(e);}
77              catch (DoesNotExistException e) {throw new NoSuccessException(e);}
78              catch (SagaIOException e) {throw new NoSuccessException(e);}
79          }
80      }
81  
82      public State getState() throws NotImplementedException, TimeoutException, NoSuccessException {
83          float timeout = this.getTimeout("getState");
84          if (timeout == WAIT_FOREVER) {
85              return super.getState();
86          } else {
87              try {
88                  return (State) getResult(super.getState(TaskMode.ASYNC), timeout);
89              }
90              catch (IncorrectURLException e) {throw new NoSuccessException(e);}
91              catch (AuthenticationFailedException e) {throw new NoSuccessException(e);}
92              catch (AuthorizationFailedException e) {throw new NoSuccessException(e);}
93              catch (PermissionDeniedException e) {throw new NoSuccessException(e);}
94              catch (BadParameterException e) {throw new NoSuccessException(e);}
95              catch (IncorrectStateException e) {throw new NoSuccessException(e);}
96              catch (AlreadyExistsException e) {throw new NoSuccessException(e);}
97              catch (DoesNotExistException e) {throw new NoSuccessException(e);}
98              catch (SagaIOException e) {throw new NoSuccessException(e);}
99          }
100     }
101 
102     //////////////////////////////////////////// interface Job ////////////////////////////////////////////
103 
104     public JobDescription getJobDescription() throws NotImplementedException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, DoesNotExistException, TimeoutException, NoSuccessException {
105         float timeout = this.getTimeout("getJobDescription");
106         if (timeout == WAIT_FOREVER) {
107             return super.getJobDescriptionSync();
108         } else {
109             try {
110                 return (JobDescription) getResult(super.getJobDescription(TaskMode.ASYNC), timeout);
111             }
112             catch (IncorrectURLException e) {throw new NoSuccessException(e);}
113             catch (BadParameterException e) {throw new NoSuccessException(e);}
114             catch (IncorrectStateException e) {throw new NoSuccessException(e);}
115             catch (AlreadyExistsException e) {throw new NoSuccessException(e);}
116             catch (SagaIOException e) {throw new NoSuccessException(e);}
117         }
118     }
119 
120     public OutputStream getStdin() throws NotImplementedException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, DoesNotExistException, TimeoutException, IncorrectStateException, NoSuccessException {
121         // can not hang...
122         return super.getStdinSync();
123     }
124 
125     public InputStream getStdout() throws NotImplementedException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, DoesNotExistException, TimeoutException, IncorrectStateException, NoSuccessException {
126         // can not hang...
127         return super.getStdoutSync();
128     }
129 
130     public InputStream getStderr() throws NotImplementedException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, DoesNotExistException, TimeoutException, IncorrectStateException, NoSuccessException {
131         // can not hang...
132         return super.getStderrSync();
133     }
134 
135     public void suspend() throws NotImplementedException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, IncorrectStateException, TimeoutException, NoSuccessException {
136         float timeout = this.getTimeout("suspend");
137         if (timeout == WAIT_FOREVER) {
138             super.suspendSync();
139         } else {
140             try {
141                 getResult(super.suspend(TaskMode.ASYNC), timeout);
142             }
143             catch (IncorrectURLException e) {throw new NoSuccessException(e);}
144             catch (BadParameterException e) {throw new NoSuccessException(e);}
145             catch (AlreadyExistsException e) {throw new NoSuccessException(e);}
146             catch (DoesNotExistException e) {throw new NoSuccessException(e);}
147             catch (SagaIOException e) {throw new NoSuccessException(e);}
148         }
149     }
150 
151     public void resume() throws NotImplementedException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, IncorrectStateException, TimeoutException, NoSuccessException {
152         float timeout = this.getTimeout("resume");
153         if (timeout == WAIT_FOREVER) {
154             super.resumeSync();
155         } else {
156             try {
157                 getResult(super.resume(TaskMode.ASYNC), timeout);
158             }
159             catch (IncorrectURLException e) {throw new NoSuccessException(e);}
160             catch (BadParameterException e) {throw new NoSuccessException(e);}
161             catch (AlreadyExistsException e) {throw new NoSuccessException(e);}
162             catch (DoesNotExistException e) {throw new NoSuccessException(e);}
163             catch (SagaIOException e) {throw new NoSuccessException(e);}
164         }
165     }
166 
167     public void checkpoint() throws NotImplementedException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, IncorrectStateException, TimeoutException, NoSuccessException {
168         float timeout = this.getTimeout("checkpoint");
169         if (timeout == WAIT_FOREVER) {
170             super.checkpointSync();
171         } else {
172             try {
173                 getResult(super.checkpoint(TaskMode.ASYNC), timeout);
174             }
175             catch (IncorrectURLException e) {throw new NoSuccessException(e);}
176             catch (BadParameterException e) {throw new NoSuccessException(e);}
177             catch (AlreadyExistsException e) {throw new NoSuccessException(e);}
178             catch (DoesNotExistException e) {throw new NoSuccessException(e);}
179             catch (SagaIOException e) {throw new NoSuccessException(e);}
180         }
181     }
182 
183     public void migrate(JobDescription jd) throws NotImplementedException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, IncorrectStateException, TimeoutException, NoSuccessException {
184         float timeout = this.getTimeout("migrate");
185         if (timeout == WAIT_FOREVER) {
186             super.migrateSync(jd);
187         } else {
188             try {
189                 getResult(super.migrate(TaskMode.ASYNC, jd), timeout);
190             }
191             catch (IncorrectURLException e) {throw new NoSuccessException(e);}
192             catch (AlreadyExistsException e) {throw new NoSuccessException(e);}
193             catch (DoesNotExistException e) {throw new NoSuccessException(e);}
194             catch (SagaIOException e) {throw new NoSuccessException(e);}
195         }
196     }
197 
198     public void signal(int signum) throws NotImplementedException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, IncorrectStateException, TimeoutException, NoSuccessException {
199         float timeout = this.getTimeout("signal");
200         if (timeout == WAIT_FOREVER) {
201             super.signalSync(signum);
202         } else {
203             try {
204                 getResult(super.signal(TaskMode.ASYNC, signum), timeout);
205             }
206             catch (IncorrectURLException e) {throw new NoSuccessException(e);}
207             catch (AlreadyExistsException e) {throw new NoSuccessException(e);}
208             catch (DoesNotExistException e) {throw new NoSuccessException(e);}
209             catch (SagaIOException e) {throw new NoSuccessException(e);}
210         }
211     }
212 
213     ////////////////////////////////////// private methods //////////////////////////////////////
214 
215     private float getTimeout(String methodName) throws NoSuccessException {
216         return getTimeout(Job.class, methodName, m_scheme);
217     }
218 }