DBZ-5015 Get the json value of a Document when parsing signaling message

This commit is contained in:
chadthamn 2022-04-20 17:29:28 -06:00 committed by Jiri Pechanec
parent 7efd7c5dee
commit 1b23507504
4 changed files with 38 additions and 2 deletions

View File

@ -60,6 +60,7 @@ Brandon Maguire
Brennan Vincent
Camile Sing
Cao Manh Dat
Chad Marmon
Cheng Pan
Ching Tsai
Chris Baumbauer

View File

@ -833,8 +833,12 @@ public Optional<String[]> parseSignallingMessage(Struct value) {
final String[] result = new String[3];
int idx = 0;
for (Object fieldValue : fields.values()) {
if (fieldValue instanceof Document) {
result[idx++] = ((Document) fieldValue).toJson();
} else {
result[idx++] = fieldValue.toString();
}
}
return Optional.of(result);
}

View File

@ -0,0 +1,30 @@
package io.debezium.connector.mongodb;
import org.apache.kafka.connect.data.Schema;
import org.apache.kafka.connect.data.SchemaBuilder;
import org.apache.kafka.connect.data.Struct;
import org.junit.Assert;
import org.junit.Test;
import java.util.Optional;
public class MongoDbConnectorConfigTest {
@Test
public void parseSignallingMessage() {
Schema schema = new SchemaBuilder(Schema.Type.STRUCT).field("after", Schema.STRING_SCHEMA).build();
Struct struct = new Struct(schema);
struct.put("after", "{\"_id\":\"test-1\"," +
"\"type\":\"execute-snapshot\"," +
"\"data\":{\"data-collections\":[\"database.collection\"],\"type\":\"incremental\"}}");
MongoDbConnectorConfig mongoDbConnectorConfig = new MongoDbConnectorConfig(TestHelper.getConfiguration());
Optional<String[]> resultOpt = mongoDbConnectorConfig.parseSignallingMessage(struct);
Assert.assertTrue(resultOpt.isPresent());
String[] result = resultOpt.get();
Assert.assertEquals(3, result.length);
Assert.assertEquals("test-1", result[0]);
Assert.assertEquals("execute-snapshot", result[1]);
Assert.assertEquals("{\"data-collections\": [\"database.collection\"], \"type\": \"incremental\"}", result[2]);
}
}

View File

@ -127,3 +127,4 @@ nenad,Nenad Stojanovikj
miphik,Andrey Savchuk
narzdavid,Narz David
LarsWerkman, Lars Werkman
chadthman, Chad Marmon