diff --git a/src/org/json/Json4Uws.java b/src/org/json/Json4Uws.java index 0dea60dcd9ee9eb63438ef6528af2ae56b29c89d..676c237f34470618bbc5ffb96a169fe7225d9b4b 100644 --- a/src/org/json/Json4Uws.java +++ b/src/org/json/Json4Uws.java @@ -2,20 +2,20 @@ package org.json; /* * This file is part of UWSLibrary. - * + * * UWSLibrary is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * UWSLibrary 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 Lesser General Public License for more details. - * + * * 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-2017 - UDS/Centre de DonnĂ©es astronomiques de Strasbourg (CDS), * Astronomisches Rechen Institut (ARI) */ @@ -35,9 +35,9 @@ import uws.service.UWSUrl; /** * Useful conversion functions from UWS to JSON. - * + * * @author Grégory Mantelet (CDS;ARI) - * @version 4.2 (06/2017) + * @version 4.2 (09/2017) */ public final class Json4Uws { @@ -150,24 +150,24 @@ public final class Json4Uws { /** * Gets the JSON representation of the jobInfo of the given job. - * + * * <p><b>Important note:</b> * This function transforms the XML returned by * {@link JobInfo#getXML(String)} into a JSON object * (see {@link XML#toJSONObject(String)}). * </p> - * + * * @param job The job whose the jobInfo must be represented * in JSON. - * + * * @return The JSON representation of its jobInfo. - * + * * @throws JSONException If there is an error while building the JSON * object. - * + * * @see JobInfo#getXML(String) * @see XML#toJSONObject(String) - * + * * @since 4.2 */ public final static JSONObject getJobInfoJson(final UWSJob job) throws JSONException{ @@ -242,7 +242,8 @@ public final class Json4Uws { resultJson.put("id", r.getId()); resultJson.put("type", r.getType()); resultJson.put("href", r.getHref()); - resultJson.put("mime", r.getMimeType()); + if (r.getMimeType() != null) + resultJson.put("mime-type", r.getMimeType()); if (r.getSize() >= 0) resultJson.put("size", r.getSize()); resultJson.put("redirection", r.isRedirectionRequired()); diff --git a/src/uws/job/serializer/XMLSerializer.java b/src/uws/job/serializer/XMLSerializer.java index 159572de192111d4c961c717362a8b070c847cb2..3386b61ef49c713b4ce65d26529ad3c1e7185226 100644 --- a/src/uws/job/serializer/XMLSerializer.java +++ b/src/uws/job/serializer/XMLSerializer.java @@ -393,10 +393,21 @@ public class XMLSerializer extends UWSSerializer { } // otherwise, just return the XML parameter description: else{ - buf.append("<parameter").append(getUWSNamespace(root)).append(" id=\"").append(escapeXMLAttribute(paramName)); + buf.append("<parameter").append(getUWSNamespace(root)).append(" id=\"").append(escapeXMLAttribute(paramName)).append('"'); + + // set if it is an uploaded file: if (paramValue instanceof UploadFile) - buf.append("\" byReference=\"true"); - buf.append("\">").append(escapeXMLData(paramValue.toString())).append("</parameter>"); + buf.append(" byReference=\"true"); + + /* + * Note: + * The attribute isPost is not supported in this library. + * This information is not stored by the UWS Library and + * so is never reported in the XML serialization of the + * job. Besides, this attribute is optional. + */ + + buf.append('>').append(escapeXMLData(paramValue.toString())).append("</parameter>"); } return buf.toString(); } @@ -423,20 +434,21 @@ public class XMLSerializer extends UWSSerializer { 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('"'); + + /* The XLink attributes are optional. So if no URL is available, none + * will be written here: */ if (result.getHref() != null){ - if (result.getType() != null) - xml.append(" xlink:type=\"").append(escapeXMLAttribute(result.getType())).append('"'); + xml.append(" xlink:type=\"").append((result.getType() == null) ? "simple" : 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. - * HOWEVER, IF, ONE DAY, THEY ARE, THE FOLLOWING LINES SHOULD BE UNCOMNENTED. - * - * if (result.getMimeType() != null) - * xml.append(" mime=\"").append(escapeXMLAttribute(result.getMimeType())).append("\""); - * if (result.getSize() >= 0) - * xml.append(" size=\"").append(result.getSize()).append("\""); - */ + // Append the MIME type, if any: + if (result.getMimeType() != null) + xml.append(" mime-type=\"").append(escapeXMLAttribute(result.getMimeType())).append('"'); + + // Append the result size (in bytes), if any: + if (result.getSize() >= 0) + xml.append(" size=\"").append(result.getSize()).append('"'); return xml.append(" />").toString(); }