Class ExtractNewDocumentState<R extends org.apache.kafka.connect.connector.ConnectRecord<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.transforms.Transformation<R>

    public class ExtractNewDocumentState<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
    extends Object
    implements org.apache.kafka.connect.transforms.Transformation<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 Detail

      • addFieldsPrefix

        private String addFieldsPrefix
      • LOGGER

        private static final org.slf4j.Logger LOGGER
      • FIELD_SEPARATOR

        private static final Pattern FIELD_SEPARATOR
      • ARRAY_ENCODING

        private static final Field ARRAY_ENCODING
      • FLATTEN_STRUCT

        private static final Field FLATTEN_STRUCT
      • DELIMITER

        private static final Field DELIMITER
      • SANITIZE_FIELD_NAMES

        public static final Field SANITIZE_FIELD_NAMES
      • ADD_SOURCE_FIELDS

        public static final Field ADD_SOURCE_FIELDS
      • OPERATION_HEADER

        public static final Field OPERATION_HEADER
      • afterExtractor

        private final org.apache.kafka.connect.transforms.ExtractField<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> afterExtractor
      • patchExtractor

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

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

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

        private boolean addOperationHeader
      • addSourceFields

        private List<String> addSourceFields
      • flattenStruct

        private boolean flattenStruct
      • delimiter

        private String delimiter
      • dropTombstones

        private boolean dropTombstones
      • smtManager

        private SmtManager<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> smtManager
    • Constructor Detail

      • ExtractNewDocumentState

        public ExtractNewDocumentState()
    • Method Detail

      • apply

        public R apply​(R record)
        Specified by:
        apply in interface org.apache.kafka.connect.transforms.Transformation<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
      • newRecord

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

        private void addSourceFieldsSchema​(String fieldPrefix,
                                           List<String> addSourceFields,
                                           R originalRecord,
                                           org.apache.kafka.connect.data.SchemaBuilder valueSchemaBuilder)
      • addAdditionalFieldsSchema

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

        private void addSourceFieldsValue​(List<String> addSourceFields,
                                          R originalRecord,
                                          org.apache.kafka.connect.data.Struct valueStruct)
      • getUpdateDocument

        private org.bson.BsonDocument getUpdateDocument​(R patchRecord,
                                                        org.bson.BsonDocument keyDocument)
      • getInsertDocument

        private org.bson.BsonDocument getInsertDocument​(R record,
                                                        org.bson.BsonDocument key)
      • config

        public org.apache.kafka.common.config.ConfigDef config()
        Specified by:
        config in interface org.apache.kafka.connect.transforms.Transformation<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
      • 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>>
      • configure

        public void configure​(Map<String,​?> map)
        Specified by:
        configure in interface org.apache.kafka.common.Configurable
      • determineAdditionalSourceField

        private static List<String> determineAdditionalSourceField​(String addSourceFieldsConfig)