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)
{