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.DecoderContextNested classes/interfaces inherited from interface io.micronaut.serde.Serializer
io.micronaut.serde.Serializer.EncoderContext -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionio.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, waitMethods inherited from interface io.micronaut.serde.util.CustomizableDeserializer
deserialize, deserializeNullableMethods inherited from interface io.micronaut.serde.util.CustomizableSerializer
isAbsent, isEmpty, serializeMethods 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:
createSpecificin interfaceio.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:
createSpecificin interfaceio.micronaut.serde.Deserializer<T>- Throws:
io.micronaut.serde.exceptions.SerdeException
-
getDefaultValue
-