Class ExtractNewDocumentState<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>

java.lang.Object
io.debezium.transforms.AbstractExtractNewRecordState<R>
io.debezium.connector.mongodb.transforms.ExtractNewDocumentState<R>
Type Parameters:
R - the subtype of ConnectRecord on which this transformation will operate
All Implemented Interfaces:
Closeable, AutoCloseable, org.apache.kafka.common.Configurable, org.apache.kafka.connect.components.Versioned, org.apache.kafka.connect.transforms.Transformation<R>

public class ExtractNewDocumentState<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> extends AbstractExtractNewRecordState<R>
Debezium Mongo Connector generates the CDC records in String format. Sink connectors usually are not able to parse the string and insert the document as it is represented in the Source. so a user use this SMT to parse the String and insert the MongoDB document in the JSON format.
Author:
Sairam Polavarapu, Renato mefi
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • ARRAY_ENCODING

      private static final Field ARRAY_ENCODING
    • FLATTEN_STRUCT

      private static final Field FLATTEN_STRUCT
    • DELIMITER

      private static final Field DELIMITER
    • REWRITE_TOMBSTONE_DELETES_WITH_ID

      public static final Field REWRITE_TOMBSTONE_DELETES_WITH_ID
    • keyExtractor

      private org.apache.kafka.connect.transforms.ExtractField<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> keyExtractor
    • recordFlattener

      private org.apache.kafka.connect.transforms.Flatten<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> recordFlattener
    • converter

      private MongoDataConverter converter
    • flattenStruct

      private boolean flattenStruct
    • delimiter

      private String delimiter
    • rewriteTombstoneDeletesWithId

      private boolean rewriteTombstoneDeletesWithId
    • configFields

      private final Field.Set configFields
  • Constructor Details

    • ExtractNewDocumentState

      public ExtractNewDocumentState()
  • Method Details

    • configure

      public void configure(Map<String,?> configs)
      Specified by:
      configure in interface org.apache.kafka.common.Configurable
      Overrides:
      configure in class AbstractExtractNewRecordState<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
    • doApply

      public R doApply(R record)
      Specified by:
      doApply in class AbstractExtractNewRecordState<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
    • validateConfigFields

      public Iterable<Field> validateConfigFields()
      Specified by:
      validateConfigFields in class AbstractExtractNewRecordState<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
    • config

      public org.apache.kafka.common.config.ConfigDef config()
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface org.apache.kafka.connect.transforms.Transformation<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
      Overrides:
      close in class AbstractExtractNewRecordState<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
    • newRecord

      private R newRecord(R record, org.bson.BsonDocument keyDocument, org.bson.BsonDocument valueDocument)
    • addAdditionalFieldsSchema

      private void addAdditionalFieldsSchema(List<AbstractExtractNewRecordState.FieldReference> additionalFields, R originalRecord, org.apache.kafka.connect.data.SchemaBuilder valueSchemaBuilder)
    • addFields

      private void addFields(List<AbstractExtractNewRecordState.FieldReference> additionalFields, R originalRecord, org.apache.kafka.connect.data.Struct value)
    • getPartialUpdateDocument

      private org.bson.BsonDocument getPartialUpdateDocument(R beforeRecord, R updateDescriptionRecord, org.bson.BsonDocument keyDocument)
    • getFullDocument

      private org.bson.BsonDocument getFullDocument(R record, org.bson.BsonDocument key)