Class BaseConstructor

  • Direct Known Subclasses:
    SafeConstructor

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

      • 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.
      • rootTag

        protected Tag rootTag
      • typeDefinitions

        protected final java.util.Map<java.lang.Class<? extends java.lang.Object>,​TypeDescription> typeDefinitions
      • typeTags

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

      • BaseConstructor

        public BaseConstructor()
      • BaseConstructor

        public BaseConstructor​(LoaderOptions loadingConfig)
    • 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
      • 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)
      • 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)
      • 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)
                                              throws java.lang.InstantiationException
        Throws:
        java.lang.InstantiationException
      • newInstance

        protected java.lang.Object newInstance​(java.lang.Class<?> ancestor,
                                               Node node,
                                               boolean tryDefault)
                                        throws java.lang.InstantiationException
        Throws:
        java.lang.InstantiationException
      • 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)
      • constructSet

        protected java.util.Set<? extends java.lang.Object> constructSet​(SequenceNode node)
      • constructArray

        protected java.lang.Object constructArray​(SequenceNode node)
      • constructSequenceStep2

        protected void constructSequenceStep2​(SequenceNode node,
                                              java.util.Collection<java.lang.Object> collection)
      • constructArrayStep2

        protected java.lang.Object constructArrayStep2​(SequenceNode node,
                                                       java.lang.Object array)
      • constructSet

        protected java.util.Set<java.lang.Object> constructSet​(MappingNode node)
      • constructMapping

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

        protected void constructMapping2ndStep​(MappingNode node,
                                               java.util.Map<java.lang.Object,​java.lang.Object> mapping)
      • 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)