[
https://issues.apache.org/jira/browse/MINIFI-294?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15996727#comment-15996727
]
ASF GitHub Bot commented on MINIFI-294:
---------------------------------------
Github user kevdoran commented on a diff in the pull request:
https://github.com/apache/nifi-minifi-cpp/pull/90#discussion_r114773178
--- Diff: libminifi/src/core/yaml/YamlConfiguration.cpp ---
@@ -417,29 +405,27 @@ void YamlConfiguration::parseConnectionYaml(
// Configure connection source
- auto rawRelationship = connectionNode["source relationship name"]
- .as<std::string>();
+ checkRequiredField(&connectionNode, "source relationship name",
CONFIG_YAML_CONNECTIONS_KEY);
+ auto rawRelationship = connectionNode["source relationship
name"].as<std::string>();
core::Relationship relationship(rawRelationship, "");
- logger_->log_debug(
- "parseConnection: relationship => [%s]", rawRelationship);
+ logger_->log_debug("parseConnection: relationship => [%s]",
rawRelationship);
if (connection) {
connection->setRelationship(relationship);
}
uuid_t srcUUID;
- std::string connectionSrcProcName = connectionNode["source name"]
- .as<std::string>();
+
if (connectionNode["source id"]) {
- std::string connectionSrcProcId = connectionNode["source id"]
- .as<std::string>();
+ std::string connectionSrcProcId = connectionNode["source
id"].as<std::string>();
uuid_parse(connectionSrcProcId.c_str(), srcUUID);
} else {
// if we don't have a source id, try harder to resolve the
source processor.
// config schema v2 will make this unnecessary
+ checkRequiredField(&connectionNode, "source name",
CONFIG_YAML_CONNECTIONS_KEY);
--- End diff --
Good idea. I will add some debug output regarding how the source and
destination processors are resolved. I could see there being some confusion if,
for instance, both name and id fields are provided.
> Better handling of required vs. optional fields in config schema v1
> -------------------------------------------------------------------
>
> Key: MINIFI-294
> URL: https://issues.apache.org/jira/browse/MINIFI-294
> Project: Apache NiFi MiNiFi
> Issue Type: Bug
> Components: C++, Documentation, Processing Configuration
> Reporter: Kevin Doran
> Assignee: Kevin Doran
> Priority: Critical
> Fix For: cpp-0.2.0
>
>
> This is a followup task to MINIFI-275. While the scope of MINIFI-275 was
> minifi-cpp processing of components without id fields, which are optional in
> config schema v1, this ticket covers all fields for all component types,
> either doing string checks for required fields (with useful error messages if
> absent) or graceful handling of missing optional fields.
> The Config Schema V1 in the minifi-java codebase will be used as a guide for
> which fields to treat as required and which to treat as optional. [~aldrin] -
> please confirm that is the correct assumption for minifi-cpp. The Java
> implementation can be found at [1]. Specifically, in the Java code, required
> fields are loaded using `getRequiredKeyAsType() and optional fields are
> loaded using `getOptionalKeyAsType()`
> Also in scope for this ticket is to update the config.yml examples in the
> minifi-cpp README.md file to make sure they are not missing required fields.
> During testing, it was found that one example config.yml is missing source
> name and destination name, which are required in config schema v1.
> [1]
> https://github.com/apache/nifi-minifi/tree/master/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)