private WriteModel<Document> mapWriteModel(WriteModel<Document> writeModel) { if (writeModel instanceof UpdateOneModel) { UpdateOneModel<Document> model = (UpdateOneModel<Document>) writeModel; return new UpdateOneModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), model.getOptions()); } if (writeModel instanceof UpdateManyModel) { UpdateManyModel<Document> model = (UpdateManyModel<Document>) writeModel; return new UpdateManyModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), model.getOptions()); } if (writeModel instanceof DeleteOneModel) { DeleteOneModel<Document> model = (DeleteOneModel<Document>) writeModel; return new DeleteOneModel<>(getMappedQuery(model.getFilter()), model.getOptions()); } if (writeModel instanceof DeleteManyModel) { DeleteManyModel<Document> model = (DeleteManyModel<Document>) writeModel; return new DeleteManyModel<>(getMappedQuery(model.getFilter()), model.getOptions()); } return writeModel; }
} else if (writeModel instanceof UpdateOneModel) { UpdateOneModel<TDocument> updateOneModel = (UpdateOneModel<TDocument>) writeModel; writeRequest = new UpdateRequest(toBsonDocument(updateOneModel.getFilter()), toBsonDocument(updateOneModel.getUpdate()), WriteRequest.Type.UPDATE) .multi(false)
private WriteModel<Document> mapWriteModel(WriteModel<Document> writeModel) { if (writeModel instanceof UpdateOneModel) { UpdateOneModel<Document> model = (UpdateOneModel<Document>) writeModel; return new UpdateOneModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), model.getOptions()); } if (writeModel instanceof UpdateManyModel) { UpdateManyModel<Document> model = (UpdateManyModel<Document>) writeModel; return new UpdateManyModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), model.getOptions()); } if (writeModel instanceof DeleteOneModel) { DeleteOneModel<Document> model = (DeleteOneModel<Document>) writeModel; return new DeleteOneModel<>(getMappedQuery(model.getFilter()), model.getOptions()); } if (writeModel instanceof DeleteManyModel) { DeleteManyModel<Document> model = (DeleteManyModel<Document>) writeModel; return new DeleteManyModel<>(getMappedQuery(model.getFilter()), model.getOptions()); } return writeModel; }
@Test @DisplayName("when valid doc change cdc event then correct UpdateOneModel") public void testValidSinkDocumentForUpdate() { BsonDocument keyDoc = new BsonDocument("id",new BsonString("1004")); BsonDocument valueDoc = new BsonDocument("op",new BsonString("u")) .append("patch",new BsonString(UPDATE_DOC.toJson())); WriteModel<BsonDocument> result = MONGODB_UPDATE.perform(new SinkDocument(keyDoc,valueDoc)); assertTrue(result instanceof UpdateOneModel, () -> "result expected to be of type UpdateOneModel"); UpdateOneModel<BsonDocument> writeModel = (UpdateOneModel<BsonDocument>) result; assertEquals(UPDATE_DOC,writeModel.getUpdate(), ()-> "update doc not matching what is expected"); assertTrue(writeModel.getFilter() instanceof BsonDocument, () -> "filter expected to be of type BsonDocument"); assertEquals(FILTER_DOC,writeModel.getFilter()); }
} else if (writeModel instanceof UpdateOneModel) { UpdateOneModel<TDocument> updateOneModel = (UpdateOneModel<TDocument>) writeModel; writeRequest = new UpdateRequest(toBsonDocument(updateOneModel.getFilter()), toBsonDocument(updateOneModel.getUpdate()), WriteRequest.Type.UPDATE) .multi(false)