Class JsonSchemaKafkaSerializer<T>

  • All Implemented Interfaces:
    io.apicurio.registry.resolver.SchemaParser<com.networknt.schema.JsonSchema,​T>, Closeable, AutoCloseable, org.apache.kafka.common.serialization.Serializer<T>

    public class JsonSchemaKafkaSerializer<T>
    extends AbstractKafkaSerializer<com.networknt.schema.JsonSchema,​T>
    implements org.apache.kafka.common.serialization.Serializer<T>, io.apicurio.registry.resolver.SchemaParser<com.networknt.schema.JsonSchema,​T>
    An implementation of the Kafka Serializer for JSON Schema use-cases. This serializer assumes that the user's application needs to serialize a Java Bean to JSON data using Jackson. In addition to standard serialization of the bean, this implementation can also optionally validate it against a JSON schema.
    Author:
    eric.wittmann@gmail.com, Ales Justin, Fabian Martinez, Carles Arnal
    • Field Detail

      • mapper

        protected static com.fasterxml.jackson.databind.ObjectMapper mapper
    • Constructor Detail

      • JsonSchemaKafkaSerializer

        public JsonSchemaKafkaSerializer()
      • JsonSchemaKafkaSerializer

        public JsonSchemaKafkaSerializer​(io.apicurio.registry.rest.client.RegistryClient client,
                                         io.apicurio.registry.resolver.strategy.ArtifactReferenceResolverStrategy<com.networknt.schema.JsonSchema,​T> artifactResolverStrategy,
                                         io.apicurio.registry.resolver.SchemaResolver<com.networknt.schema.JsonSchema,​T> schemaResolver)
      • JsonSchemaKafkaSerializer

        public JsonSchemaKafkaSerializer​(io.apicurio.registry.rest.client.RegistryClient client)
      • JsonSchemaKafkaSerializer

        public JsonSchemaKafkaSerializer​(io.apicurio.registry.resolver.SchemaResolver<com.networknt.schema.JsonSchema,​T> schemaResolver)
      • JsonSchemaKafkaSerializer

        public JsonSchemaKafkaSerializer​(io.apicurio.registry.rest.client.RegistryClient client,
                                         Boolean validationEnabled)
    • Method Detail

      • isValidationEnabled

        public boolean isValidationEnabled()
      • setValidationEnabled

        public void setValidationEnabled​(Boolean validationEnabled)
        Parameters:
        validationEnabled - the validationEnabled to set
      • artifactType

        public io.apicurio.registry.types.ArtifactType artifactType()
        Specified by:
        artifactType in interface io.apicurio.registry.resolver.SchemaParser<com.networknt.schema.JsonSchema,​T>
        See Also:
        SchemaParser.artifactType()
      • parseSchema

        public com.networknt.schema.JsonSchema parseSchema​(byte[] rawSchema)
        Specified by:
        parseSchema in interface io.apicurio.registry.resolver.SchemaParser<com.networknt.schema.JsonSchema,​T>
        See Also:
        SchemaParser.parseSchema(byte[])
      • getSchemaFromData

        public io.apicurio.registry.resolver.ParsedSchema<com.networknt.schema.JsonSchema> getSchemaFromData​(io.apicurio.registry.resolver.data.Record<T> data)
        Specified by:
        getSchemaFromData in interface io.apicurio.registry.resolver.SchemaParser<com.networknt.schema.JsonSchema,​T>
        See Also:
        io.apicurio.registry.resolver.SchemaParser#getSchemaFromData(java.lang.Object)
      • supportsExtractSchemaFromData

        public boolean supportsExtractSchemaFromData()
        Specified by:
        supportsExtractSchemaFromData in interface io.apicurio.registry.resolver.SchemaParser<com.networknt.schema.JsonSchema,​T>
        See Also:
        SchemaParser.supportsExtractSchemaFromData()
      • serializeData

        protected void serializeData​(io.apicurio.registry.resolver.ParsedSchema<com.networknt.schema.JsonSchema> schema,
                                     T data,
                                     OutputStream out)
                              throws IOException
        Specified by:
        serializeData in class AbstractKafkaSerializer<com.networknt.schema.JsonSchema,​T>
        Throws:
        IOException
        See Also:
        io.apicurio.registry.serde.AbstractKafkaSerializer#serializeData(io.apicurio.registry.serde.ParsedSchema, java.lang.Object, java.io.OutputStream)
      • serializeData

        protected void serializeData​(org.apache.kafka.common.header.Headers headers,
                                     io.apicurio.registry.resolver.ParsedSchema<com.networknt.schema.JsonSchema> schema,
                                     T data,
                                     OutputStream out)
                              throws IOException
        Specified by:
        serializeData in class AbstractKafkaSerializer<com.networknt.schema.JsonSchema,​T>
        Throws:
        IOException
        See Also:
        io.apicurio.registry.serde.AbstractKafkaSerializer#serializeData(org.apache.kafka.common.header.Headers, io.apicurio.registry.serde.ParsedSchema, java.lang.Object, java.io.OutputStream)