Package org.yaml.snakeyaml.constructor
Class BaseConstructor
- java.lang.Object
-
- org.yaml.snakeyaml.constructor.BaseConstructor
-
- Direct Known Subclasses:
SafeConstructor
public abstract class BaseConstructor extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
BaseConstructor.RecursiveTuple<T,K>
-
Field Summary
Fields Modifier and Type Field Description private boolean
allowDuplicateKeys
protected Composer
composer
(package private) java.util.Map<Node,java.lang.Object>
constructedObjects
private boolean
explicitPropertyUtils
protected LoaderOptions
loadingConfig
private java.util.ArrayList<BaseConstructor.RecursiveTuple<java.util.Map<java.lang.Object,java.lang.Object>,BaseConstructor.RecursiveTuple<java.lang.Object,java.lang.Object>>>
maps2fill
private PropertyUtils
propertyUtils
private java.util.Set<Node>
recursiveObjects
protected Tag
rootTag
private java.util.ArrayList<BaseConstructor.RecursiveTuple<java.util.Set<java.lang.Object>,java.lang.Object>>
sets2fill
protected java.util.Map<java.lang.Class<? extends java.lang.Object>,TypeDescription>
typeDefinitions
protected java.util.Map<Tag,java.lang.Class<? extends java.lang.Object>>
typeTags
private boolean
wrappedToRootException
protected java.util.Map<NodeId,Construct>
yamlClassConstructors
It maps the node kind to the the Construct implementation.protected java.util.Map<Tag,Construct>
yamlConstructors
It maps the (explicit or implicit) tag to the Construct implementation.protected java.util.Map<java.lang.String,Construct>
yamlMultiConstructors
It maps the (explicit or implicit) tag to the Construct implementation.
-
Constructor Summary
Constructors Constructor Description BaseConstructor()
BaseConstructor(LoaderOptions loadingConfig)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description TypeDescription
addTypeDescription(TypeDescription definition)
Make YAML aware how to parse a custom Class.boolean
checkData()
Check if more documents availableprotected java.lang.Object
constructArray(SequenceNode node)
protected java.lang.Object
constructArrayStep2(SequenceNode node, java.lang.Object array)
protected java.lang.Object
constructDocument(Node node)
Construct complete YAML document.protected java.util.Map<java.lang.Object,java.lang.Object>
constructMapping(MappingNode node)
protected void
constructMapping2ndStep(MappingNode node, java.util.Map<java.lang.Object,java.lang.Object> mapping)
protected java.lang.Object
constructObject(Node node)
Construct object from the specified Node.protected java.lang.Object
constructObjectNoCheck(Node node)
protected java.lang.String
constructScalar(ScalarNode node)
protected java.util.List<? extends java.lang.Object>
constructSequence(SequenceNode node)
protected void
constructSequenceStep2(SequenceNode node, java.util.Collection<java.lang.Object> collection)
protected java.util.Set<java.lang.Object>
constructSet(MappingNode node)
protected java.util.Set<? extends java.lang.Object>
constructSet(SequenceNode node)
protected void
constructSet2ndStep(MappingNode node, java.util.Set<java.lang.Object> set)
protected java.lang.Object
createArray(java.lang.Class<?> type, int size)
protected java.util.List<java.lang.Object>
createDefaultList(int initSize)
protected java.util.Map<java.lang.Object,java.lang.Object>
createDefaultMap(int initSize)
protected java.util.Set<java.lang.Object>
createDefaultSet(int initSize)
private void
fillRecursive()
Fill the recursive structures and clean the internal collectionsprotected java.lang.Object
finalizeConstruction(Node node, java.lang.Object data)
protected Construct
getConstructor(Node node)
Get the constructor to construct the Node.java.lang.Object
getData()
Construct and return the next documentPropertyUtils
getPropertyUtils()
java.lang.Object
getSingleData(java.lang.Class<?> type)
Ensure that the stream contains a single document and construct itboolean
isAllowDuplicateKeys()
boolean
isExplicitPropertyUtils()
boolean
isWrappedToRootException()
protected java.lang.Object
newInstance(java.lang.Class<?> ancestor, Node node)
protected java.lang.Object
newInstance(java.lang.Class<?> ancestor, Node node, boolean tryDefault)
protected java.lang.Object
newInstance(Node node)
protected java.util.List<java.lang.Object>
newList(SequenceNode node)
protected java.util.Map<java.lang.Object,java.lang.Object>
newMap(MappingNode node)
protected java.util.Set<java.lang.Object>
newSet(CollectionNode<?> node)
protected void
postponeMapFilling(java.util.Map<java.lang.Object,java.lang.Object> mapping, java.lang.Object key, java.lang.Object value)
protected void
postponeSetFilling(java.util.Set<java.lang.Object> set, java.lang.Object key)
void
setAllowDuplicateKeys(boolean allowDuplicateKeys)
void
setComposer(Composer composer)
void
setPropertyUtils(PropertyUtils propertyUtils)
void
setWrappedToRootException(boolean wrappedToRootException)
-
-
-
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.
-
composer
protected Composer composer
-
constructedObjects
final java.util.Map<Node,java.lang.Object> constructedObjects
-
recursiveObjects
private final java.util.Set<Node> recursiveObjects
-
maps2fill
private final java.util.ArrayList<BaseConstructor.RecursiveTuple<java.util.Map<java.lang.Object,java.lang.Object>,BaseConstructor.RecursiveTuple<java.lang.Object,java.lang.Object>>> maps2fill
-
sets2fill
private final java.util.ArrayList<BaseConstructor.RecursiveTuple<java.util.Set<java.lang.Object>,java.lang.Object>> sets2fill
-
rootTag
protected Tag rootTag
-
propertyUtils
private PropertyUtils propertyUtils
-
explicitPropertyUtils
private boolean explicitPropertyUtils
-
allowDuplicateKeys
private boolean allowDuplicateKeys
-
wrappedToRootException
private boolean wrappedToRootException
-
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
-
loadingConfig
protected LoaderOptions loadingConfig
-
-
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
-
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)
-
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.
-
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
, ornull
if there was no mapping fordefinition
.
-
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)
-
-