in src/main/java/software/amazon/qldb/tutorial/model/streams/StreamRecord.java [118:142]
public StreamRecord deserialize(JsonParser jp, DeserializationContext dc)
throws IOException {
ObjectCodec codec = jp.getCodec();
JsonNode node = codec.readTree(jp);
String qldbStreamArn = node.get("qldbStreamArn").textValue();
String recordType = node.get("recordType").textValue();
JsonNode payloadJson = node.get("payload");
StreamRecordPayload payload = null;
switch (recordType) {
case "CONTROL":
payload = codec.treeToValue(payloadJson, ControlRecord.class);
break;
case "BLOCK_SUMMARY":
payload = codec.treeToValue(payloadJson, BlockSummaryRecord.class);
break;
case "REVISION_DETAILS":
payload = codec.treeToValue(payloadJson, RevisionDetailsRecord.class);
break;
default:
throw new RuntimeException("Unsupported record type: " + recordType);
}
return new StreamRecord(qldbStreamArn, recordType, payload);
}