Thanks, Matt, Glad to see I was on the right track, even before your email. I think its testament to great organization and clarity of the existing code.
Cheers, Chris On 3/22/16, 12:45 PM, "Matt Burgess" <[email protected]> wrote: >Chris, > >Great to hear! For the following steps, I'm assuming it will be a >one-argument function called "jsonPath" that takes a String containing a >JSON Path expression to be evaluated on the "subject" of the function. So I >am picturing it used like: > >${ my.json.attribute:jsonPath("$.path.to.my.data") } > >To add such a function to EL, you'll likely want to do something like the >following: > >1) Add a token for the function name to the Lexer: >https://github.com/apache/nifi/blob/master/nifi-commons/nifi-expression-language/src/main/antlr3/org/apache/nifi/attribute/expression/language/antlr/AttributeExpressionLexer.g#L120 > >2) Add the token to the oneArgString rule: >https://github.com/apache/nifi/blob/master/nifi-commons/nifi-expression-language/src/main/antlr3/org/apache/nifi/attribute/expression/language/antlr/AttributeExpressionParser.g#L77 > >3) Add a JsonPathEvaluator class (or whatever its called) to the functions >package: >https://github.com/apache/nifi/tree/master/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions > >4) Add a case to Query.buildFunctionEvaluator() to create and use a new >JsonPathEvaluator: >https://github.com/apache/nifi/blob/master/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/Query.java#L1061 > >5) Add unit test(s) to TestQuery to test your function: >https://github.com/apache/nifi/blob/master/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java > >Also whatever dependencies you bring in (Jayway, e.g.) will need to be >added to the EL module's POM: >https://github.com/apache/nifi/blob/master/nifi-commons/nifi-expression-language/pom.xml. >If a parent POM has declared a version already (such as the NiFi parent POM >declaring jayway 2.0.0 at present), you may want to keep that unless you >need to override for some reason. > >Looking forward to your contribution, please let me/us know if you run into >any trouble or have any questions. > >Cheers, >Matt > > >On Tue, Mar 22, 2016 at 10:59 AM, McDermott, Chris Kevin (MSDU - >STaTS/StorefrontRemote) <[email protected]> wrote: > >> Hi folks, >> >> I’m a newbie NiFi user but long time Java developer. I’ve entered a Jira >> issue to extend the expression language to add a function to evaluate a >> Json path against the subject. Looking at the code I feel this is very >> doable, and I am up for task so I’m planning on tackling it. I’ve read the >> developers guide, etc. Please, any advice and direction is most welcome. >> >> Thanks, >> >> Chris McDermott. >>
