Joe Skora created NIFI-2752:
-------------------------------

             Summary: Correct ReplaceText default pattern and unit tests
                 Key: NIFI-2752
                 URL: https://issues.apache.org/jira/browse/NIFI-2752
             Project: Apache NiFi
          Issue Type: Bug
          Components: Core Framework
    Affects Versions: 1.1.0, 0.8.0, 0.7.1
            Reporter: Joe Skora
            Assignee: Joe Skora


[{{ReplaceText.DEFAULT_REGEX}}|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#L87]
 is defined as "(?s:\^.\*$)", which is valid PCRE but must be expressed as 
"(?s)(\^.\*$)" in Java.

The Java [Pattern class|https://docs.oracle.com/javase/8/docs/api/index.html] 
specifies that patterns like "(?idmsux-idmsux:X)" are _non-capturing_, so 
anything but the default pattern and replacement value result in empty output.  
This isn't caught by unit tests because the code short circuits if the default 
pattern and replacement are found in 
[ReplaceText.onTrigger()|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#L217].
  This hides the capture group problem from the unit tests and the default 
processor configuration, but causes the processor to produce empty output if 
using non-trivial patterns and replacements.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to