import jalview.datamodel.SequenceI;
import jalview.ws.params.ArgumentI;
import jalview.ws2.api.Credentials;
+import jalview.ws2.api.JobStatus;
+import jalview.ws2.api.WebServiceJobHandle;
+/**
+ * A common interface for all web service clients that provide methods to get
+ * the URL of the server the client is talking to, submit new jobs to the server
+ * as well as poll or cancel the running jobs. This interface does not provide
+ * means to retrieve job results as those may differ between web services.
+ * Specialized sub-interfaces define methods to retrieve job results appropriate
+ * for specific service types.
+ *
+ * @author mmwarowny
+ *
+ */
public interface WebServiceClientI
{
/**
* @throws IOException
* submission failed due to a connection error
*/
- WebServiceJob submit(List<SequenceI> sequences, List<ArgumentI> args,
+ WebServiceJobHandle submit(List<SequenceI> sequences, List<ArgumentI> args,
Credentials credentials) throws IOException;
/**
- * Poll the server and update the progress of the running job accordingly.
- * Implementations should fetch the current job status from the server and
- * update the status and log strings on the provided job object.
+ * Poll the server to get the current status of the job.
*
* @param job
- * job to update
+ * web service job
+ * @return job status
* @throws IOException
- * server error occurred
+ * server communication error
+ */
+ JobStatus getStatus(WebServiceJobHandle job) throws IOException;
+
+ /**
+ * Retrieve log messages from the server for the job.
+ *
+ * @param job
+ * web service job
+ * @return log content
+ * @throws IOException
+ * server communication error
+ */
+ String getLog(WebServiceJobHandle job) throws IOException;
+
+ /**
+ * Retrieve error log messages from the server for the job.
+ *
+ * @param job
+ * web service job
+ * @return error log content
+ * @throws IOException
+ * server communication error
*/
- void updateProgress(WebServiceJob job) throws IOException;
+ String getErrorLog(WebServiceJobHandle job) throws IOException;
/**
* Send the cancellation request to the server for the specified job.
* @throws UnsupportedOperationException
* server does not support job cancellation
*/
- void cancel(WebServiceJob job) throws IOException, UnsupportedOperationException;
+ void cancel(WebServiceJobHandle job) throws IOException, UnsupportedOperationException;
}