You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ad...@apache.org on 2025/08/11 14:23:50 UTC
(nifi-minifi-cpp) 05/37: Rebase fix
This is an automated email from the ASF dual-hosted git repository.
adebreceni pushed a commit to branch minifi-api-reduced
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit ff298550549ad3b864c5bd9efd97debc9e41dc6f
Author: Adam Debreceni <ad...@apache.org>
AuthorDate: Thu Mar 20 08:39:42 2025 +0100
Rebase fix
---
.../include/utils/ProcessorConfigUtils.h | 24 ++---
extension-utils/src/utils/ProcessorConfigUtils.cpp | 108 ---------------------
.../expression-language/ProcessContextExpr.cpp | 6 +-
.../tests/unit/FlowJsonTests.cpp | 2 +-
.../tests/unit/YamlConfigurationTests.cpp | 2 +-
libminifi/src/core/ProcessContext.cpp | 4 +-
libminifi/test/libtest/unit/MockClasses.h | 2 +-
.../include/minifi-cpp/core/ProcessContext.h | 4 +-
8 files changed, 22 insertions(+), 130 deletions(-)
diff --git a/extension-utils/include/utils/ProcessorConfigUtils.h b/extension-utils/include/utils/ProcessorConfigUtils.h
index 29de57eec..5f0ca845f 100644
--- a/extension-utils/include/utils/ProcessorConfigUtils.h
+++ b/extension-utils/include/utils/ProcessorConfigUtils.h
@@ -32,27 +32,27 @@
namespace org::apache::nifi::minifi::utils {
inline std::string parseProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file = nullptr) {
- return ctx.getProperty(property.name, flow_file) | orThrow(fmt::format("Expected valid value from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return ctx.getProperty(property.name, flow_file) | orThrow(fmt::format("Expected valid value from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
inline bool parseBoolProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file = nullptr) {
- return ctx.getProperty(property.name, flow_file) | andThen(parsing::parseBool) | orThrow(fmt::format("Expected parsable bool from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return ctx.getProperty(property.name, flow_file) | andThen(parsing::parseBool) | orThrow(fmt::format("Expected parsable bool from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
inline uint64_t parseU64Property(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file = nullptr) {
- return ctx.getProperty(property.name, flow_file) | andThen(parsing::parseIntegral<uint64_t>) | orThrow(fmt::format("Expected parsable uint64_t from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return ctx.getProperty(property.name, flow_file) | andThen(parsing::parseIntegral<uint64_t>) | orThrow(fmt::format("Expected parsable uint64_t from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
inline int64_t parseI64Property(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file = nullptr) {
- return ctx.getProperty(property.name, flow_file) | andThen(parsing::parseIntegral<int64_t>) | orThrow(fmt::format("Expected parsable int64_t from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return ctx.getProperty(property.name, flow_file) | andThen(parsing::parseIntegral<int64_t>) | orThrow(fmt::format("Expected parsable int64_t from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
inline std::chrono::milliseconds parseDurationProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file = nullptr) {
- return ctx.getProperty(property.name, flow_file) | andThen(parsing::parseDuration<std::chrono::milliseconds>) | orThrow(fmt::format("Expected parsable duration from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return ctx.getProperty(property.name, flow_file) | andThen(parsing::parseDuration<std::chrono::milliseconds>) | orThrow(fmt::format("Expected parsable duration from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
inline uint64_t parseDataSizeProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file = nullptr) {
- return ctx.getProperty(property.name, flow_file) | andThen(parsing::parseDataSize) | orThrow(fmt::format("Expected parsable data size from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return ctx.getProperty(property.name, flow_file) | andThen(parsing::parseDataSize) | orThrow(fmt::format("Expected parsable data size from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
inline std::optional<std::string> parseOptionalProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file = nullptr) {
@@ -61,7 +61,7 @@ inline std::optional<std::string> parseOptionalProperty(const core::ProcessConte
inline std::optional<bool> parseOptionalBoolProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file = nullptr) {
if (const auto property_str = ctx.getProperty(property.name, flow_file)) {
- return parsing::parseBool(*property_str) | utils::orThrow(fmt::format("Expected parsable bool from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return parsing::parseBool(*property_str) | utils::orThrow(fmt::format("Expected parsable bool from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
return std::nullopt;
}
@@ -71,7 +71,7 @@ inline std::optional<uint64_t> parseOptionalU64Property(const core::ProcessConte
if (property_str->empty()) {
return std::nullopt;
}
- return parsing::parseIntegral<uint64_t>(*property_str) | utils::orThrow(fmt::format("Expected parsable uint64_t from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return parsing::parseIntegral<uint64_t>(*property_str) | utils::orThrow(fmt::format("Expected parsable uint64_t from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
return std::nullopt;
@@ -82,7 +82,7 @@ inline std::optional<int64_t> parseOptionalI64Property(const core::ProcessContex
if (property_str->empty()) {
return std::nullopt;
}
- return parsing::parseIntegral<int64_t>(*property_str) | utils::orThrow(fmt::format("Expected parsable int64_t from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return parsing::parseIntegral<int64_t>(*property_str) | utils::orThrow(fmt::format("Expected parsable int64_t from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
return std::nullopt;
@@ -93,7 +93,7 @@ inline std::optional<std::chrono::milliseconds> parseOptionalDurationProperty(co
if (property_str->empty()) {
return std::nullopt;
}
- return parsing::parseDuration(*property_str) | utils::orThrow(fmt::format("Expected parsable duration from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return parsing::parseDuration(*property_str) | utils::orThrow(fmt::format("Expected parsable duration from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
return std::nullopt;
@@ -104,7 +104,7 @@ inline std::optional<uint64_t> parseOptionalDataSizeProperty(const core::Process
if (property_str->empty()) {
return std::nullopt;
}
- return parsing::parseDataSize(*property_str) | utils::orThrow(fmt::format("Expected parsable data size from \"{}::{}\"", ctx.getProcessor().getName(), property.name));
+ return parsing::parseDataSize(*property_str) | utils::orThrow(fmt::format("Expected parsable data size from \"{}::{}\"", ctx.getProcessorInfo().getName(), property.name));
}
return std::nullopt;
@@ -115,7 +115,7 @@ inline std::optional<float> parseOptionalFloatProperty(const core::ProcessContex
if (property_str->empty()) {
return std::nullopt;
}
- return parsing::parseFloat(*property_str) | utils::orThrow(fmt::format("Expected parsable float from {}::{}", ctx.getProcessor().getName(), property.name));
+ return parsing::parseFloat(*property_str) | utils::orThrow(fmt::format("Expected parsable float from {}::{}", ctx.getProcessorInfo().getName(), property.name));
}
return std::nullopt;
}
diff --git a/extension-utils/src/utils/ProcessorConfigUtils.cpp b/extension-utils/src/utils/ProcessorConfigUtils.cpp
deleted file mode 100644
index 2ba8c73cb..000000000
--- a/extension-utils/src/utils/ProcessorConfigUtils.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "utils/ProcessorConfigUtils.h"
-
-#include <string>
-
-#include "utils/expected.h"
-
-namespace org::apache::nifi::minifi::utils {
-
-std::string parseProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- return ctx.getProperty(property, flow_file) | utils::expect(fmt::format("Expected valid value from {}::{}", ctx.getProcessorInfo().getName(), property.name));
-}
-
-std::optional<std::string> parseOptionalProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- if (const auto property_str = ctx.getProperty(property, flow_file)) {
- return *property_str;
- }
- return std::nullopt;
-}
-
-std::optional<bool> parseOptionalBoolProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- if (const auto property_str = ctx.getProperty(property, flow_file)) {
- return parsing::parseBool(*property_str) | utils::expect(fmt::format("Expected parsable bool from {}::{}", ctx.getProcessorInfo().getName(), property.name));
- }
- return std::nullopt;
-}
-
-bool parseBoolProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- return ctx.getProperty(property, flow_file) | utils::andThen(parsing::parseBool) | utils::expect(fmt::format("Expected parsable bool from {}::{}", ctx.getProcessorInfo().getName(), property.name));
-}
-
-std::optional<uint64_t> parseOptionalU64Property(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- if (const auto property_str = ctx.getProperty(property, flow_file)) {
- if (property_str->empty()) {
- return std::nullopt;
- }
- return parsing::parseIntegral<uint64_t>(*property_str) | utils::expect(fmt::format("Expected parsable uint64_t from {}::{}", ctx.getProcessorInfo().getName(), property.name));
- }
-
- return std::nullopt;
-}
-
-uint64_t parseU64Property(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- return ctx.getProperty(property, flow_file) | utils::andThen(parsing::parseIntegral<uint64_t>) | utils::expect(fmt::format("Expected parsable uint64_t from {}::{}", ctx.getProcessorInfo().getName(), property.name));
-}
-
-std::optional<int64_t> parseOptionalI64Property(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- if (const auto property_str = ctx.getProperty(property, flow_file)) {
- if (property_str->empty()) {
- return std::nullopt;
- }
- return parsing::parseIntegral<int64_t>(*property_str) | utils::expect(fmt::format("Expected parsable int64_t from {}::{}", ctx.getProcessorInfo().getName(), property.name));
- }
-
- return std::nullopt;
-}
-
-int64_t parseI64Property(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- return ctx.getProperty(property, flow_file) | utils::andThen(parsing::parseIntegral<int64_t>) | utils::expect(fmt::format("Expected parsable int64_t from {}::{}", ctx.getProcessorInfo().getName(), property.name));
-}
-
-std::optional<std::chrono::milliseconds> parseOptionalMsProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- if (const auto property_str = ctx.getProperty(property, flow_file)) {
- if (property_str->empty()) {
- return std::nullopt;
- }
- return parsing::parseDuration(*property_str) | utils::expect(fmt::format("Expected parsable duration from {}::{}", ctx.getProcessorInfo().getName(), property.name));
- }
-
- return std::nullopt;
-}
-
-std::chrono::milliseconds parseMsProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- return ctx.getProperty(property, flow_file) | utils::andThen(parsing::parseDuration<std::chrono::milliseconds>) | utils::expect(fmt::format("Expected parsable duration from {}::{}", ctx.getProcessorInfo().getName(), property.name));
-}
-
-std::optional<uint64_t> parseOptionalDataSizeProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- if (const auto property_str = ctx.getProperty(property, flow_file)) {
- if (property_str->empty()) {
- return std::nullopt;
- }
- return parsing::parseDataSize(*property_str) | utils::expect(fmt::format("Expected parsable data size from {}::{}", ctx.getProcessorInfo().getName(), property.name));
- }
-
- return std::nullopt;
-}
-
-uint64_t parseDataSizeProperty(const core::ProcessContext& ctx, const core::PropertyReference& property, const core::FlowFile* flow_file) {
- return ctx.getProperty(property, flow_file) | utils::andThen(parsing::parseDataSize) | utils::expect(fmt::format("Expected parsable data size from {}::{}", ctx.getProcessorInfo().getName(), property.name));
-}
-
-
-} // namespace org::apache::nifi::minifi::utils
diff --git a/extensions/expression-language/ProcessContextExpr.cpp b/extensions/expression-language/ProcessContextExpr.cpp
index 04deec7f6..fb917045e 100644
--- a/extensions/expression-language/ProcessContextExpr.cpp
+++ b/extensions/expression-language/ProcessContextExpr.cpp
@@ -26,12 +26,12 @@
namespace org::apache::nifi::minifi::core {
nonstd::expected<std::string, std::error_code> ProcessContextExpr::getProperty(const std::string_view name, const FlowFile* flow_file) const {
- const auto property = getProcessorInfo().getPropertyReference(name);
+ const auto property = getProcessorInfo().getSupportedProperty(name);
if (!property) {
return nonstd::make_unexpected(PropertyErrorCode::NotSupportedProperty);
}
- if (!property->supports_expression_language) {
+ if (!property->supportsExpressionLanguage()) {
return ProcessContextImpl::getProperty(name, flow_file);
}
if (!cached_expressions_.contains(name)) {
@@ -41,7 +41,7 @@ nonstd::expected<std::string, std::error_code> ProcessContextExpr::getProperty(c
}
expression::Parameters p(this, flow_file);
auto result = cached_expressions_[std::string{name}](p).asString();
- if (!property->validator->validate(result)) {
+ if (!property->getValidator().validate(result)) {
return nonstd::make_unexpected(PropertyErrorCode::ValidationFailed);
}
return result;
diff --git a/extensions/standard-processors/tests/unit/FlowJsonTests.cpp b/extensions/standard-processors/tests/unit/FlowJsonTests.cpp
index c36dc6664..05cccb361 100644
--- a/extensions/standard-processors/tests/unit/FlowJsonTests.cpp
+++ b/extensions/standard-processors/tests/unit/FlowJsonTests.cpp
@@ -1532,7 +1532,7 @@ TEST_CASE("Parameter providers can be used for parameter values") {
std::unique_ptr<core::ProcessGroup> flow = config.getRootFromPayload(CONFIG_JSON);
REQUIRE(flow);
- auto* proc = dynamic_cast<core::ProcessorImpl*>(flow->findProcessorByName("MyProcessor"));
+ auto* proc = flow->findProcessorByName("MyProcessor");
REQUIRE(proc);
auto values = proc->getAllDynamicPropertyValues("My Dynamic Property Sequence");
CHECK((*values)[0] == "value2");
diff --git a/extensions/standard-processors/tests/unit/YamlConfigurationTests.cpp b/extensions/standard-processors/tests/unit/YamlConfigurationTests.cpp
index 21137ad17..53c6118c3 100644
--- a/extensions/standard-processors/tests/unit/YamlConfigurationTests.cpp
+++ b/extensions/standard-processors/tests/unit/YamlConfigurationTests.cpp
@@ -2150,7 +2150,7 @@ Parameter Context Name: dummycontext
std::unique_ptr<core::ProcessGroup> flow = yaml_config.getRootFromPayload(TEST_CONFIG_YAML);
REQUIRE(flow);
- auto* proc = dynamic_cast<core::ProcessorImpl*>(flow->findProcessorByName("DummyProcessor"));
+ auto* proc = flow->findProcessorByName("DummyProcessor");
REQUIRE(proc);
auto values = proc->getAllDynamicPropertyValues("My Dynamic Property Sequence");
CHECK((*values)[0] == "value2");
diff --git a/libminifi/src/core/ProcessContext.cpp b/libminifi/src/core/ProcessContext.cpp
index 39e993108..dd9d55099 100644
--- a/libminifi/src/core/ProcessContext.cpp
+++ b/libminifi/src/core/ProcessContext.cpp
@@ -29,8 +29,8 @@ class StandardProcessorInfo : public ProcessorInfo {
std::string getName() const override {return proc_.getName();}
utils::Identifier getUUID() const override {return proc_.getUUID();}
std::shared_ptr<state::FlowIdentifier> getFlowIdentifier() const override {return proc_.getFlowIdentifier();}
- std::map<std::string, core::Property> getSupportedProperties() const override {return proc_.getSupportedProperties();}
- nonstd::expected<PropertyReference, std::error_code> getPropertyReference(std::string_view name) const override {return proc_.getPropertyReference(name);}
+ std::map<std::string, core::Property, std::less<>> getSupportedProperties() const override {return proc_.getSupportedProperties();}
+ nonstd::expected<Property, std::error_code> getSupportedProperty(std::string_view name) const override {return proc_.getSupportedProperty(name);}
private:
Processor& proc_;
diff --git a/libminifi/test/libtest/unit/MockClasses.h b/libminifi/test/libtest/unit/MockClasses.h
index 77c63e5ba..bb55e7a30 100644
--- a/libminifi/test/libtest/unit/MockClasses.h
+++ b/libminifi/test/libtest/unit/MockClasses.h
@@ -125,7 +125,7 @@ class MockProcessor : public minifi::core::ProcessorImpl {
// and verify that we can execute it.
}
- bool in_sub_process_group = context.getProperty("InSubProcessGroup") | minifi::utils::andThen(minifi::parsing::parseBool) | minifi::utils::expect("");
+ bool in_sub_process_group = context.getProperty("InSubProcessGroup") | minifi::utils::andThen(minifi::parsing::parseBool) | minifi::utils::orThrow("");
auto sub_service = context.getControllerService("SubMockController", getUUID());
if (in_sub_process_group) {
REQUIRE(nullptr != sub_service);
diff --git a/minifi-api/include/minifi-cpp/core/ProcessContext.h b/minifi-api/include/minifi-cpp/core/ProcessContext.h
index 629d06c28..f4f963e1d 100644
--- a/minifi-api/include/minifi-cpp/core/ProcessContext.h
+++ b/minifi-api/include/minifi-cpp/core/ProcessContext.h
@@ -42,8 +42,8 @@ class ProcessorInfo {
virtual std::string getName() const = 0;
virtual utils::Identifier getUUID() const = 0;
virtual std::shared_ptr<state::FlowIdentifier> getFlowIdentifier() const = 0;
- virtual std::map<std::string, core::Property> getSupportedProperties() const = 0;
- virtual nonstd::expected<PropertyReference, std::error_code> getPropertyReference(std::string_view name) const = 0;
+ virtual std::map<std::string, core::Property, std::less<>> getSupportedProperties() const = 0;
+ virtual nonstd::expected<Property, std::error_code> getSupportedProperty(std::string_view name) const = 0;
virtual ~ProcessorInfo() = default;
};