[ 
https://issues.apache.org/jira/browse/NIFI-4272?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthew Clarke updated NIFI-4272:
---------------------------------
    Description: 
I am using the ReplaceText processor to take a string input (example:   
{"name":"Smith","middle":"nifi","firstname":"John"} ) and change all the filed 
names to all uppercase.

Using above input as an example, I expect output like 
{"NAME":"Smith","MIDDLE":"nifi","FIRSTNAME":"John"}
I expect I should be able to do this with ReplaceText processor; however, I see 
some unexpected behavior:

-------

Test 1:  (uses EL in the replacement value property)

Search value:  \"([a-z]+?)\":\"(.+?)\"
Replacement Value: \"*${'$1':toUpper()}*":\"$2\"
Result: {"NAME":"Smith","NAME":"nifi","NAME":"John"}

-------

Test 2:  (Does not use EL in the replacement Value property)

Search value:  \"([a-z]+?)\":\"(.+?)\"
Replacement Value: \"new$1":\"$2\"
Result: {"newname":"Smith","newmiddle":"nifi","newfirstname":"John"}

--------

As you can see if I use a NiFi expression Language statement in the Replacement 
Value property it no longer iterates as expect through the various $1 captured 
values. It repeatedly uses the EL result from the first EL evaluation in every 
iteration while $2 correctly iterates through the search values.



  was:
I am using the ReplaceText processor to take a spring input (example:   
{"name":"Smith","middle":"nifi","firstname":"John"} ) and change all the filed 
names to all uppercase.

Using above input as an example, I expect output like 
{"NAME":"Smith","MIDDLE":"nifi","FIRSTNAME":"John"}
I expect I should be able to do this with ReplaceText processor; however, I see 
some unexpected behavior:

-------

Test 1:  (uses EL in the replacement value property)

Search value:  \"([a-z]+?)\":\"(.+?)\"
Replacement Value: \"*${'$1':toUpper()}*":\"$2\"
Result: {"NAME":"Smith","NAME":"nifi","NAME":"John"}

-------

Test 2:  (Does not use EL in the replacement Value property)

Search value:  \"([a-z]+?)\":\"(.+?)\"
Replacement Value: \"new$1":\"$2\"
Result: {"newname":"Smith","newmiddle":"nifi","newfirstname":"John"}

--------

As you can see if I use a NiFi expression Language statement in the Replacement 
Value property it no longer iterates as expect through the various $1 captured 
values. It repeatedly uses the EL result from the first EL evaluation in every 
iteration while $2 correctly iterates through the search values.




> ReplaceText processor does not properly iterate multiple replacement values 
> when EL is used
> -------------------------------------------------------------------------------------------
>
>                 Key: NIFI-4272
>                 URL: https://issues.apache.org/jira/browse/NIFI-4272
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>    Affects Versions: 1.1.0, 1.2.0, 1.3.0
>            Reporter: Matthew Clarke
>
> I am using the ReplaceText processor to take a string input (example:   
> {"name":"Smith","middle":"nifi","firstname":"John"} ) and change all the 
> filed names to all uppercase.
> Using above input as an example, I expect output like 
> {"NAME":"Smith","MIDDLE":"nifi","FIRSTNAME":"John"}
> I expect I should be able to do this with ReplaceText processor; however, I 
> see some unexpected behavior:
> -------
> Test 1:  (uses EL in the replacement value property)
> Search value:  \"([a-z]+?)\":\"(.+?)\"
> Replacement Value: \"*${'$1':toUpper()}*":\"$2\"
> Result: {"NAME":"Smith","NAME":"nifi","NAME":"John"}
> -------
> Test 2:  (Does not use EL in the replacement Value property)
> Search value:  \"([a-z]+?)\":\"(.+?)\"
> Replacement Value: \"new$1":\"$2\"
> Result: {"newname":"Smith","newmiddle":"nifi","newfirstname":"John"}
> --------
> As you can see if I use a NiFi expression Language statement in the 
> Replacement Value property it no longer iterates as expect through the 
> various $1 captured values. It repeatedly uses the EL result from the first 
> EL evaluation in every iteration while $2 correctly iterates through the 
> search values.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to