MCPcopy Create free account
hub / github.com/apache/nifi-minifi-cpp / onEnable

Method onEnable

extensions/jni/ExecuteJavaControllerService.cpp:74–108  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

72ExecuteJavaControllerService::~ExecuteJavaControllerService() = default;
73
74void ExecuteJavaControllerService::onEnable() {
75 std::string controller_service_name;
76
77 auto serv_cs = JVMLoader::getInstance()->getBaseServicer();
78 java_servicer_ = std::static_pointer_cast<controllers::JavaControllerService>(serv_cs);
79 if (serv_cs == nullptr)
80 throw std::runtime_error("Could not load controller service");
81
82 if (!getProperty(NiFiControllerService.getName(), class_name_)) {
83 throw std::runtime_error("NiFi Controller Service must be defined");
84 }
85
86 auto env = java_servicer_->attach();
87
88 ClassRegistrar::getRegistrar().registerClasses(env, java_servicer_, "org/apache/nifi/processor/JniConfigurationContext", getJniConfigurationContext());
89 ClassRegistrar::getRegistrar().registerClasses(env, java_servicer_, "org/apache/nifi/processor/JniInitializationContext", getJniInitializationContextSignatures());
90 config_context_.service_reference_ = shared_from_this();
91
92 contextInstance = java_servicer_->newInstance("org.apache.nifi.processor.JniConfigurationContext");
93
94 java_servicer_->setReference<minifi::jni::JniConfigurationContext>(env, contextInstance, &config_context_);
95
96 clazzInstance = java_servicer_->newInstance(class_name_);
97
98 auto methods_with_signatures = java_servicer_->getAnnotations(class_name_, "OnEnabled");
99 current_cs_class = java_servicer_->getObjectClass(class_name_, clazzInstance);
100 try {
101 for (const auto &mwithsig : methods_with_signatures) {
102 current_cs_class.callVoidMethod(env, clazzInstance, mwithsig.first, mwithsig.second, contextInstance);
103 }
104 } catch (std::runtime_error &re) {
105 // this can be ignored.
106 }
107
108}
109
110} /* namespace controllers */
111} /* namespace jni */

Callers

nothing calls this directly

Calls 8

getBaseServicerMethod · 0.80
registerClassesMethod · 0.80
callVoidMethodMethod · 0.80
getNameMethod · 0.45
attachMethod · 0.45
newInstanceMethod · 0.45
getAnnotationsMethod · 0.45
getObjectClassMethod · 0.45

Tested by

no test coverage detected