public class UwsJob
extends java.lang.Object
Modifier and Type | Class | Description |
---|---|---|
static interface |
UwsJob.JobWatcher |
Callback interface for objects wanting to be notified of job status
changes.
|
static class |
UwsJob.UnexpectedResponseException |
Exception which may be thrown if a UWS HTTP request receives a
response code which is not as mandated by UWS, but not obviously
an error.
|
Modifier and Type | Field | Description |
---|---|---|
static int |
HTTP_CHUNK_SIZE |
Chunk size for HTTP transfer encoding; if <=0, don't chunk.
|
static boolean |
TRIM_TEXT |
Whether to trim whitespace from line text responses (like job/phase).
|
Constructor | Description |
---|---|
UwsJob(java.net.URL jobUrl) |
Constructor.
|
Modifier and Type | Method | Description |
---|---|---|
void |
addJobWatcher(UwsJob.JobWatcher watcher) |
Adds a callback which will be invoked whenever this job's phase
is found to have changed.
|
void |
attemptDelete() |
Attempts to delete this query's UWS job.
|
static UwsJob |
createJob(java.lang.String jobListUrl,
java.util.Map<java.lang.String,java.lang.String> stringParamMap,
java.util.Map<java.lang.String,HttpStreamParam> streamParamMap) |
Submits a job to a UWS service and returns a new UwsJob object.
|
static java.lang.String |
getCurlPostEquivalent(java.net.URL url,
uk.ac.starlink.util.ContentCoding coding,
java.util.Map<java.lang.String,java.lang.String> stringParams,
java.util.Map<java.lang.String,HttpStreamParam> streamParams) |
Returns a snippet of text representing a shell invocation of the
curl(1) command that posts a query corresponding
to the given parameters. |
boolean |
getDeleteOnExit() |
Indicates whether this job will be deleted when the JVM exits,
if it has not been deleted before.
|
java.lang.String |
getJobId() |
Returns the server-assigned job-id for this job.
|
java.net.URL |
getJobUrl() |
Returns the URL for this job.
|
UwsJobInfo |
getLastInfo() |
Returns the most recently read job state.
|
void |
postDelete() |
Posts deletion of this job to the server.
|
void |
postDestruction(java.lang.String epoch) |
Posts a value of the destruction time for this job.
|
void |
postExecutionDuration(long nsec) |
Posts a value of the execution duration parameter for this job.
|
static java.net.HttpURLConnection |
postForm(java.net.URL url,
uk.ac.starlink.util.ContentCoding coding,
java.util.Map<java.lang.String,java.lang.String> stringParams,
java.util.Map<java.lang.String,HttpStreamParam> streamParams) |
General form posting method.
|
static java.net.HttpURLConnection |
postMultipartForm(java.net.URL url,
uk.ac.starlink.util.ContentCoding coding,
java.util.Map<java.lang.String,java.lang.String> stringMap,
java.util.Map<java.lang.String,HttpStreamParam> streamMap,
java.lang.String boundary) |
Performs an HTTP form POST with a name->value map and a
name->stream map of parameters.
|
void |
postPhase(java.lang.String phase) |
Posts a phase for this job.
|
static java.net.HttpURLConnection |
postUnipartForm(java.net.URL url,
uk.ac.starlink.util.ContentCoding coding,
java.util.Map<java.lang.String,java.lang.String> paramMap) |
Performs an HTTP form POST with a name->value map of parameters.
|
UwsJobInfo |
readInfo() |
Reads the current status document for this job from the server
and both stores and returns the result.
|
UwsJobInfo |
readInfoBlocking(int timeoutSec,
UwsJobInfo lastInfo) |
Makes a blocking call to read the current status document for this job
from the server
and both stores and returns the result.
|
void |
removeJobWatcher(UwsJob.JobWatcher watcher) |
Removes a callback previously added by
addJobWatcher(uk.ac.starlink.vo.UwsJob.JobWatcher) . |
void |
setDeleteOnExit(boolean delete) |
Determines whether this job will be deleted when the JVM exits,
if it has not been deleted before.
|
void |
start() |
Starts the job by posting the RUN phase.
|
static byte[] |
toPostedBytes(java.util.Map<java.lang.String,java.lang.String> paramMap) |
Encodes a name->value mapping as an array of bytes suitable for
"application/x-www-form-urlencoded" transmission.
|
java.lang.String |
toString() |
|
UwsJobInfo |
waitForFinish(long pollMillis) |
Blocks until the job has reached a completion phase.
|
public static int HTTP_CHUNK_SIZE
public static boolean TRIM_TEXT
public UwsJob(java.net.URL jobUrl)
jobUrl
- the UWS {jobs}/(job-id) URL containing
the details of this jobpublic java.net.URL getJobUrl()
public void addJobWatcher(UwsJob.JobWatcher watcher)
watcher
- runnable to be notified on job phase changepublic void removeJobWatcher(UwsJob.JobWatcher watcher)
addJobWatcher(uk.ac.starlink.vo.UwsJob.JobWatcher)
.
Has no effect if watcher
is not currently registered.watcher
- runnable to be removedpublic UwsJobInfo getLastInfo()
public void postPhase(java.lang.String phase) throws java.io.IOException
phase
- UWS job phase to assignjava.io.IOException
public void postDestruction(java.lang.String epoch) throws java.io.IOException
epoch
- destruction time which should be an ISO-8601 string;
it is passed directly to the servicejava.io.IOException
public void postExecutionDuration(long nsec) throws java.io.IOException
nsec
- number of elapsed seconds for which job is permitted
to run; zero is supposed to mean unlimitedjava.io.IOException
public void start() throws java.io.IOException
UwsJob.UnexpectedResponseException
- if HTTP responses other than
UWS mandated ones occurjava.io.IOException
public UwsJobInfo waitForFinish(long pollMillis) throws java.io.IOException, java.lang.InterruptedException
pollMillis
- polling time in milliseconds to assess
job completion, if polling is requiredUwsJob.UnexpectedResponseException
- if HTTP responses other than
UWS mandated ones occurjava.io.IOException
java.lang.InterruptedException
public UwsJobInfo readInfo() throws java.io.IOException
getLastInfo()
method.java.io.IOException
public UwsJobInfo readInfoBlocking(int timeoutSec, UwsJobInfo lastInfo) throws java.io.IOException
getLastInfo()
method.timeoutSec
- maximum advised timeout in secondslastInfo
- last known job statusjava.io.IOException
public void postDelete() throws java.io.IOException
java.io.IOException
- if job deletion failed for some reasonpublic void attemptDelete()
public void setDeleteOnExit(boolean delete)
delete
- true to delete on exit, false otherwisepublic boolean getDeleteOnExit()
public java.lang.String getJobId()
public java.lang.String toString()
toString
in class java.lang.Object
public static UwsJob createJob(java.lang.String jobListUrl, java.util.Map<java.lang.String,java.lang.String> stringParamMap, java.util.Map<java.lang.String,HttpStreamParam> streamParamMap) throws java.io.IOException
jobListUrl
- base (job list) URL for UWS servicestringParamMap
- map of text parametersstreamParamMap
- map of streamed parametersUwsJob.UnexpectedResponseException
- if a non-303 response was receivedjava.io.IOException
- if some other IOException occurspublic static java.net.HttpURLConnection postForm(java.net.URL url, uk.ac.starlink.util.ContentCoding coding, java.util.Map<java.lang.String,java.lang.String> stringParams, java.util.Map<java.lang.String,HttpStreamParam> streamParams) throws java.io.IOException
url
- destination URLcoding
- HTTP content coding; connection output should be
decoded using the same valuestringParams
- name->value map for POST parameters;
values will be URL encoded as requiredstreamParams
- name->parameter map for POST parametersjava.io.IOException
public static java.net.HttpURLConnection postUnipartForm(java.net.URL url, uk.ac.starlink.util.ContentCoding coding, java.util.Map<java.lang.String,java.lang.String> paramMap) throws java.io.IOException
url
- destination URLcoding
- HTTP content coding; connection output should be
decoded using the same valueparamMap
- name->value map of parameters; values will be
encoded as requiredjava.io.IOException
public static java.net.HttpURLConnection postMultipartForm(java.net.URL url, uk.ac.starlink.util.ContentCoding coding, java.util.Map<java.lang.String,java.lang.String> stringMap, java.util.Map<java.lang.String,HttpStreamParam> streamMap, java.lang.String boundary) throws java.io.IOException
url
- destination URLcoding
- HTTP content coding; connection output should be
decoded using the same valuestringMap
- name->value map of parametersstreamMap
- name->stream map of parametersboundary
- multipart boundary; if null a default value is usedjava.io.IOException
public static java.lang.String getCurlPostEquivalent(java.net.URL url, uk.ac.starlink.util.ContentCoding coding, java.util.Map<java.lang.String,java.lang.String> stringParams, java.util.Map<java.lang.String,HttpStreamParam> streamParams)
curl(1)
command that posts a query corresponding
to the given parameters.
This can be a useful diagnostic tool when attempting to reproduce service invocations. Use with care however, the returned string is not guaranteed to do exactly what this java code does.
url
- destination URLcoding
- HTTP content coding; connection output should be
decoded using the same valuestringParams
- name->value map for POST parameters;
values will be URL encoded as requiredstreamParams
- name->parameter map for POST parameterspostForm(java.net.URL, java.lang.String, java.lang.String)
public static byte[] toPostedBytes(java.util.Map<java.lang.String,java.lang.String> paramMap)
paramMap
- name->value mappingCopyright © 2018 Central Laboratory of the Research Councils. All Rights Reserved.