Class ScalaOptionSerde<T>

java.lang.Object
io.micronaut.scala.serde.ScalaOptionSerde<T>
Type Parameters:
T - The value type
All Implemented Interfaces:
io.micronaut.serde.Deserializer<scala.Option<T>>, io.micronaut.serde.Serializer<scala.Option<T>>, io.micronaut.serde.util.CustomizableDeserializer<scala.Option<T>>, io.micronaut.serde.util.CustomizableSerializer<scala.Option<T>>

@Singleton @Requires(classes=io.micronaut.serde.Serializer.class) public final class ScalaOptionSerde<T> extends Object implements io.micronaut.serde.util.CustomizableSerializer<scala.Option<T>>, io.micronaut.serde.util.CustomizableDeserializer<scala.Option<T>>
Serialization for Option, which is how Scala says a value may be absent.

Serialization has no notion of an option: a member is present or it is not. Micronaut Serialization already says that for java.util.Optional, and this says the same for Scala's. Without it Some and None are introspected as though they were beans of their own, which fails -- they carry no properties anyone declared.

An empty option is reported absent as well as null, so a member declared Option[String] is left out of the document entirely where the configuration omits nulls, which is what makes the type worth using rather than merely tolerated.

  • Nested Class Summary

    Nested classes/interfaces inherited from interface io.micronaut.serde.Deserializer

    io.micronaut.serde.Deserializer.DecoderContext

    Nested classes/interfaces inherited from interface io.micronaut.serde.Serializer

    io.micronaut.serde.Serializer.EncoderContext
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    io.micronaut.serde.Deserializer<scala.Option<T>>
    createSpecific(io.micronaut.serde.Deserializer.DecoderContext context, io.micronaut.core.type.Argument<? super scala.Option<T>> type)
     
    io.micronaut.serde.Serializer<scala.Option<T>>
    createSpecific(io.micronaut.serde.Serializer.EncoderContext context, io.micronaut.core.type.Argument<? extends scala.Option<T>> type)
     
    scala.Option<T>
    getDefaultValue(io.micronaut.serde.Deserializer.DecoderContext context, io.micronaut.core.type.Argument<? super scala.Option<T>> type)
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface io.micronaut.serde.util.CustomizableDeserializer

    deserialize, deserializeNullable

    Methods inherited from interface io.micronaut.serde.util.CustomizableSerializer

    isAbsent, isEmpty, serialize

    Methods inherited from interface io.micronaut.serde.Serializer

    isDefault
  • Constructor Details

    • ScalaOptionSerde

      public ScalaOptionSerde()
  • Method Details

    • createSpecific

      public io.micronaut.serde.Serializer<scala.Option<T>> createSpecific(io.micronaut.serde.Serializer.EncoderContext context, io.micronaut.core.type.Argument<? extends scala.Option<T>> type) throws io.micronaut.serde.exceptions.SerdeException
      Specified by:
      createSpecific in interface io.micronaut.serde.Serializer<T>
      Throws:
      io.micronaut.serde.exceptions.SerdeException
    • createSpecific

      public io.micronaut.serde.Deserializer<scala.Option<T>> createSpecific(io.micronaut.serde.Deserializer.DecoderContext context, io.micronaut.core.type.Argument<? super scala.Option<T>> type) throws io.micronaut.serde.exceptions.SerdeException
      Specified by:
      createSpecific in interface io.micronaut.serde.Deserializer<T>
      Throws:
      io.micronaut.serde.exceptions.SerdeException
    • getDefaultValue

      public scala.Option<T> getDefaultValue(io.micronaut.serde.Deserializer.DecoderContext context, io.micronaut.core.type.Argument<? super scala.Option<T>> type)
      Specified by:
      getDefaultValue in interface io.micronaut.serde.util.CustomizableDeserializer<T>
      Specified by:
      getDefaultValue in interface io.micronaut.serde.Deserializer<T>