Skip to content

Commit 53e45f0

Browse files
committed
Reuse parseControllerService utility
1 parent fa5f1ba commit 53e45f0

File tree

2 files changed

+7
-23
lines changed

2 files changed

+7
-23
lines changed

extensions/standard-processors/processors/ConvertRecord.cpp

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,33 +22,15 @@
2222
#include "utils/ProcessorConfigUtils.h"
2323

2424
namespace org::apache::nifi::minifi::processors {
25-
namespace {
26-
template<typename RecordSetIO>
27-
std::shared_ptr<RecordSetIO> getRecordSetIO(core::ProcessContext& context, const core::PropertyReference& property, const utils::Identifier& processor_uuid) {
28-
std::string service_name = context.getProperty(property).value_or("");
29-
if (!IsNullOrEmpty(service_name)) {
30-
auto record_set_io = std::dynamic_pointer_cast<RecordSetIO>(context.getControllerService(service_name, processor_uuid));
31-
if (!record_set_io)
32-
return nullptr;
33-
return record_set_io;
34-
}
35-
return nullptr;
36-
}
37-
} // namespace
3825

3926
void ConvertRecord::onSchedule(core::ProcessContext& context, core::ProcessSessionFactory&) {
40-
record_set_reader_ = getRecordSetIO<core::RecordSetReader>(context, RecordReader, getUUID());
41-
if (!record_set_reader_) {
42-
throw Exception(ExceptionType::PROCESS_SCHEDULE_EXCEPTION, "Record Reader property is missing or invalid");
43-
}
44-
record_set_writer_ = getRecordSetIO<core::RecordSetWriter>(context, RecordWriter, getUUID());
45-
if (!record_set_writer_) {
46-
throw Exception(ExceptionType::PROCESS_SCHEDULE_EXCEPTION, "Record Writer property is missing or invalid");
47-
}
27+
record_set_reader_ = utils::parseControllerService<core::RecordSetReader>(context, RecordReader, getUUID());
28+
record_set_writer_ = utils::parseControllerService<core::RecordSetWriter>(context, RecordWriter, getUUID());
4829
include_zero_record_flow_files_ = utils::parseBoolProperty(context, IncludeZeroRecordFlowFiles);
4930
}
5031

5132
void ConvertRecord::onTrigger(core::ProcessContext& context, core::ProcessSession& session) {
33+
gsl_Expects(record_set_reader_ && record_set_writer_);
5234
const auto flow_file = session.get();
5335
if (!flow_file) {
5436
context.yield();

extensions/standard-processors/tests/unit/ConvertRecordTests.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@ TEST_CASE("ConvertRecord scheduling fails with invalid reader and writer", "[Con
3232
SingleProcessorTestController controller(utils::make_processor<processors::ConvertRecord>("ConvertRecord"));
3333
controller.plan->addController("XMLReader", "XMLReader");
3434

35-
REQUIRE_THROWS_WITH(controller.trigger(minifi::test::InputFlowFileData{""}), "Process Schedule Operation: Record Reader property is missing or invalid");
35+
REQUIRE_THROWS_WITH(controller.trigger(minifi::test::InputFlowFileData{""}), "Process Schedule Operation: Required controller service property 'Record Reader' is missing");
3636

3737
REQUIRE(controller.getProcessor()->setProperty(processors::ConvertRecord::RecordReader.name, "XMLReader"));
38-
REQUIRE_THROWS_WITH(controller.trigger(minifi::test::InputFlowFileData{""}), "Process Schedule Operation: Record Writer property is missing or invalid");
38+
REQUIRE_THROWS_WITH(controller.trigger(minifi::test::InputFlowFileData{""}), "Process Schedule Operation: Required controller service property 'Record Writer' is missing");
39+
REQUIRE(controller.getProcessor()->setProperty(processors::ConvertRecord::RecordWriter.name, "XMLWriter"));
40+
REQUIRE_THROWS_WITH(controller.trigger(minifi::test::InputFlowFileData{""}), "Process Schedule Operation: Controller service 'Record Writer' = 'XMLWriter' not found");
3941
}
4042

4143
TEST_CASE("Record conversion fails with read failure", "[ConvertRecord]") {

0 commit comments

Comments
 (0)