X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Frest%2FRestJobThread.java;h=cff127b6616c85227ce7eae1739b2dab02b593eb;hb=304e64fb34b32659be1bbfd39fb4e15b2f79586e;hp=20b517b3c16db8c2bfab3092544f9513e7a4d894;hpb=61ff8fb4efa315c35149c9d11850d99e3d00c441;p=jalview.git diff --git a/src/jalview/ws/rest/RestJobThread.java b/src/jalview/ws/rest/RestJobThread.java index 20b517b..cff127b 100644 --- a/src/jalview/ws/rest/RestJobThread.java +++ b/src/jalview/ws/rest/RestJobThread.java @@ -61,8 +61,6 @@ import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.protocol.BasicHttpContext; -import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils; public class RestJobThread extends AWSThread @@ -218,9 +216,6 @@ public class RestJobThread extends AWSThread protected void doHttpReq(Stage stg, RestJob rj, String postUrl) throws Exception { - StringBuffer respText = new StringBuffer(); - // con.setContentHandlerFactory(new - // jalview.ws.io.mime.HttpContentHandler()); HttpRequestBase request = null; String messages = ""; if (stg == Stage.SUBMIT) @@ -255,7 +250,6 @@ public class RestJobThread extends AWSThread { DefaultHttpClient httpclient = new DefaultHttpClient(); - HttpContext localContext = new BasicHttpContext(); HttpResponse response = null; try { @@ -289,39 +283,21 @@ public class RestJobThread extends AWSThread Cache.log.debug("Processing result set."); processResultSet(rj, response, request); break; + case 202: - rj.statMessage = "
Job submitted successfully. Results available at this URL:\n" - + "" + rj.getJobId() - + "
"; - rj.running = true; + markJobAsRunning(rj); break; + + case 201: + // Created - redirect may be present. Fallthrough to 302 case 302: - Header[] loc; - if (!rj.isSubmitted() - && (loc = response - .getHeaders(HTTPConstants.HEADER_LOCATION)) != null - && loc.length > 0) - { - if (loc.length > 1) - { - Cache.log.warn("Ignoring additional " + (loc.length - 1) - + " location(s) provided in response header ( next one is '" - + loc[1].getValue() + "' )"); - } - rj.setJobId(loc[0].getValue()); - rj.setSubmitted(true); - } + extractJobId(rj, response); completeStatus(rj, response); break; case 500: - // Failed. - rj.setSubmitted(true); - rj.setAllowedServerExceptions(0); - rj.setSubjobComplete(true); - rj.error = true; - rj.running = false; - completeStatus(rj, response, - "" + getStage(stg) + "failed. Reason below:\n"); + markAsFailed(rj, response); + completeStatus(rj, response, "" + getStage(stg) + + "failed. Reason below:\n"); break; default: // Some other response. Probably need to pop up the content in a window. @@ -348,6 +324,64 @@ public class RestJobThread extends AWSThread } } + private void markAsFailed(RestJob rj, HttpResponse response) + { + // Failed. + rj.setSubmitted(true); + rj.setAllowedServerExceptions(0); + rj.setSubjobComplete(true); + rj.error = true; + rj.running = false; + } + + /** + * set the jobRunning flag and post a link to the physical result page encoded + * in rj.getJobId() + * + * @param rj + */ + private void markJobAsRunning(RestJob rj) + { + rj.statMessage = "
Job submitted successfully. Results available at this URL:\n" + + "" + + rj.getJobId() + + "
"; + rj.running = true; + } + + /** + * extract the job ID URL from the redirect page. Does nothing if job is + * already running. + * + * @param rj + * @param response + */ + private void extractJobId(RestJob rj, HttpResponse response) + { + Header[] loc; + if (!rj.isSubmitted()) + { + + // redirect URL - typical for IBIVU type jobs. + if ((loc = response.getHeaders(HTTPConstants.HEADER_LOCATION)) != null + && loc.length > 0) + { + if (loc.length > 1) + { + Cache.log + .warn("Ignoring additional " + + (loc.length - 1) + + " location(s) provided in response header ( next one is '" + + loc[1].getValue() + "' )"); + } + rj.setJobId(loc[0].getValue()); + rj.setSubmitted(true); + } + } + } + /** * job has completed. Something valid should be available from con * @@ -577,12 +611,12 @@ public class RestJobThread extends AWSThread /** * alignment panels derived from each alignment set returned by service. */ - ArrayList destPanels = new ArrayList(); + ArrayList destPanels = new ArrayList<>(); /** * list of instructions for how to process each distinct alignment set * returned by the job set */ - ArrayList resultDest = new ArrayList(); + ArrayList resultDest = new ArrayList<>(); /** * when false, zeroth pane is panel derived from input deta. */ @@ -601,9 +635,9 @@ public class RestJobThread extends AWSThread boolean vsepjobs = restClient.service.isVseparable(); // total number of distinct alignment sets generated by job set. int numAlSets = 0, als = 0; - List destAls = new ArrayList(); - List destColsel = new ArrayList(); - List> trees = new ArrayList>(); + List destAls = new ArrayList<>(); + List destColsel = new ArrayList<>(); + List> trees = new ArrayList<>(); do { @@ -662,7 +696,7 @@ public class RestJobThread extends AWSThread if (alset.trees != null) { - trees.add(new ArrayList(alset.trees)); + trees.add(new ArrayList<>(alset.trees)); } else { @@ -690,8 +724,8 @@ public class RestJobThread extends AWSThread */ int vrestjob = 0; // Destination alignments for all result data. - ArrayList visgrps = new ArrayList(); - Hashtable groupNames = new Hashtable(); + ArrayList visgrps = new ArrayList<>(); + Hashtable groupNames = new Hashtable<>(); ArrayList visAlAn = null; for (nvertsep = 0; nvertsep < nvertseps; nvertsep++) { @@ -955,7 +989,7 @@ public class RestJobThread extends AWSThread } if (visAlAn == null) { - visAlAn = new ArrayList(); + visAlAn = new ArrayList<>(); } AlignmentAnnotation visan = null; for (AlignmentAnnotation v : visAlAn) @@ -1039,8 +1073,9 @@ public class RestJobThread extends AWSThread HiddenColumns destcs; String alTitle = MessageManager .formatMessage("label.webservice_job_title_on", new String[] - { restClient.service.details.Action, - restClient.service.details.Name, restClient.viewTitle }); + { restClient.service.details.getAction(), + restClient.service.details.getName(), + restClient.viewTitle }); switch (action) { case newAlignment: @@ -1250,7 +1285,7 @@ public class RestJobThread extends AWSThread */ public boolean isValid() { - ArrayList _warnings = new ArrayList(); + ArrayList _warnings = new ArrayList<>(); boolean validt = true; if (jobs != null) {