Class AbstractListChildSerializer<T>
- java.lang.Object
-
- org.spongepowered.configurate.serialize.AbstractListChildSerializer<T>
-
- Type Parameters:
T
- the type of collection to serialize
- All Implemented Interfaces:
TypeSerializer<T>
public abstract class AbstractListChildSerializer<T> extends Object implements TypeSerializer<T>
A serializer for nodes that are 'list-like' (i.e may be stored in nodes whereConfigurationNode.isList()
is true.- Since:
- 4.1.0
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractListChildSerializer()
Create a new serializer, only for use by subclasses.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract T
createNew(int length, Type elementType)
Create a new instance of the collection.T
deserialize(Type type, ConfigurationNode node)
Deserialize an object (of the correct type) from the given configuration node.protected abstract void
deserializeSingle(int index, T collection, @Nullable Object deserialized)
Place a single deserialized value into the collection being deserialized.protected abstract Type
elementType(Type containerType)
Given the type of container, provide the expected type of an element.@Nullable T
emptyValue(Type specificType, ConfigurationOptions options)
Create an empty value of the appropriate type.protected abstract void
forEachElement(T collection, CheckedConsumer<Object,SerializationException> action)
Perform the provided action on each element of the provided collection.void
serialize(Type type, @Nullable T obj, ConfigurationNode node)
Serialize an object to the given configuration node.
-
-
-
Constructor Detail
-
AbstractListChildSerializer
protected AbstractListChildSerializer()
Create a new serializer, only for use by subclasses.- Since:
- 4.1.0
-
-
Method Detail
-
deserialize
public final T deserialize(Type type, ConfigurationNode node) throws SerializationException
Description copied from interface:TypeSerializer
Deserialize an object (of the correct type) from the given configuration node.- Specified by:
deserialize
in interfaceTypeSerializer<T>
- Parameters:
type
- the type of return value requirednode
- the node containing serialized data- Returns:
- an object
- Throws:
SerializationException
- if the presented data is invalid
-
serialize
public final void serialize(Type type, @Nullable T obj, ConfigurationNode node) throws SerializationException
Description copied from interface:TypeSerializer
Serialize an object to the given configuration node.- Specified by:
serialize
in interfaceTypeSerializer<T>
- Parameters:
type
- the type of the input objectobj
- the object to be serializednode
- the node to write to- Throws:
SerializationException
- if the object cannot be serialized
-
emptyValue
public @Nullable T emptyValue(Type specificType, ConfigurationOptions options)
Description copied from interface:TypeSerializer
Create an empty value of the appropriate type.This method is for the most part designed to create empty collection types, though it may be useful for scalars in limited cases.
- Specified by:
emptyValue
in interfaceTypeSerializer<T>
- Parameters:
specificType
- specific subtype to create an empty value ofoptions
- options used from the loading node- Returns:
- new empty value
-
elementType
protected abstract Type elementType(Type containerType) throws SerializationException
Given the type of container, provide the expected type of an element. If the element type is not available, an exception must be thrown.- Parameters:
containerType
- the type of container with type parameters resolved to the extent possible.- Returns:
- the element type
- Throws:
SerializationException
- if the element type could not be detected- Since:
- 4.1.0
-
createNew
protected abstract T createNew(int length, Type elementType) throws SerializationException
Create a new instance of the collection. The returned instance must be mutable, but may have a fixed length.- Parameters:
length
- the necessary collection lengthelementType
- the type of element contained within the collection, as provided byelementType(Type)
- Returns:
- a newly created collection
- Throws:
SerializationException
- when an error occurs during the creation of the collection- Since:
- 4.1.0
-
forEachElement
protected abstract void forEachElement(T collection, CheckedConsumer<Object,SerializationException> action) throws SerializationException
Perform the provided action on each element of the provided collection.This is equivalent to a foreach loop on the collection
- Parameters:
collection
- the collection to act onaction
- the action to perform- Throws:
SerializationException
- when thrown by the underlying action- Since:
- 4.1.0
-
deserializeSingle
protected abstract void deserializeSingle(int index, T collection, @Nullable Object deserialized) throws SerializationException
Place a single deserialized value into the collection being deserialized.- Parameters:
index
- location to set value atcollection
- collection to modifydeserialized
- value to add- Throws:
SerializationException
- if object could not be coerced to an appropriate type.- Since:
- 4.1.0
-
-