From 7ba167c6c3fc445ed4b9b88f35975262c37d67e6 Mon Sep 17 00:00:00 2001 From: Sonia Zorba <sonia.zorba@inaf.it> Date: Mon, 10 May 2021 10:11:30 +0200 Subject: [PATCH] Updated README --- README.md | 61 +++++++++++++++++++++++++----------------- vospace-datamodel.jpg | Bin 0 -> 28712 bytes 2 files changed, 36 insertions(+), 25 deletions(-) create mode 100644 vospace-datamodel.jpg diff --git a/README.md b/README.md index 0d06938..4f895e0 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,13 @@ # VOSpace Data Model +Java classes used for modelling VOSpace entities are used both by REST web service and UI application, so they are kept in a separate software module called VOSpace Data Model: + + + +The main goal of this shared library is to provide a binding between Java classes and XML defined by the VOSpace standard. We are also using `jackson-module-jaxb-annotations` to support both XML and JSON binding. Our REST service supports also JSON payloads (Spring Framework performs content negotiation based on HTTP Accept header). + +Some utility methods for extracting information from nodes have also been added. + ## Generating beans from XML schema cd xsd @@ -11,45 +19,48 @@ It seems that xjc does something wrong when retriving the imported XSD from the In vospace.xsd: - <xsd:import namespace="http://www.ivoa.net/xml/UWS/v1.0" schemaLocation="./uws.xsd"/> +```xml +<xsd:import namespace="http://www.ivoa.net/xml/UWS/v1.0" schemaLocation="./uws.xsd"/> +``` In uws.xsd: - <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="./xlink.xsd"/> +```xml +<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="./xlink.xsd"/> +``` ### Changes to the generated classes -In package-info.java the following element has been added to serialize the XML keeping the namespace. - - xmlns = { - @javax.xml.bind.annotation.XmlNs( - namespaceURI = "http://www.ivoa.net/xml/VOSpace/v2.0", - prefix = "vos" - ) - } +#### Namespaces issues -Some issues emerged in handling inheritance and namespaces in a way compatible both to JSON and XML formats. Moreover it was necessary to setup a workaround for filling the `xsi:type` of the root node: +In package-info.java files some `@javax.xml.bind.annotation.XmlNs` annotations have been added to serialize the XML keeping the namespaces (vos, xsi, xlink, uws). -In Node.java type field and removeType() method have been added: +To handle the `vos:` prefix in JSON a custom type id resolver (`NodeTypeJsonResolver`) has been added to the `Node` class. - // Used for generating missing type attribute for root node. For child nodes it is filled automatically. - @XmlAttribute(name = "type", namespace = "http://www.w3.org/2001/XMLSchema-instance", required = false) - private String type; +#### Type attribute issue - /* This method exists to fix the issue with type attribute. See RemoveDuplicateTypeAdapter class. */ - public void removeType() { - this.type = null; - } +JAXB automatically generates the `xsi:type` attribute, however it doesn't fill it for the root node (it seems that this is by design). Since we need it, we manually added it on the `Node` class, but this caused a duplication of the attribute in the children nodes. So we added a `removeType()` method that sets it to null. This method is called by a custom adapter (`RemoveDuplicateTypeAdapter`) during the marshalling of the node. -For JSON compatibility the following has been added to Node.java (annotation on class): +#### JSON inheritance - @JsonTypeInfo(use = JsonTypeInfo.Id.CUSTOM, property = "type", include = JsonTypeInfo.As.EXISTING_PROPERTY) - @JsonTypeIdResolver(NodeTypeJsonResolver.class) +The `@JsonTypeInfo` annotation has been added to the `Node` class for telling to Jackson that the field type is used to handle inheritance. -The `@JsonTypeInfo` tells to Jackson that the field type is used to handle inheritance. A custom type id resolver has been created to handle the `vos:` prefix. +#### Root element tag name 2 annotations have been added to each node subtype: - @XmlRootElement(name = "node") +```java +@XmlRootElement(name = "node") +``` + +`@XmlRootElement` is necessary to parse single nodes. The value `"node"` has been specified because by default the bean would be serialized as `<unstructuredDataNode>` or `<containerNode>` and so on. + +#### Handling generic type in JobInfo content + +`JobSummary` class has a `jobInfo` field that is a generic object (since it is the payload of UWS jobs). In the case of VOSpace the `jobInfo` is an instance of `Transfer`. To properly serialize this object the following annotation has been added to the `JobSummary` class: + +```java +@XmlSeeAlso({Transfer.class}) +``` -`@XmlRootElement` is necessary to parse single nodes. The value `"node"` has been specified because by default the bean would be serialized as `<unstructuredDataNode>`. +Moreover custom JSON serializer and deserialized have been added on the `JobInfo` class. diff --git a/vospace-datamodel.jpg b/vospace-datamodel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6e67a71b74a3d572cae1031f813f9f16de764199 GIT binary patch literal 28712 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 Cg^dCL literal 0 HcmV?d00001 -- GitLab