Skip to content
NodeTypeSetter.java 981 B
Newer Older
Sara Bertocco's avatar
Sara Bertocco committed
package it.inaf.oats.vospace.datamodel;

import com.fasterxml.jackson.databind.util.StdConverter;
import net.ivoa.xml.vospace.v2.Node;

/**
 * Fills the type field at the end of the JSON deserialization.
 * Node implementations must be annotated with
 * @JsonDeserialize(converter = NodeTypeAdder.<NodeType>.class)
 */
public class NodeTypeSetter<T extends Node> extends StdConverter<T, T> {

    @Override
    public T convert(T node) {
        node.setType("vos:" + node.getClass().getSimpleName());
        return node;
    }

    public static class UnstructuredDataNode extends NodeTypeSetter<net.ivoa.xml.vospace.v2.UnstructuredDataNode> {
    }

    public static class StructuredDataNode extends NodeTypeSetter<net.ivoa.xml.vospace.v2.StructuredDataNode> {
    }

    public static class ContainerNode extends NodeTypeSetter<net.ivoa.xml.vospace.v2.ContainerNode> {
    }

    public static class LinkNode extends NodeTypeSetter<net.ivoa.xml.vospace.v2.LinkNode> {
    }
}