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; ...@@ -16,7 +16,7 @@ package uws.job;
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with UWSLibrary. If not, see <http://www.gnu.org/licenses/>. * 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) * Astronomisches Rechen Institut (ARI)
*/ */
...@@ -29,7 +29,7 @@ import uws.service.UWSUrl; ...@@ -29,7 +29,7 @@ import uws.service.UWSUrl;
* This class gives a short description (mainly an ID and a URL) of a job result. * This class gives a short description (mainly an ID and a URL) of a job result.
* *
* @author Gr&eacute;gory Mantelet (CDS;ARI) * @author Gr&eacute;gory Mantelet (CDS;ARI)
* @version 4.1 (08/2014) * @version 4.1 (09/2017)
*/ */
public class Result extends SerializableUWSObject { public class Result extends SerializableUWSObject {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -110,6 +110,7 @@ public class Result extends SerializableUWSObject { ...@@ -110,6 +110,7 @@ public class Result extends SerializableUWSObject {
* @param job Job which will own this result. * @param job Job which will own this result.
* @param name Name or ID or the result. * @param name Name or ID or the result.
* @param resultType Type of 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 resultUrl Result file URL.
* *
* @see #Result(UWSJob, String, String) * @see #Result(UWSJob, String, String)
...@@ -124,6 +125,7 @@ public class Result extends SerializableUWSObject { ...@@ -124,6 +125,7 @@ public class Result extends SerializableUWSObject {
* *
* @param name Name or ID or the result. * @param name Name or ID or the result.
* @param resultType Type of 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 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. * @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> * <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 { ...@@ -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. * @return The result type.
*/ */
......
...@@ -40,7 +40,7 @@ import uws.service.request.UploadFile; ...@@ -40,7 +40,7 @@ import uws.service.request.UploadFile;
* Lets serializing any UWS resource in XML. * Lets serializing any UWS resource in XML.
* *
* @author Gr&eacute;gory Mantelet (CDS;ARI) * @author Gr&eacute;gory Mantelet (CDS;ARI)
* @version 4.2 (06/2017) * @version 4.2 (09/2017)
*/ */
public class XMLSerializer extends UWSSerializer { public class XMLSerializer extends UWSSerializer {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -152,7 +152,7 @@ public class XMLSerializer extends UWSSerializer { ...@@ -152,7 +152,7 @@ public class XMLSerializer extends UWSSerializer {
xml.append("<uws").append(getUWSNamespace(true)); xml.append("<uws").append(getUWSNamespace(true));
if (name != null) if (name != null)
xml.append(" name=\"").append(escapeXMLAttribute(name)).append("\""); xml.append(" name=\"").append(escapeXMLAttribute(name)).append('"');
xml.append(">\n"); xml.append(">\n");
if (description != null) if (description != null)
...@@ -183,7 +183,7 @@ public class XMLSerializer extends UWSSerializer { ...@@ -183,7 +183,7 @@ public class XMLSerializer extends UWSSerializer {
* if (name != null) * if (name != null)
* xml.append(" name=\"").append(escapeXMLAttribute(name)).append("\""); * xml.append(" name=\"").append(escapeXMLAttribute(name)).append("\"");
*/ */
xml.append(">"); xml.append('>');
UWSUrl jobsListUrl = jobsList.getUrl(); UWSUrl jobsListUrl = jobsList.getUrl();
Iterator<UWSJob> it = jobsList.getJobs(owner); Iterator<UWSJob> it = jobsList.getJobs(owner);
...@@ -201,7 +201,7 @@ public class XMLSerializer extends UWSSerializer { ...@@ -201,7 +201,7 @@ public class XMLSerializer extends UWSSerializer {
String newLine = "\n\t"; String newLine = "\n\t";
// general information: // general information:
xml.append("<job").append(getUWSNamespace(root)).append(">"); xml.append("<job").append(getUWSNamespace(root)).append('>');
xml.append(newLine).append(getJobID(job, false)); xml.append(newLine).append(getJobID(job, false));
if (job.getRunId() != null) if (job.getRunId() != null)
xml.append(newLine).append(getRunID(job, false)); xml.append(newLine).append(getRunID(job, false));
...@@ -243,22 +243,25 @@ public class XMLSerializer extends UWSSerializer { ...@@ -243,22 +243,25 @@ public class XMLSerializer extends UWSSerializer {
} }
StringBuffer xml = new StringBuffer("<jobref id=\""); 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! /* NOTE: NO ATTRIBUTE "runId" IN THE XML SCHEMA!
* if (job.getRunId() != null && job.getRunId().length() > 0) * if (job.getRunId() != null && job.getRunId().length() > 0)
* xml.append("\" runId=\"").append(escapeXMLAttribute(job.getRunId())); * 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) if (url != null)
xml.append(escapeXMLAttribute(url)); xml.append(" xlink:type=\"simple\" xlink:href=\"").append(escapeXMLAttribute(url)).append('"');
xml.append("\">\n\t\t").append(getPhase(job, false)).append("\n\t</jobref>");
xml.append(">\n\t\t").append(getPhase(job, false)).append("\n\t</jobref>");
return xml.toString(); return xml.toString();
} }
@Override @Override
public String getJobID(final UWSJob job, final boolean root){ 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 @Override
...@@ -266,7 +269,7 @@ public class XMLSerializer extends UWSSerializer { ...@@ -266,7 +269,7 @@ public class XMLSerializer extends UWSSerializer {
if (job.getRunId() != null){ if (job.getRunId() != null){
StringBuffer xml = new StringBuffer(root ? getHeader() : ""); StringBuffer xml = new StringBuffer(root ? getHeader() : "");
xml.append("<runId").append(getUWSNamespace(root)); 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(); return xml.toString();
}else }else
return ""; return "";
...@@ -279,13 +282,13 @@ public class XMLSerializer extends UWSSerializer { ...@@ -279,13 +282,13 @@ public class XMLSerializer extends UWSSerializer {
if (job.getOwner() == null) if (job.getOwner() == null)
xml.append(" xsi:nil=\"true\" />"); xml.append(" xsi:nil=\"true\" />");
else else
xml.append(">").append(escapeXMLData(job.getOwner().getPseudo())).append("</ownerId>"); xml.append('>').append(escapeXMLData(job.getOwner().getPseudo())).append("</ownerId>");
return xml.toString(); return xml.toString();
} }
@Override @Override
public String getPhase(final UWSJob job, final boolean root){ 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 @Override
...@@ -295,7 +298,7 @@ public class XMLSerializer extends UWSSerializer { ...@@ -295,7 +298,7 @@ public class XMLSerializer extends UWSSerializer {
if (job.getQuote() <= 0) if (job.getQuote() <= 0)
xml.append(" xsi:nil=\"true\" />"); xml.append(" xsi:nil=\"true\" />");
else else
xml.append(">").append(job.getQuote()).append("</quote>"); xml.append('>').append(job.getQuote()).append("</quote>");
return xml.toString(); return xml.toString();
} }
...@@ -306,7 +309,7 @@ public class XMLSerializer extends UWSSerializer { ...@@ -306,7 +309,7 @@ public class XMLSerializer extends UWSSerializer {
if (job.getStartTime() == null) if (job.getStartTime() == null)
xml.append(" xsi:nil=\"true\" />"); xml.append(" xsi:nil=\"true\" />");
else else
xml.append(">").append(ISO8601Format.format(job.getStartTime())).append("</startTime>"); xml.append('>').append(ISO8601Format.format(job.getStartTime())).append("</startTime>");
return xml.toString(); return xml.toString();
} }
...@@ -317,7 +320,7 @@ public class XMLSerializer extends UWSSerializer { ...@@ -317,7 +320,7 @@ public class XMLSerializer extends UWSSerializer {
if (job.getEndTime() == null) if (job.getEndTime() == null)
xml.append(" xsi:nil=\"true\" />"); xml.append(" xsi:nil=\"true\" />");
else else
xml.append(">").append(ISO8601Format.format(job.getEndTime())).append("</endTime>"); xml.append('>').append(ISO8601Format.format(job.getEndTime())).append("</endTime>");
return xml.toString(); return xml.toString();
} }
...@@ -328,13 +331,13 @@ public class XMLSerializer extends UWSSerializer { ...@@ -328,13 +331,13 @@ public class XMLSerializer extends UWSSerializer {
if (job.getDestructionTime() == null) if (job.getDestructionTime() == null)
xml.append(" xsi:nil=\"true\" />"); xml.append(" xsi:nil=\"true\" />");
else else
xml.append(">").append(ISO8601Format.format(job.getDestructionTime())).append("</destruction>"); xml.append('>').append(ISO8601Format.format(job.getDestructionTime())).append("</destruction>");
return xml.toString(); return xml.toString();
} }
@Override @Override
public String getExecutionDuration(final UWSJob job, final boolean root){ 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 @Override
...@@ -342,9 +345,9 @@ public class XMLSerializer extends UWSSerializer { ...@@ -342,9 +345,9 @@ public class XMLSerializer extends UWSSerializer {
if (error != null){ if (error != null){
StringBuffer xml = new StringBuffer(root ? getHeader() : ""); StringBuffer xml = new StringBuffer(root ? getHeader() : "");
xml.append(tabPrefix).append("<errorSummary").append(getUWSNamespace(root)); 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\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(); return xml.toString();
}else }else
return ""; return "";
...@@ -357,7 +360,7 @@ public class XMLSerializer extends UWSSerializer { ...@@ -357,7 +360,7 @@ public class XMLSerializer extends UWSSerializer {
String newLine = "\n\t" + tabPrefix; String newLine = "\n\t" + tabPrefix;
for(String paramName : job.getAdditionalParameters()) for(String paramName : job.getAdditionalParameters())
xml.append(newLine).append(getAdditionalParameter(paramName, job.getAdditionalParameterValue(paramName), false)); 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(); return xml.toString();
} }
...@@ -412,18 +415,18 @@ public class XMLSerializer extends UWSSerializer { ...@@ -412,18 +415,18 @@ public class XMLSerializer extends UWSSerializer {
String newLine = "\n\t" + tabPrefix; String newLine = "\n\t" + tabPrefix;
while(it.hasNext()) while(it.hasNext())
xml.append(newLine).append(getResult(it.next(), false)); 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(); return xml.toString();
} }
@Override @Override
public String getResult(final Result result, final boolean root){ public String getResult(final Result result, final boolean root){
StringBuffer xml = new StringBuffer(root ? getHeader() : ""); 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.getHref() != null){
if (result.getType() != null) if (result.getType() != null)
xml.append(" xlink:type=\"").append(escapeXMLAttribute(result.getType())).append("\""); xml.append(" xlink:type=\"").append(escapeXMLAttribute(result.getType())).append('"');
xml.append(" xlink:href=\"").append(escapeXMLAttribute(result.getHref())).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. /* 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