Class ExtractNewDocumentState<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
- java.lang.Object
-
- io.debezium.connector.mongodb.transforms.ExtractNewDocumentState<R>
-
- Type Parameters:
R- the subtype ofConnectRecordon 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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classExtractNewDocumentState.ArrayEncodingprivate static classExtractNewDocumentState.FieldReferenceRepresents a field that should be added to the outgoing record as a header attribute or struct field.
-
Field Summary
Fields Modifier and Type Field Description static FieldADD_SOURCE_FIELDSprivate StringaddFieldsPrefixprivate List<ExtractNewDocumentState.FieldReference>additionalFieldsprivate List<ExtractNewDocumentState.FieldReference>additionalHeadersprivate booleanaddOperationHeaderprivate List<String>addSourceFieldsprivate org.apache.kafka.connect.transforms.ExtractField<R>afterExtractorprivate static FieldARRAY_ENCODINGprivate MongoDataConverterconverterprivate Stringdelimiterprivate static FieldDELIMITERprivate booleandropTombstonesprivate static PatternFIELD_SEPARATORprivate static FieldFLATTEN_STRUCTprivate booleanflattenStructprivate ExtractNewRecordStateConfigDefinition.DeleteHandlinghandleDeletesprivate org.apache.kafka.connect.transforms.ExtractField<R>keyExtractorprivate static org.slf4j.LoggerLOGGERstatic FieldOPERATION_HEADERprivate org.apache.kafka.connect.transforms.ExtractField<R>patchExtractorprivate org.apache.kafka.connect.transforms.Flatten<R>recordFlattenerstatic FieldSANITIZE_FIELD_NAMESprivate SmtManager<R>smtManager
-
Constructor Summary
Constructors Constructor Description ExtractNewDocumentState()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddAdditionalFieldsSchema(List<ExtractNewDocumentState.FieldReference> additionalFields, R originalRecord, org.apache.kafka.connect.data.SchemaBuilder valueSchemaBuilder)private voidaddFields(List<ExtractNewDocumentState.FieldReference> additionalFields, R originalRecord, org.apache.kafka.connect.data.Struct value)private voidaddSourceFieldsSchema(String fieldPrefix, List<String> addSourceFields, R originalRecord, org.apache.kafka.connect.data.SchemaBuilder valueSchemaBuilder)private voidaddSourceFieldsValue(List<String> addSourceFields, R originalRecord, org.apache.kafka.connect.data.Struct valueStruct)Rapply(R record)voidclose()org.apache.kafka.common.config.ConfigDefconfig()voidconfigure(Map<String,?> map)private static List<String>determineAdditionalSourceField(String addSourceFieldsConfig)private org.bson.BsonDocumentgetInsertDocument(R record, org.bson.BsonDocument key)private org.bson.BsonDocumentgetUpdateDocument(R patchRecord, org.bson.BsonDocument keyDocument)private org.apache.kafka.connect.header.HeadersmakeHeaders(List<ExtractNewDocumentState.FieldReference> additionalHeaders, org.apache.kafka.connect.data.Struct originalRecordValue)private RnewRecord(R record, org.bson.BsonDocument keyDocument, org.bson.BsonDocument valueDocument)
-
-
-
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
-
converter
private MongoDataConverter converter
-
recordFlattener
private final org.apache.kafka.connect.transforms.Flatten<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> recordFlattener
-
addOperationHeader
private boolean addOperationHeader
-
additionalHeaders
private List<ExtractNewDocumentState.FieldReference> additionalHeaders
-
additionalFields
private List<ExtractNewDocumentState.FieldReference> additionalFields
-
flattenStruct
private boolean flattenStruct
-
delimiter
private String delimiter
-
dropTombstones
private boolean dropTombstones
-
handleDeletes
private ExtractNewRecordStateConfigDefinition.DeleteHandling handleDeletes
-
smtManager
private SmtManager<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> smtManager
-
-
Method Detail
-
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)
-
addFields
private void addFields(List<ExtractNewDocumentState.FieldReference> additionalFields, R originalRecord, org.apache.kafka.connect.data.Struct value)
-
getUpdateDocument
private org.bson.BsonDocument getUpdateDocument(R patchRecord, org.bson.BsonDocument keyDocument)
-
getInsertDocument
private org.bson.BsonDocument getInsertDocument(R record, org.bson.BsonDocument key)
-
makeHeaders
private org.apache.kafka.connect.header.Headers makeHeaders(List<ExtractNewDocumentState.FieldReference> additionalHeaders, org.apache.kafka.connect.data.Struct originalRecordValue)
-
config
public org.apache.kafka.common.config.ConfigDef config()
-
close
public void close()
-
configure
public void configure(Map<String,?> map)
- Specified by:
configurein interfaceorg.apache.kafka.common.Configurable
-
-