[ 
https://issues.apache.org/jira/browse/MINIFI-275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15993167#comment-15993167
 ] 

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_r114137644
  
    --- 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 --
    
    Why/how do we need this? operator[] or YamlNode throws an InvalidNode. Do 
you catch this? I did not see that. 


> 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)

Reply via email to