| 72 | } |
| 73 | |
| 74 | void ExecuteJavaProcessor::onSchedule(const std::shared_ptr<core::ProcessContext> &context, const std::shared_ptr<core::ProcessSessionFactory> &sessionFactory) { |
| 75 | std::string controller_service_name; |
| 76 | if (getProperty(JVMControllerService.getName(), controller_service_name)) { |
| 77 | auto cs = context->getControllerService(controller_service_name); |
| 78 | if (cs == nullptr) { |
| 79 | auto serv_cs = JVMLoader::getInstance()->getBaseServicer(); |
| 80 | java_servicer_ = std::static_pointer_cast<controllers::JavaControllerService>(serv_cs); |
| 81 | if (serv_cs == nullptr) |
| 82 | throw std::runtime_error("Could not load controller service"); |
| 83 | } else { |
| 84 | java_servicer_ = std::static_pointer_cast<controllers::JavaControllerService>(cs); |
| 85 | } |
| 86 | |
| 87 | } else { |
| 88 | auto serv_cs = JVMLoader::getInstance()->getBaseServicer(); |
| 89 | java_servicer_ = std::static_pointer_cast<controllers::JavaControllerService>(serv_cs); |
| 90 | if (serv_cs == nullptr) |
| 91 | throw std::runtime_error("Could not load controller service"); |
| 92 | } |
| 93 | |
| 94 | if (!getProperty(NiFiProcessor.getName(), class_name_)) { |
| 95 | throw std::runtime_error("NiFi Processor must be defined"); |
| 96 | } |
| 97 | |
| 98 | nifi_logger_ = logging::LoggerFactory<ExecuteJavaProcessor>::getAliasedLogger(class_name_); |
| 99 | |
| 100 | jni_logger_ref_.logger_reference_ = nifi_logger_; |
| 101 | |
| 102 | jni_logger_class_ = java_servicer_->loadClass("org/apache/nifi/processor/JniLogger"); |
| 103 | |
| 104 | spn = java_servicer_->loadClass("org/apache/nifi/processor/JniProcessContext"); |
| 105 | auto env = java_servicer_->attach(); |
| 106 | java_servicer_->putNativeFunctionMapping<minifi::jni::JniProcessContext>(env, spn); |
| 107 | |
| 108 | ClassRegistrar::getRegistrar().registerClasses(env, java_servicer_, "org/apache/nifi/processor/JniInitializationContext", getJniInitializationContextSignatures()); |
| 109 | |
| 110 | init = java_servicer_->loadClass("org/apache/nifi/processor/JniInitializationContext"); |
| 111 | |
| 112 | ClassRegistrar::getRegistrar().registerClasses(env, java_servicer_, "org/apache/nifi/processor/JniControllerServiceLookup", getJniControllerServiceLookupSignatures()); |
| 113 | |
| 114 | if (context_instance_ != nullptr) { |
| 115 | java_servicer_->attach()->DeleteGlobalRef(context_instance_); |
| 116 | } else { |
| 117 | init_context_.identifier_ = getUUIDStr(); |
| 118 | init_context_.lookup_ = &csl_; |
| 119 | csl_.cs_lookup_reference_ = context; |
| 120 | |
| 121 | init_context_.lookup_ref_ = java_servicer_->newInstance("org.apache.nifi.processor.JniControllerServiceLookup"); |
| 122 | |
| 123 | java_servicer_->setReference<minifi::jni::JniControllerServiceLookup>(env, init_context_.lookup_ref_, &csl_); |
| 124 | } |
| 125 | context_instance_ = spn.newInstance(env); |
| 126 | |
| 127 | auto initializer = init.newInstance(env); |
| 128 | |
| 129 | java_servicer_->setReference<minifi::jni::JniInitializationContext>(env, initializer, &init_context_); |
| 130 | |
| 131 | ClassRegistrar::getRegistrar().registerClasses(env, java_servicer_, "org/apache/nifi/processor/JniLogger", getLoggerSignatures()); |
nothing calls this directly
no test coverage detected