Class ScalarSerializer<T>

  • Type Parameters:
    T - the object type to serialize
    All Implemented Interfaces:
    TypeSerializer<T>, TypeSerializer.Annotated<T>
    Direct Known Subclasses:
    ScalarSerializer.Annotated

    public abstract class ScalarSerializer<T>
    extends java.lang.Object
    implements TypeSerializer.Annotated<T>
    Serialize a value that can be represented as a scalar value within a node. Implementations must be able to serialize when one of the accepted types is a String, and may support any other types as desired.

    When serializing to a node, null values will be passed through directly. If the type serialized by this serializer is one of the native types of the backing node, it will be written directly to the node without any transformation.

    Any serialized value must be deserializable by the same serializer.

    Since:
    4.0.0
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  ScalarSerializer.Annotated<V>
      A specialization of the scalar serializer that favors annotated type methods over unannotated methods.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected ScalarSerializer​(io.leangen.geantyref.TypeToken<T> type)
      Create a new scalar serializer that handles the provided type.
      protected ScalarSerializer​(java.lang.Class<T> type)
      Create a new scalar serializer that handles the provided type.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      T deserialize​(java.lang.Object value)
      Attempt to deserialize the provided object using an unspecialized type.
      T deserialize​(java.lang.reflect.AnnotatedType type, java.lang.Object obj)
      Given an object of unknown type, attempt to convert it into the given type.
      T deserialize​(java.lang.reflect.AnnotatedType type, ConfigurationNode node)
      Deserialize an object (of the correct type) from the given configuration node.
      abstract T deserialize​(java.lang.reflect.Type type, java.lang.Object obj)
      Given an object of unknown type, attempt to convert it into the given type.
      T deserialize​(java.lang.reflect.Type type, ConfigurationNode node)
      Deserialize an object (of the correct type) from the given configuration node.
      void serialize​(java.lang.reflect.AnnotatedType type, @Nullable T obj, ConfigurationNode node)
      Serialize an object to the given configuration node.
      void serialize​(java.lang.reflect.Type type, @Nullable T obj, ConfigurationNode node)
      Serialize an object to the given configuration node.
      protected abstract java.lang.Object serialize​(T item, java.util.function.Predicate<java.lang.Class<?>> typeSupported)
      Serialize the provided value to a supported type, testing against the provided predicate.
      java.lang.String serializeToString​(T item)
      Serialize the item to a String, in a representation that can be interpreted by this serializer again.
      @Nullable T tryDeserialize​(@Nullable java.lang.Object obj)
      Attempt to deserialize the provided object, but rather than throwing an exception when a deserialization error occurs, return null instead.
      io.leangen.geantyref.TypeToken<T> type()
      Get the general type token applicable for this serializer.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ScalarSerializer

        protected ScalarSerializer​(io.leangen.geantyref.TypeToken<T> type)
        Create a new scalar serializer that handles the provided type.
        Parameters:
        type - type to handle
        Since:
        4.0.0
      • ScalarSerializer

        protected ScalarSerializer​(java.lang.Class<T> type)
        Create a new scalar serializer that handles the provided type.

        type must not be a raw parameterized type.

        Parameters:
        type - type to handle
        Since:
        4.0.0
    • Method Detail

      • type

        public final io.leangen.geantyref.TypeToken<Ttype()
        Get the general type token applicable for this serializer. This token may be parameterized.
        Returns:
        the type token for this serializer
        Since:
        4.0.0
      • deserialize

        public final T deserialize​(java.lang.Object value)
                            throws SerializationException
        Attempt to deserialize the provided object using an unspecialized type. This may fail on more complicated deserialization processes such as with enum types.
        Parameters:
        value - the object to deserialize.
        Returns:
        the deserialized object, if possible
        Throws:
        SerializationException - if unable to coerce the value to the requested type.
        Since:
        4.0.0
      • deserialize

        public T deserialize​(java.lang.reflect.AnnotatedType type,
                             java.lang.Object obj)
                      throws SerializationException
        Given an object of unknown type, attempt to convert it into the given type.
        Parameters:
        type - the specific type of the type's usage
        obj - the object to convert
        Returns:
        a converted object
        Throws:
        SerializationException - if the object could not be converted for any reason
        Since:
        4.2.0
      • deserialize

        public abstract T deserialize​(java.lang.reflect.Type type,
                                      java.lang.Object obj)
                               throws SerializationException
        Given an object of unknown type, attempt to convert it into the given type.
        Parameters:
        type - the specific type of the type's usage
        obj - the object to convert
        Returns:
        a converted object
        Throws:
        SerializationException - if the object could not be converted for any reason
        Since:
        4.0.0
      • serialize

        protected abstract java.lang.Object serialize​(T item,
                                                      java.util.function.Predicate<java.lang.Class<?>> typeSupported)
        Serialize the provided value to a supported type, testing against the provided predicate.
        Parameters:
        item - the value to serialize
        typeSupported - a predicate to allow choosing which types are supported
        Returns:
        a serialized form of this object
        Since:
        4.0.0
      • tryDeserialize

        public final @Nullable T tryDeserialize​(@Nullable java.lang.Object obj)
        Attempt to deserialize the provided object, but rather than throwing an exception when a deserialization error occurs, return null instead.
        Parameters:
        obj - the object to try to deserialize
        Returns:
        an instance of the appropriate type, or null
        Since:
        4.0.0
        See Also:
        deserialize(Object)
      • serializeToString

        public final java.lang.String serializeToString​(T item)
        Serialize the item to a String, in a representation that can be interpreted by this serializer again.
        Parameters:
        item - the item to serialize
        Returns:
        the serialized form of the item
        Since:
        4.0.0