Class BaseConstructor

  • Direct Known Subclasses:
    SafeConstructor

    public abstract class BaseConstructor
    extends java.lang.Object
    Base code
    • Field Detail

      • NOT_INSTANTIATED_OBJECT

        protected static final java.lang.Object NOT_INSTANTIATED_OBJECT
        An instance returned by newInstance methods when instantiation has not been performed.
      • yamlClassConstructors

        protected final java.util.Map<NodeId,​Construct> yamlClassConstructors
        It maps the node kind to the the Construct implementation. When the runtime class is known then the implicit tag is ignored.
      • yamlConstructors

        protected final java.util.Map<Tag,​Construct> yamlConstructors
        It maps the (explicit or implicit) tag to the Construct implementation. It is used: 1) explicit tag - if present. 2) implicit tag - when the runtime class of the instance is unknown (the node has the Object.class)
      • yamlMultiConstructors

        protected final java.util.Map<java.lang.String,​Construct> yamlMultiConstructors
        It maps the (explicit or implicit) tag to the Construct implementation. It is used when no exact match found.
      • composer

        protected Composer composer
        No graph creator
      • constructedObjects

        final java.util.Map<Node,​java.lang.Object> constructedObjects
      • recursiveObjects

        private final java.util.Set<Node> recursiveObjects
      • rootTag

        protected Tag rootTag
        the tag for the root node
      • explicitPropertyUtils

        private boolean explicitPropertyUtils
      • allowDuplicateKeys

        private boolean allowDuplicateKeys
      • wrappedToRootException

        private boolean wrappedToRootException
      • enumCaseSensitive

        private boolean enumCaseSensitive
      • typeDefinitions

        protected final java.util.Map<java.lang.Class<? extends java.lang.Object>,​TypeDescription> typeDefinitions
        Mapping from a class to its manager
      • typeTags

        protected final java.util.Map<Tag,​java.lang.Class<? extends java.lang.Object>> typeTags
        register classes for tags
    • Constructor Detail

      • BaseConstructor

        @Deprecated
        public BaseConstructor()
        Deprecated.
        use the options
        Create
      • BaseConstructor

        public BaseConstructor​(LoaderOptions loadingConfig)
        Create
        Parameters:
        loadingConfig - - options
    • Method Detail

      • setComposer

        public void setComposer​(Composer composer)
      • checkData

        public boolean checkData()
        Check if more documents available
        Returns:
        true when there are more YAML documents in the stream
      • getData

        public java.lang.Object getData()
                                 throws java.util.NoSuchElementException
        Construct and return the next document
        Returns:
        constructed instance
        Throws:
        java.util.NoSuchElementException
      • getSingleData

        public java.lang.Object getSingleData​(java.lang.Class<?> type)
        Ensure that the stream contains a single document and construct it
        Parameters:
        type - the class of the instance being created
        Returns:
        constructed instance
        Throws:
        ComposerException - in case there are more documents in the stream
      • constructDocument

        protected final java.lang.Object constructDocument​(Node node)
        Construct complete YAML document. Call the second step in case of recursive structures. At the end cleans all the state.
        Parameters:
        node - root Node
        Returns:
        Java instance
      • fillRecursive

        private void fillRecursive()
        Fill the recursive structures and clean the internal collections
      • constructObject

        protected java.lang.Object constructObject​(Node node)
        Construct object from the specified Node. Return existing instance if the node is already constructed.
        Parameters:
        node - Node to be constructed
        Returns:
        Java instance
      • constructObjectNoCheck

        protected java.lang.Object constructObjectNoCheck​(Node node)
        Construct object from the specified Node without the check if it was already created.
        Parameters:
        node - - the source
        Returns:
        constructed instance
      • getConstructor

        protected Construct getConstructor​(Node node)
        Get the constructor to construct the Node. For implicit tags if the runtime class is known a dedicated Construct implementation is used. Otherwise the constructor is chosen by the tag.
        Parameters:
        node - Node to construct an instance from
        Returns:
        Construct implementation for the specified node
      • constructScalar

        protected java.lang.String constructScalar​(ScalarNode node)
        Create string from scalar
        Parameters:
        node - - the source
        Returns:
        the data
      • createDefaultList

        protected java.util.List<java.lang.Object> createDefaultList​(int initSize)
      • createDefaultSet

        protected java.util.Set<java.lang.Object> createDefaultSet​(int initSize)
      • createDefaultMap

        protected java.util.Map<java.lang.Object,​java.lang.Object> createDefaultMap​(int initSize)
      • createArray

        protected java.lang.Object createArray​(java.lang.Class<?> type,
                                               int size)
      • finalizeConstruction

        protected java.lang.Object finalizeConstruction​(Node node,
                                                        java.lang.Object data)
      • newInstance

        protected java.lang.Object newInstance​(Node node)
      • newInstance

        protected final java.lang.Object newInstance​(java.lang.Class<?> ancestor,
                                                     Node node)
      • newInstance

        protected java.lang.Object newInstance​(java.lang.Class<?> ancestor,
                                               Node node,
                                               boolean tryDefault)
        Tries to create a new object for the node.
        Parameters:
        ancestor - expected ancestor of the node.getType()
        node - for which to create a corresponding java object
        tryDefault - should default constructor to be tried when there is no corresponding TypeDescription or TypeDescription.newInstance(node) returns null.
        Returns:
        - a new object created for node.getType() by using corresponding TypeDescription.newInstance or default constructor. - NOT_INSTANTIATED_OBJECT in case no object has been created
      • newSet

        protected java.util.Set<java.lang.Object> newSet​(CollectionNode<?> node)
      • newList

        protected java.util.List<java.lang.Object> newList​(SequenceNode node)
      • newMap

        protected java.util.Map<java.lang.Object,​java.lang.Object> newMap​(MappingNode node)
      • constructSequence

        protected java.util.List<? extends java.lang.Object> constructSequence​(SequenceNode node)
        Create List and fill it with data
        Parameters:
        node - - the source
        Returns:
        filled List
      • constructSet

        protected java.util.Set<? extends java.lang.Object> constructSet​(SequenceNode node)
        create Set from sequence
        Parameters:
        node - - sequence
        Returns:
        constructed Set
      • constructArray

        protected java.lang.Object constructArray​(SequenceNode node)
        Create array from sequence
        Parameters:
        node - - sequence
        Returns:
        constructed array
      • constructSequenceStep2

        protected void constructSequenceStep2​(SequenceNode node,
                                              java.util.Collection<java.lang.Object> collection)
        Fill the provided collection with the data from the Node
        Parameters:
        node - - the source
        collection - - data to fill
      • constructArrayStep2

        protected java.lang.Object constructArrayStep2​(SequenceNode node,
                                                       java.lang.Object array)
        Fill array from node
        Parameters:
        node - - the source
        array - - the destination
        Returns:
        filled array
      • constructSet

        protected java.util.Set<java.lang.Object> constructSet​(MappingNode node)
        Create Set from mapping
        Parameters:
        node - - mapping
        Returns:
        constructed Set
      • constructMapping

        protected java.util.Map<java.lang.Object,​java.lang.Object> constructMapping​(MappingNode node)
        Create Map from mapping
        Parameters:
        node - - mapping
        Returns:
        constructed Map
      • constructMapping2ndStep

        protected void constructMapping2ndStep​(MappingNode node,
                                               java.util.Map<java.lang.Object,​java.lang.Object> mapping)
        Fill provided Map with constructed data
        Parameters:
        node - - source
        mapping - - map to fill
      • postponeMapFilling

        protected void postponeMapFilling​(java.util.Map<java.lang.Object,​java.lang.Object> mapping,
                                          java.lang.Object key,
                                          java.lang.Object value)
      • constructSet2ndStep

        protected void constructSet2ndStep​(MappingNode node,
                                           java.util.Set<java.lang.Object> set)
      • postponeSetFilling

        protected void postponeSetFilling​(java.util.Set<java.lang.Object> set,
                                          java.lang.Object key)
      • setPropertyUtils

        public void setPropertyUtils​(PropertyUtils propertyUtils)
      • getPropertyUtils

        public final PropertyUtils getPropertyUtils()
      • addTypeDescription

        public TypeDescription addTypeDescription​(TypeDescription definition)
        Make YAML aware how to parse a custom Class. If there is no root Class assigned in constructor then the 'root' property of this definition is respected.
        Parameters:
        definition - to be added to the Constructor
        Returns:
        the previous value associated with definition, or null if there was no mapping for definition.
      • isExplicitPropertyUtils

        public final boolean isExplicitPropertyUtils()
      • isAllowDuplicateKeys

        public boolean isAllowDuplicateKeys()
      • setAllowDuplicateKeys

        public void setAllowDuplicateKeys​(boolean allowDuplicateKeys)
      • isWrappedToRootException

        public boolean isWrappedToRootException()
      • setWrappedToRootException

        public void setWrappedToRootException​(boolean wrappedToRootException)
      • isEnumCaseSensitive

        public boolean isEnumCaseSensitive()
      • setEnumCaseSensitive

        public void setEnumCaseSensitive​(boolean enumCaseSensitive)