Konstantin created NIFI-5813:
--------------------------------

             Summary: ReplaceText regression: fails on mixed literal dollar 
signs and backreferences
                 Key: NIFI-5813
                 URL: https://issues.apache.org/jira/browse/NIFI-5813
             Project: Apache NiFi
          Issue Type: Bug
    Affects Versions: 1.8.0
            Reporter: Konstantin
             Fix For: 1.7.1


We've got a bug with ReplaceText when in replacement value are both the literal 
dollar signs and backreferences.

Our use case is preparing Mongo queries using the value passed in FlowFile. The 
replacement looks like this:
{code:java}
{updatedTime: {$ne: $1}}
{code}
NiFi 1.7.1 iterates through this line 
([source|https://github.com/apache/nifi/blob/rel/nifi-1.7.1/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceText.java#L709])
 and correctly replaces only "$ne", leaving "$1" untouched. NiFi 1.8.0, on the 
other hand, uses Matcher 
([source|https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceText.java#L717]),
 which escapes all and every dollar sign if it ever finds the need to escape 
one, so the backreference is treated as literal replacement, and the query 
fails.
We have to make a workaround right now by using several ReplaceText processors 
in a row, but this looks rather ugly. Hoping to see this fixed.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to