Class SchemaGenerator
java.lang.Object
com.github.darksoulq.abyssallib.common.serialization.schema.SchemaGenerator
- All Implemented Interfaces:
CodecVisitor<SchemaNode>
Generates schema representations from codec definitions.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic SchemaNodeGenerates a schema from the supplied codec.visitCustom(SchemaNode customSchema) Visits a predefined explicit custom schema representation.visitDispatch(String discriminator) Visits a dispatch codec.visitEither(Codec<?> left, Codec<?> right) Visits a codec representing one of two possible types.Visits an enum codec.Visits a list codec.Visits a map codec.visitOneOf(List<Codec<?>> codecs) Visits a codec that may match one of several alternatives.visitOptional(Codec<?> wrapped) Visits an optional codec.visitPrimitive(String type) Visits a primitive codec type.visitRecord(Iterable<RecordField<?, ?>> fields) Visits a record codec structurally mapped from field parameters.visitTuple(List<Codec<?>> codecs) Visits a codec representing a fixed ordered sequence of values.visitUnknown(String description) Visits an unknown or unsupported codec type.
-
Constructor Details
-
SchemaGenerator
public SchemaGenerator()
-
-
Method Details
-
generate
Generates a schema from the supplied codec.- Parameters:
codec- root codec- Returns:
- generated schema
-
visitPrimitive
Description copied from interface:CodecVisitorVisits a primitive codec type.- Specified by:
visitPrimitivein interfaceCodecVisitor<SchemaNode>- Parameters:
type- primitive type identifier- Returns:
- visitor result
-
visitRecord
Description copied from interface:CodecVisitorVisits a record codec structurally mapped from field parameters.- Specified by:
visitRecordin interfaceCodecVisitor<SchemaNode>- Parameters:
fields- the iterable structure of fields mapped to the record- Returns:
- visitor result
-
visitList
Description copied from interface:CodecVisitorVisits a list codec.- Specified by:
visitListin interfaceCodecVisitor<SchemaNode>- Parameters:
elementCodec- codec describing list elements- Returns:
- visitor result
-
visitMap
Description copied from interface:CodecVisitorVisits a map codec.- Specified by:
visitMapin interfaceCodecVisitor<SchemaNode>- Parameters:
keyCodec- codec describing map keysvalueCodec- codec describing map values- Returns:
- visitor result
-
visitEnum
Description copied from interface:CodecVisitorVisits an enum codec.- Specified by:
visitEnumin interfaceCodecVisitor<SchemaNode>- Parameters:
enumClass- enum type represented by the codec- Returns:
- visitor result
-
visitOptional
Description copied from interface:CodecVisitorVisits an optional codec.- Specified by:
visitOptionalin interfaceCodecVisitor<SchemaNode>- Parameters:
wrapped- wrapped codec- Returns:
- visitor result
-
visitEither
Description copied from interface:CodecVisitorVisits a codec representing one of two possible types.- Specified by:
visitEitherin interfaceCodecVisitor<SchemaNode>- Parameters:
left- left codecright- right codec- Returns:
- visitor result
-
visitDispatch
Description copied from interface:CodecVisitorVisits a dispatch codec.- Specified by:
visitDispatchin interfaceCodecVisitor<SchemaNode>- Parameters:
discriminator- field used to determine the target variant- Returns:
- visitor result
-
visitOneOf
Description copied from interface:CodecVisitorVisits a codec that may match one of several alternatives.- Specified by:
visitOneOfin interfaceCodecVisitor<SchemaNode>- Parameters:
codecs- alternative codecs- Returns:
- visitor result
-
visitTuple
Description copied from interface:CodecVisitorVisits a codec representing a fixed ordered sequence of values.- Specified by:
visitTuplein interfaceCodecVisitor<SchemaNode>- Parameters:
codecs- codecs describing tuple elements- Returns:
- visitor result
-
visitUnknown
Description copied from interface:CodecVisitorVisits an unknown or unsupported codec type.- Specified by:
visitUnknownin interfaceCodecVisitor<SchemaNode>- Parameters:
description- description of the codec- Returns:
- visitor result
-
visitCustom
Description copied from interface:CodecVisitorVisits a predefined explicit custom schema representation.- Specified by:
visitCustomin interfaceCodecVisitor<SchemaNode>- Parameters:
customSchema- explicitly defined custom schema node- Returns:
- visitor result
-