[ https://issues.apache.org/jira/browse/MINIFI-275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15993170#comment-15993170 ]
ASF GitHub Bot commented on MINIFI-275: --------------------------------------- Github user phrocker commented on a diff in the pull request: https://github.com/apache/nifi-minifi-cpp/pull/85#discussion_r114137974 --- Diff: libminifi/src/core/yaml/YamlConfiguration.cpp --- @@ -538,14 +561,62 @@ void YamlConfiguration::parsePropertiesNodeYaml( std::string rawValueString = propertyValueNode.as<std::string>(); if (!processor->setProperty(propertyName, rawValueString)) { logger_->log_warn( - "Received property %s with value %s but is not one of the properties for %s", - propertyName.c_str(), rawValueString.c_str(), - processor->getName().c_str()); + "Received property %s with value %s but it is not one of the properties for %s", + propertyName, + rawValueString, + processor->getName()); } } } } +std::string YamlConfiguration::getOrGenerateId( + YAML::Node *yamlNode, + std::string idField) { + std::string id; + YAML::Node node = yamlNode->as<YAML::Node>(); + + if (node[idField]) { + if (YAML::NodeType::Scalar == node[idField].Type()) { + id = node[idField].as<std::string>(); + } else { + throw std::invalid_argument( + "getOrGenerateId: idField is expected to reference YAML::Node " + "of YAML::NodeType::Scalar."); + } + } else { + uuid_t uuid; + uuid_generate(uuid); + char uuid_str[37]; + uuid_unparse(uuid, uuid_str); + id = uuid_str; + logger_->log_debug("Generating random ID: id => [%s]", id); + } + return id; +} + +void YamlConfiguration::checkRequiredField( --- End diff -- Perhaps I should rephrase this to say that we can also get an InvalidNode exception. I think this occurs when the node exists check occurs, and when the current node isn't valid. > Configuration without IDs for components causes exceptions > ---------------------------------------------------------- > > Key: MINIFI-275 > URL: https://issues.apache.org/jira/browse/MINIFI-275 > Project: Apache NiFi MiNiFi > Issue Type: Bug > Components: C++, Processing Configuration > Reporter: Aldrin Piri > Assignee: Kevin Doran > Priority: Blocker > Fix For: cpp-0.2.0 > > Attachments: config.TEST.yml > > > One of the changes to how components are handled in C++ introduced a defect > into the original construct over the version 1 schema of the YAML. > The absence of this ID causes a YAML exception. > We should provide handling to support configurations how they were created > originally, possibly providing a default/generated ID where one isn't > specified, and start laying the foundation for versioned schemas as provided > in our Java implementation. -- This message was sent by Atlassian JIRA (v6.3.15#6346)