X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fws%2Frest%2FRestJobThread.java;h=75d2cd47215ef099d85d1de633174c73a24e503d;hb=65d6d09cd08743d481d39521bb0298ea683888f8;hp=4bc183a92fee10e806bf13aec411caa301cc0f14;hpb=103537027565373cdf6dbc4e7d63cf8e5387b2bb;p=jalview.git
diff --git a/src/jalview/ws/rest/RestJobThread.java b/src/jalview/ws/rest/RestJobThread.java
index 4bc183a..75d2cd4 100644
--- a/src/jalview/ws/rest/RestJobThread.java
+++ b/src/jalview/ws/rest/RestJobThread.java
@@ -1,3 +1,23 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ws.rest;
import jalview.bin.Cache;
@@ -16,6 +36,7 @@ import jalview.gui.WebserviceInfo;
import jalview.io.NewickFile;
import jalview.io.packed.JalviewDataset;
import jalview.io.packed.JalviewDataset.AlignmentSet;
+import jalview.util.MessageManager;
import jalview.ws.AWSThread;
import jalview.ws.AWsJob;
@@ -23,11 +44,9 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;
import java.util.Map.Entry;
-import java.util.Vector;
import org.apache.axis.transport.http.HTTPConstants;
import org.apache.http.Header;
@@ -89,8 +108,7 @@ public class RestJobThread extends AWSThread
jobs = new RestJob[viscontigals.length];
for (int j = 0; j < jobs.length; j++)
{
- int[] visc = new int[]
- { viscontig[j * 2], viscontig[j * 2 + 1] };
+ int[] visc = new int[] { viscontig[j * 2], viscontig[j * 2 + 1] };
if (j != 0)
{
jobs[j] = new RestJob(j, this, viscontigals[j], visc);
@@ -238,8 +256,10 @@ public class RestJobThread extends AWSThread
response = httpclient.execute(request);
} catch (ClientProtocolException he)
{
- rj.statMessage = "Web Protocol Exception when "
- + getStage(stg) + "Job.
Problematic url was "+request.getURI()+"
See Console output for details.";
+ rj.statMessage = "Web Protocol Exception when " + getStage(stg)
+ + "Job.
Problematic url was " + request.getURI()
+ + "
See Console output for details.";
rj.setAllowedServerExceptions(0);// unrecoverable;
rj.error = true;
Cache.log.fatal("Unexpected REST Job " + getStage(stg)
@@ -247,8 +267,10 @@ public class RestJobThread extends AWSThread
throw (he);
} catch (IOException e)
{
- rj.statMessage = "IO Exception when "
- + getStage(stg) + "Job.
Problematic url was "+request.getURI()+"
See Console output for details.";
+ rj.statMessage = "IO Exception when " + getStage(stg)
+ + "Job.
Problematic url was " + request.getURI()
+ + "
See Console output for details.";
Cache.log.warn("IO Exception for REST Job " + getStage(stg)
+ "exception for URL " + rj.rsd.postUrl);
@@ -305,9 +327,22 @@ public class RestJobThread extends AWSThread
// TODO: deal with all other HTTP response codes from server.
Cache.log.warn("Unhandled response status when " + getStage(stg)
+ "for " + postUrl + ": " + response.getStatusLine());
+ rj.error = true;
+ rj.setAllowedServerExceptions(0);
+ rj.setSubjobComplete(true);
+ rj.setSubmitted(true);
try
{
- response.getEntity().consumeContent();
+ completeStatus(
+ rj,
+ response,
+ ""
+ + getStage(stg)
+ + " resulted in an unexpected server response.
Url concerned was "
+ + request.getURI()
+ + "
Filtered response content below:
");
} catch (IOException e)
{
Cache.log.debug("IOException when consuming unhandled response",
@@ -377,7 +412,7 @@ public class RestJobThread extends AWSThread
int body = f.indexOf("
-1)
{
- content.delete(0, f.indexOf(">", body));
+ content.delete(0, f.indexOf(">", body) + 1);
}
if (body > -1 && sb.length() > 0)
{
@@ -405,16 +440,15 @@ public class RestJobThread extends AWSThread
{
System.err.println("Debug RestJob: Posting Job");
doPost((RestJob) job);
- }
- catch (NoValidInputDataException erex)
+ } catch (NoValidInputDataException erex)
{
job.setSubjobComplete(true);
job.setSubmitted(true);
- ((RestJob)job).statMessage="
It looks like there was a problem with the data sent to the service :
"+erex.getMessage()+"\n";
- ((RestJob)job).error=true;
-
- }
- catch (Exception ex)
+ ((RestJob) job).statMessage = "
It looks like there was a problem with the data sent to the service :
"
+ + erex.getMessage() + "\n";
+ ((RestJob) job).error = true;
+
+ } catch (Exception ex)
{
job.setSubjobComplete(true);
job.setAllowedServerExceptions(-1);
@@ -454,6 +488,14 @@ public class RestJobThread extends AWSThread
Cache.log.warn("Failed to finish parsing data for job "
+ rj.getJobId());
ex.printStackTrace();
+ } finally
+ {
+ rj.error = true;
+ rj.statMessage = "Error whilst parsing data for this job.
URL for job response is :"
+ + rj.resSet.getUrl()
+ + "
";
}
}
}
@@ -763,7 +805,10 @@ public class RestJobThread extends AWSThread
destAls.add(destAl);
destColsel.add(destCs);
resultDest.add(AddDataTo.newAlignment);
- throw new Error("Impl. Error! TODO: ");
+ throw new Error(
+ MessageManager
+ .getString("error.implementation_error")
+ + "TODO: ");
}
}
/**
@@ -808,7 +853,9 @@ public class RestJobThread extends AWSThread
visgrps.add(exsg);
exsg.setStartRes(sg.getStartRes() + contigs[ncnt]);
exsg.setEndRes(sg.getEndRes() + contigs[ncnt]);
- } else {
+ }
+ else
+ {
recovered = true;
}
// now replace any references from the result set with
@@ -817,10 +864,8 @@ public class RestJobThread extends AWSThread
// TODO: cope with recovering hidden sequences from
// resultContext
{
- Vector sqs = sg.getSequences(null);
- for (int sqsi = 0, iSize = sqs.size(); sqsi < iSize; sqsi++)
+ for (SequenceI oseq : sg.getSequences(null))
{
- SequenceI oseq = (SequenceI) sqs.get(sqsi);
SequenceI nseq = getNewSeq(oseq, rseqs[nrj],
ordermap[nrj], destAl);
if (nseq != null)
@@ -938,12 +983,14 @@ public class RestJobThread extends AWSThread
visan.sequenceRef = sqass;
visAlAn.add(visan);
}
- if (contigs[ncnt]+alan[nrj][an].annotations.length>visan.annotations.length)
+ if (contigs[ncnt] + alan[nrj][an].annotations.length > visan.annotations.length)
{
// increase width of annotation row
- Annotation[] newannv = new Annotation[contigs[ncnt]+alan[nrj][an].annotations.length];
- System.arraycopy(visan.annotations, 0, newannv, 0, visan.annotations.length);
- visan.annotations=newannv;
+ Annotation[] newannv = new Annotation[contigs[ncnt]
+ + alan[nrj][an].annotations.length];
+ System.arraycopy(visan.annotations, 0, newannv, 0,
+ visan.annotations.length);
+ visan.annotations = newannv;
}
// now copy local annotation data into correct position
System.arraycopy(alan[nrj][an].annotations, 0,
@@ -997,8 +1044,10 @@ public class RestJobThread extends AWSThread
{
AlignmentI destal;
ColumnSelection destcs;
- String alTitle = restClient.service.details.Action + " using "
- + restClient.service.details.Name + " on "+restClient.viewTitle;
+ String alTitle = MessageManager.formatMessage(
+ "label.webservice_job_title_on", new String[] {
+ restClient.service.details.Action,
+ restClient.service.details.Name, restClient.viewTitle });
switch (action)
{
case newAlignment:
@@ -1006,7 +1055,8 @@ public class RestJobThread extends AWSThread
destcs = destColsel.get(als);
destaf = new AlignFrame(destal, destcs, AlignFrame.DEFAULT_WIDTH,
AlignFrame.DEFAULT_HEIGHT);
- PaintRefresher.Refresh(destaf, destaf.getViewport().getSequenceSetId());
+ PaintRefresher.Refresh(destaf, destaf.getViewport()
+ .getSequenceSetId());
// todo transfer any feature settings and colouring
/*
* destaf.getFeatureRenderer().transferSettings(this.featureSettings);
@@ -1026,7 +1076,8 @@ public class RestJobThread extends AWSThread
* i++) { af.addSortByOrderMenuItem( WebServiceName + ((String)
* names.get(i)) + " Ordering", (AlignmentOrder) alorders.get(i)); } } }
*/
- // TODO: modify this and previous alignment's title if many alignments have been returned.
+ // TODO: modify this and previous alignment's title if many alignments
+ // have been returned.
Desktop.addInternalFrame(destaf, alTitle, AlignFrame.DEFAULT_WIDTH,
AlignFrame.DEFAULT_HEIGHT);
@@ -1206,8 +1257,8 @@ public class RestJobThread extends AWSThread
*/
public boolean isValid()
{
- ArrayList _warnings=new ArrayList();
- boolean validt=true;
+ ArrayList _warnings = new ArrayList();
+ boolean validt = true;
if (jobs != null)
{
for (RestJob rj : (RestJob[]) jobs)
@@ -1216,42 +1267,48 @@ public class RestJobThread extends AWSThread
{
// invalid input for this job
System.err.println("Job " + rj.getJobnum()
- + " has invalid input. ( "+rj.getStatus()+")");
+ + " has invalid input. ( " + rj.getStatus() + ")");
if (rj.hasStatus() && !_warnings.contains(rj.getStatus()))
{
_warnings.add(rj.getStatus());
}
- validt=false;
+ validt = false;
}
}
}
if (!validt)
{
warnings = "";
- for (String st : _warnings) {
- if (warnings.length()>0) { warnings+="\n";
+ for (String st : _warnings)
+ {
+ if (warnings.length() > 0)
+ {
+ warnings += "\n";
}
warnings += st;
-
+
}
}
return validt;
}
protected String warnings;
+
public boolean hasWarnings()
{
// TODO Auto-generated method stub
- return warnings!=null && warnings.length()>0;
+ return warnings != null && warnings.length() > 0;
}
/**
* get any informative messages about why the job thread couldn't start.
+ *
* @return
*/
public String getWarnings()
{
- return isValid() ? "Job can be started. No warnings." : hasWarnings() ? warnings : "";
+ return isValid() ? "Job can be started. No warnings."
+ : hasWarnings() ? warnings : "";
}
}