Class DispatchCodec<K,V>
java.lang.Object
com.github.darksoulq.abyssallib.common.serialization.codecs.DispatchCodec<K,V>
- Type Parameters:
K- Discriminator key type.V- Polymorphic value type.
- All Implemented Interfaces:
Codec<V>
Codec supporting polymorphic serialization through a discriminator field.
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.github.darksoulq.abyssallib.common.serialization.Codec
Codec.Decoder<T>, Codec.Encoder<T>, Codec.Pair<A,B>, Codec.Tuple3<A, B, C>, Codec.Tuple4<A, B, C, D> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription<R> Raccept(CodecVisitor<R> visitor) Routes this instance into the visitor API to construct contextual schema layouts.<D> DataResult<V> decode(DynamicOps<D> ops, D input) Decodes a serialized input of a specific data format into a Java object.describe()Outputs a structural description of the expected format for this codec.<D> DataResult<D> encode(DynamicOps<D> ops, V value) Encodes a Java object into its serialized representation.Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.github.darksoulq.abyssallib.common.serialization.Codec
collection, comapFlatMap, decodeAsync, describe, encodeAsync, fieldOf, flatComapMap, flatXmap, immutableList, immutableSet, list, maxLength, minLength, nullable, oneOf, optional, optionalFieldOf, optionalFieldOf, orElse, positive, range, regex, restrict, schema, set, structuralEquals, transform, unchecked, validate, validate, versioned, withSchema, xmap
-
Constructor Details
-
DispatchCodec
public DispatchCodec(String typeKey, Codec<K> keyCodec, Function<? super V, ? extends K> typeGetter, Function<? super K, ? extends Codec<? extends V>> codecGetter) Creates a dispatch codec.- Parameters:
typeKey- Name of the discriminator field.keyCodec- Codec used for discriminator values.typeGetter- Extracts the discriminator from a value.codecGetter- Resolves a codec from a discriminator value.
-
-
Method Details
-
decode
Description copied from interface:CodecDecodes a serialized input of a specific data format into a Java object. -
encode
Description copied from interface:CodecEncodes a Java object into its serialized representation. -
describe
Description copied from interface:CodecOutputs a structural description of the expected format for this codec. Useful for schema generation and validation debugging. -
accept
Description copied from interface:CodecRoutes this instance into the visitor API to construct contextual schema layouts.
-