lordgamez commented on code in PR #1806:
URL: https://github.com/apache/nifi-minifi-cpp/pull/1806#discussion_r1675857660


##########
libminifi/src/core/ParameterTokenParser.cpp:
##########
@@ -85,21 +86,31 @@ std::string 
ParameterTokenParser::replaceParameters(ParameterContext* parameter_
     if (!parameter_context) {
       throw ParameterException("Property references a parameter in its value, 
but no parameter context was provided.");
     }
-
     gsl_Assert(token->getName().has_value());
     auto parameter = parameter_context->getParameter(token->getName().value());
     if (!parameter.has_value()) {
       throw ParameterException("Parameter '" + token->getName().value() + "' 
not found");
     }
-    if (is_sensitive) {
-      throw ParameterException("Non-sensitive parameter '" + parameter->name + 
"' cannot be referenced in a sensitive property");
-    }
-    result.append(std::string(token->getAdditionalHashmarks(), '#') + 
parameter->value);
+    result.append(std::string(token->getAdditionalHashmarks(), '#') + 
getRawParameterValue(*parameter));
     last_end = token->getStart() + token->getSize();
   }
   result.append(input_.substr(last_end));
   return result;
 }
 
+std::string NonSensitiveParameterTokenParser::getRawParameterValue(const 
Parameter& parameter) const {
+  if (parameter.sensitive) {
+    throw ParameterException("Sensitive parameter '" + parameter.name + "' 
cannot be referenced in a non-sensitive property");
+  }
+  return parameter.value;
+}
+
+std::string SensitiveParameterTokenParser::getRawParameterValue(const 
Parameter& parameter) const {
+  if (!parameter.sensitive) {
+    throw ParameterException("Non-sensitive parameter '" + parameter.name + "' 
cannot be referenced in a sensitive property");
+  }
+  return utils::crypto::property_encryption::decrypt(parameter.value, 
sensitive_values_encryptor_);
+}

Review Comment:
   This is a restriction that is defined in NiFi: 
https://nifi.apache.org/docs/nifi-docs/html/user-guide.html#Parameters
   "Any property can be configured to reference a Parameter with the following 
conditions:
   
   - A sensitive property can only reference a Sensitive Parameter
   - A non-sensitive property can only reference a Non-Sensitive Parameter
   - Properties that reference Controller Services can not use Parameters
   - Parameters cannot be referenced in Reporting Tasks or in Management 
Controller Services"



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to