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>
,TypeSerializer.Annotated<T>
public abstract class AbstractListChildSerializer<T>
extends Object
implements TypeSerializer.Annotated<T>
A serializer for nodes that are 'list-like' (i.e may be stored in nodes where
ConfigurationNode.isList()
is
true.- Since:
- 4.1.0
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.spongepowered.configurate.serialize.TypeSerializer
TypeSerializer.Annotated<V>
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Create a new serializer, only for use by subclasses. -
Method Summary
Modifier and TypeMethodDescriptionprotected T
createNew
(int length, AnnotatedType elementType) Create a new instance of the collection.protected T
Deprecated.final T
deserialize
(AnnotatedType 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 AnnotatedType
elementType
(AnnotatedType containerType) Given the type of container, provide the expected type of an element.protected Type
elementType
(Type containerType) Deprecated.for removal since 4.2.0, overrideelementType(AnnotatedType)
instead to pass through annotation information@Nullable T
emptyValue
(AnnotatedType 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.final void
serialize
(AnnotatedType type, @Nullable T obj, ConfigurationNode node) Serialize an object to the given configuration node.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.spongepowered.configurate.serialize.TypeSerializer.Annotated
deserialize, emptyValue, serialize
-
Constructor Details
-
AbstractListChildSerializer
protected AbstractListChildSerializer()Create a new serializer, only for use by subclasses.- Since:
- 4.1.0
-
-
Method Details
-
deserialize
public final T deserialize(AnnotatedType 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>
- Specified by:
deserialize
in interfaceTypeSerializer.Annotated<T>
- Parameters:
type
- the annotated 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(AnnotatedType 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>
- Specified by:
serialize
in interfaceTypeSerializer.Annotated<T>
- Parameters:
type
- the annotated type of the input objectobj
- the object to be serializednode
- the node to write to- Throws:
SerializationException
- if the object cannot be serialized
-
emptyValue
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>
- Specified by:
emptyValue
in interfaceTypeSerializer.Annotated<T>
- Parameters:
specificType
- specific annotated subtype to create an empty value ofoptions
- options used from the loading node- Returns:
- new empty value
-
elementType
@ForOverride protected AnnotatedType elementType(AnnotatedType 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.2.0
-
elementType
Deprecated.for removal since 4.2.0, overrideelementType(AnnotatedType)
instead to pass through annotation informationGiven 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
@ForOverride protected T createNew(int length, AnnotatedType 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.2.0
-
createNew
@ForOverride @Deprecated protected T createNew(int length, Type elementType) throws SerializationException Deprecated.for removal since 4.2.0, overridecreateNew(int, AnnotatedType)
instead to pass through annotation informationCreate 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
@ForOverride protected abstract void forEachElement(T collection, CheckedConsumer<Object, SerializationException> action) throws SerializationExceptionPerform 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
@ForOverride 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
-
createNew(int, AnnotatedType)
instead to pass through annotation information