Skip to content
Snippets Groups Projects
Commit 6ad03a80 authored by gmantele's avatar gmantele
Browse files

[UWS] Fix missing xlink:type (though it is optional) in jobRef (in XML job list).

This commit also includes the 2 following points:

    - for (really really tiny) optimisation purpose, replace String by a
	  char when there is only one character to append to a StringBuffer

	- add a bit more details about Result.type in the Javadoc (it should be
	  a xlink:type and not a random custom type)
parent 81c567c8
No related branches found
No related tags found
No related merge requests found
......@@ -16,7 +16,7 @@ package uws.job;
* You should have received a copy of the GNU Lesser General Public License
* along with UWSLibrary. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright 2012,2014 - UDS/Centre de Données astronomiques de Strasbourg (CDS),
* Copyright 2012-2017 - UDS/Centre de Données astronomiques de Strasbourg (CDS),
* Astronomisches Rechen Institut (ARI)
*/
......@@ -29,7 +29,7 @@ import uws.service.UWSUrl;
* This class gives a short description (mainly an ID and a URL) of a job result.
*
* @author Gr&eacute;gory Mantelet (CDS;ARI)
* @version 4.1 (08/2014)
* @version 4.1 (09/2017)
*/
public class Result extends SerializableUWSObject {
private static final long serialVersionUID = 1L;
......@@ -110,6 +110,7 @@ public class Result extends SerializableUWSObject {
* @param job Job which will own this result.
* @param name Name or ID or the result.
* @param resultType Type of result.
* <i>Note: it should be a XLINK URL type (one among simple (default), extended, locator, arc, resource, title or none ; see http://www.w3.org/TR/xlink/#linking-elements for more details).</i>
* @param resultUrl Result file URL.
*
* @see #Result(UWSJob, String, String)
......@@ -124,6 +125,7 @@ public class Result extends SerializableUWSObject {
*
* @param name Name or ID or the result.
* @param resultType Type of result.
* <i>Note: it should be a XLINK URL type (one among simple (default), extended, locator, arc, resource, title or none ; see http://www.w3.org/TR/xlink/#linking-elements for more details).</i>
* @param resultUrl Result file URL.
* @param redirection <i>true</i> if a redirection toward the given URL is required to get the result content, <i>false</i> otherwise.
* <i><u>note:</u> This parameter is ignored if the given URL is NULL or empty ! In this case, redirection = FALSE.</i>
......@@ -208,7 +210,14 @@ public class Result extends SerializableUWSObject {
}
/**
* Gets the type of this result.
* Get the type of this result.
*
* <p><i>Note:
* The returned type should be a XLINK URL type
* (one among simple (default), extended, locator, arc, resource, title or
* none ; see http://www.w3.org/TR/xlink/#linking-elements for more
* details).
* </i></p>
*
* @return The result type.
*/
......
......@@ -40,7 +40,7 @@ import uws.service.request.UploadFile;
* Lets serializing any UWS resource in XML.
*
* @author Gr&eacute;gory Mantelet (CDS;ARI)
* @version 4.2 (06/2017)
* @version 4.2 (09/2017)
*/
public class XMLSerializer extends UWSSerializer {
private static final long serialVersionUID = 1L;
......@@ -152,7 +152,7 @@ public class XMLSerializer extends UWSSerializer {
xml.append("<uws").append(getUWSNamespace(true));
if (name != null)
xml.append(" name=\"").append(escapeXMLAttribute(name)).append("\"");
xml.append(" name=\"").append(escapeXMLAttribute(name)).append('"');
xml.append(">\n");
if (description != null)
......@@ -183,7 +183,7 @@ public class XMLSerializer extends UWSSerializer {
* if (name != null)
* xml.append(" name=\"").append(escapeXMLAttribute(name)).append("\"");
*/
xml.append(">");
xml.append('>');
UWSUrl jobsListUrl = jobsList.getUrl();
Iterator<UWSJob> it = jobsList.getJobs(owner);
......@@ -201,7 +201,7 @@ public class XMLSerializer extends UWSSerializer {
String newLine = "\n\t";
// general information:
xml.append("<job").append(getUWSNamespace(root)).append(">");
xml.append("<job").append(getUWSNamespace(root)).append('>');
xml.append(newLine).append(getJobID(job, false));
if (job.getRunId() != null)
xml.append(newLine).append(getRunID(job, false));
......@@ -243,22 +243,25 @@ public class XMLSerializer extends UWSSerializer {
}
StringBuffer xml = new StringBuffer("<jobref id=\"");
xml.append(escapeXMLAttribute(job.getJobId()));
xml.append(escapeXMLAttribute(job.getJobId())).append('"');
/* NOTE: NO ATTRIBUTE "runId" IN THE XML SCHEMA!
* if (job.getRunId() != null && job.getRunId().length() > 0)
* xml.append("\" runId=\"").append(escapeXMLAttribute(job.getRunId()));
*/
xml.append("\" xlink:href=\"");
/* The XLink attributes are optional. So if no URL is available for this
* Job reference, none is written here: */
if (url != null)
xml.append(escapeXMLAttribute(url));
xml.append("\">\n\t\t").append(getPhase(job, false)).append("\n\t</jobref>");
xml.append(" xlink:type=\"simple\" xlink:href=\"").append(escapeXMLAttribute(url)).append('"');
xml.append(">\n\t\t").append(getPhase(job, false)).append("\n\t</jobref>");
return xml.toString();
}
@Override
public String getJobID(final UWSJob job, final boolean root){
return (new StringBuffer(root ? getHeader() : "")).append("<jobId").append(getUWSNamespace(root)).append(">").append(escapeXMLData(job.getJobId())).append("</jobId>").toString();
return (new StringBuffer(root ? getHeader() : "")).append("<jobId").append(getUWSNamespace(root)).append('>').append(escapeXMLData(job.getJobId())).append("</jobId>").toString();
}
@Override
......@@ -266,7 +269,7 @@ public class XMLSerializer extends UWSSerializer {
if (job.getRunId() != null){
StringBuffer xml = new StringBuffer(root ? getHeader() : "");
xml.append("<runId").append(getUWSNamespace(root));
xml.append(">").append(escapeXMLData(job.getRunId())).append("</runId>");
xml.append('>').append(escapeXMLData(job.getRunId())).append("</runId>");
return xml.toString();
}else
return "";
......@@ -279,13 +282,13 @@ public class XMLSerializer extends UWSSerializer {
if (job.getOwner() == null)
xml.append(" xsi:nil=\"true\" />");
else
xml.append(">").append(escapeXMLData(job.getOwner().getPseudo())).append("</ownerId>");
xml.append('>').append(escapeXMLData(job.getOwner().getPseudo())).append("</ownerId>");
return xml.toString();
}
@Override
public String getPhase(final UWSJob job, final boolean root){
return (new StringBuffer(root ? getHeader() : "")).append("<phase").append(getUWSNamespace(root)).append(">").append(job.getPhase()).append("</phase>").toString();
return (new StringBuffer(root ? getHeader() : "")).append("<phase").append(getUWSNamespace(root)).append('>').append(job.getPhase()).append("</phase>").toString();
}
@Override
......@@ -295,7 +298,7 @@ public class XMLSerializer extends UWSSerializer {
if (job.getQuote() <= 0)
xml.append(" xsi:nil=\"true\" />");
else
xml.append(">").append(job.getQuote()).append("</quote>");
xml.append('>').append(job.getQuote()).append("</quote>");
return xml.toString();
}
......@@ -306,7 +309,7 @@ public class XMLSerializer extends UWSSerializer {
if (job.getStartTime() == null)
xml.append(" xsi:nil=\"true\" />");
else
xml.append(">").append(ISO8601Format.format(job.getStartTime())).append("</startTime>");
xml.append('>').append(ISO8601Format.format(job.getStartTime())).append("</startTime>");
return xml.toString();
}
......@@ -317,7 +320,7 @@ public class XMLSerializer extends UWSSerializer {
if (job.getEndTime() == null)
xml.append(" xsi:nil=\"true\" />");
else
xml.append(">").append(ISO8601Format.format(job.getEndTime())).append("</endTime>");
xml.append('>').append(ISO8601Format.format(job.getEndTime())).append("</endTime>");
return xml.toString();
}
......@@ -328,13 +331,13 @@ public class XMLSerializer extends UWSSerializer {
if (job.getDestructionTime() == null)
xml.append(" xsi:nil=\"true\" />");
else
xml.append(">").append(ISO8601Format.format(job.getDestructionTime())).append("</destruction>");
xml.append('>').append(ISO8601Format.format(job.getDestructionTime())).append("</destruction>");
return xml.toString();
}
@Override
public String getExecutionDuration(final UWSJob job, final boolean root){
return (new StringBuffer(root ? getHeader() : "")).append("<executionDuration").append(getUWSNamespace(root)).append(">").append(job.getExecutionDuration()).append("</executionDuration>").toString();
return (new StringBuffer(root ? getHeader() : "")).append("<executionDuration").append(getUWSNamespace(root)).append('>').append(job.getExecutionDuration()).append("</executionDuration>").toString();
}
@Override
......@@ -342,9 +345,9 @@ public class XMLSerializer extends UWSSerializer {
if (error != null){
StringBuffer xml = new StringBuffer(root ? getHeader() : "");
xml.append(tabPrefix).append("<errorSummary").append(getUWSNamespace(root));
xml.append(" type=\"").append(error.getType()).append("\"").append(" hasDetail=\"").append(error.hasDetail()).append("\">");
xml.append(" type=\"").append(error.getType()).append('"').append(" hasDetail=\"").append(error.hasDetail()).append("\">");
xml.append("\n\t").append(tabPrefix).append("<message>").append(escapeXMLData(error.getMessage())).append("</message>");
xml.append("\n").append(tabPrefix).append("</errorSummary>");
xml.append('\n').append(tabPrefix).append("</errorSummary>");
return xml.toString();
}else
return "";
......@@ -357,7 +360,7 @@ public class XMLSerializer extends UWSSerializer {
String newLine = "\n\t" + tabPrefix;
for(String paramName : job.getAdditionalParameters())
xml.append(newLine).append(getAdditionalParameter(paramName, job.getAdditionalParameterValue(paramName), false));
xml.append("\n").append(tabPrefix).append("</parameters>");
xml.append('\n').append(tabPrefix).append("</parameters>");
return xml.toString();
}
......@@ -412,18 +415,18 @@ public class XMLSerializer extends UWSSerializer {
String newLine = "\n\t" + tabPrefix;
while(it.hasNext())
xml.append(newLine).append(getResult(it.next(), false));
xml.append("\n").append(tabPrefix).append("</results>");
xml.append('\n').append(tabPrefix).append("</results>");
return xml.toString();
}
@Override
public String getResult(final Result result, final boolean root){
StringBuffer xml = new StringBuffer(root ? getHeader() : "");
xml.append("<result").append(getUWSNamespace(root)).append(" id=\"").append(escapeXMLAttribute(result.getId())).append("\"");
xml.append("<result").append(getUWSNamespace(root)).append(" id=\"").append(escapeXMLAttribute(result.getId())).append('"');
if (result.getHref() != null){
if (result.getType() != null)
xml.append(" xlink:type=\"").append(escapeXMLAttribute(result.getType())).append("\"");
xml.append(" xlink:href=\"").append(escapeXMLAttribute(result.getHref())).append("\"");
xml.append(" xlink:type=\"").append(escapeXMLAttribute(result.getType())).append('"');
xml.append(" xlink:href=\"").append(escapeXMLAttribute(result.getHref())).append('"');
}
/* NOTE: THE FOLLOWING ATTRIBUTES MAY PROVIDE USEFUL INFORMATION TO USERS, BUT THEY ARE NOT ALLOWED BY THE CURRENT UWS STANDARD.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment