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

Mark Payne commented on NIFI-11627:
-----------------------------------

It does make sense to allow for a reference to be stored in a FlowFile 
attribute and then reference it in much the same way that you would when 
looking up a schema in a SchemaRegistry.

But Parameter Contexts are not the right approach. Making use of a Controller 
Service would work well. We could have a Controller Service that allows 
user-added properties where the values are JSON Schemas, and then allow 
ValidateJson to be configured with a Controller Service and take in the name of 
the schema, which would allow for Expression Language to be used. So I believe 
that would give you exactly what you're looking for, [~nwchuckster], no?

The reason that Parameter Contexts won't work here are two-fold. Firstly, you 
cannot use Expression Language within a Parameter Context because parameters' 
values are resolved before the processor ever even has access to the property 
value. So, if you were to enter  #\{${schema.name}} what would happen is that 
NiFi would resolve that to a parameter named ${schema.name} and the processor 
would be invalid, before it ever had any chance to even evaluate Expression 
Language.

Secondly, we never allow creating a String value and then evaluating it to get 
a parameter due to security concerns. There are security policies that guard 
who is allow to reference parameters, etc. and allowing dynamic creation of 
parameter names would violate the security constraints.

> Add Dynamic Schema References to ValidateJSON Processor
> -------------------------------------------------------
>
>                 Key: NIFI-11627
>                 URL: https://issues.apache.org/jira/browse/NIFI-11627
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Extensions
>    Affects Versions: 1.19.1
>            Reporter: Chuck Tilly
>            Assignee: Daniel Stieglitz
>            Priority: Major
>
> For the ValidateJSON processor, add support for flowfile attribute references 
> that will allow for a JSON schema located in the Parameter Contexts, to be 
> referenced dynamically based on a flowfile attribute. e.g. 
> {code:java}
> #{${schema.name}} {code}
>  
> The benefits of adding support for attribute references are significant.  
> Adding this capability will allow a single processor to be used for all JSON 
> schema validation.  Unfortunately, the current version of this processor 
> requires a dedicated processor for every schema, i.e. 12 schemas requires 12 
> ValidateJSON processors.  This is very laborious to construct and maintain, 
> and resource expensive.  
> ValidateJSON processor (https://issues.apache.org/jira/browse/NIFI-7392)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to