Repository: incubator-nifi
Updated Branches:
  refs/heads/develop 081994e11 -> 3295f7f19


NIFI-487: Changing the default JSON provider from SmartJson to Jackson to 
address issues with control characters causing documents to not get parsed 
correctly.


Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/3295f7f1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/3295f7f1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/3295f7f1

Branch: refs/heads/develop
Commit: 3295f7f193e719346fef6237aaf1a5c40767c6f7
Parents: 081994e
Author: Aldrin Piri <[email protected]>
Authored: Thu Jun 11 10:49:36 2015 -0400
Committer: Aldrin Piri <[email protected]>
Committed: Mon Jun 15 16:21:48 2015 -0400

----------------------------------------------------------------------
 .../nifi-standard-processors/pom.xml             |  8 +++++++-
 .../standard/AbstractJsonPathProcessor.java      |  5 ++---
 .../standard/TestEvaluateJsonPath.java           | 19 +++++++++++++++++++
 .../resources/TestJson/control-characters.json   |  7 +++++++
 4 files changed, 35 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/3295f7f1/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
index 0d56bbb..8cce56d 100644
--- 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
+++ 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
@@ -172,6 +172,11 @@
             <artifactId>tika-core</artifactId>
             <version>1.7</version>
         </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.4.5</version>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
@@ -195,6 +200,7 @@
                         
<exclude>src/test/resources/TestEncryptContent/text.txt.asc</exclude>
                         
<exclude>src/test/resources/TestIdentifyMimeType/1.txt</exclude>
                         
<exclude>src/test/resources/TestJson/json-sample.json</exclude>
+                        
<exclude>src/test/resources/TestJson/control-characters.json</exclude>
                         
<exclude>src/test/resources/TestMergeContent/demarcate</exclude>
                         
<exclude>src/test/resources/TestMergeContent/foot</exclude>
                         
<exclude>src/test/resources/TestMergeContent/head</exclude>
@@ -262,5 +268,5 @@
                 </configuration>
             </plugin>
         </plugins>
-    </build>    
+    </build>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/3295f7f1/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/AbstractJsonPathProcessor.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/AbstractJsonPathProcessor.java
 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/AbstractJsonPathProcessor.java
index d03240e..2f1ff43 100644
--- 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/AbstractJsonPathProcessor.java
+++ 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/AbstractJsonPathProcessor.java
@@ -19,9 +19,8 @@ package org.apache.nifi.processors.standard;
 import com.jayway.jsonpath.Configuration;
 import com.jayway.jsonpath.DocumentContext;
 import com.jayway.jsonpath.JsonPath;
+import com.jayway.jsonpath.spi.json.JacksonJsonProvider;
 import com.jayway.jsonpath.spi.json.JsonProvider;
-import com.jayway.jsonpath.spi.json.JsonSmartJsonProvider;
-import net.minidev.json.parser.JSONParser;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.ValidationContext;
 import org.apache.nifi.components.ValidationResult;
@@ -50,7 +49,7 @@ import java.util.Objects;
  */
 public abstract class AbstractJsonPathProcessor extends AbstractProcessor {
 
-    private static final Configuration STRICT_PROVIDER_CONFIGURATION = 
Configuration.builder().jsonProvider(new 
JsonSmartJsonProvider(JSONParser.MODE_RFC4627)).build();
+    private static final Configuration STRICT_PROVIDER_CONFIGURATION = 
Configuration.builder().jsonProvider(new JacksonJsonProvider()).build();
 
     private static final JsonProvider JSON_PROVIDER = 
STRICT_PROVIDER_CONFIGURATION.jsonProvider();
 

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/3295f7f1/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestEvaluateJsonPath.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestEvaluateJsonPath.java
 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestEvaluateJsonPath.java
index 69d47c8..eff8bfe 100644
--- 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestEvaluateJsonPath.java
+++ 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestEvaluateJsonPath.java
@@ -344,4 +344,23 @@ public class TestEvaluateJsonPath {
         assertEquals("Null Value", "null", nullValue);
     }
 
+    @Test
+    public void testHandleAsciiControlCharacters() throws Exception {
+        final TestRunner testRunner = TestRunners.newTestRunner(new 
EvaluateJsonPath());
+        testRunner.setProperty(EvaluateJsonPath.DESTINATION, 
EvaluateJsonPath.DESTINATION_ATTRIBUTE);
+        testRunner.setProperty(EvaluateJsonPath.RETURN_TYPE, 
EvaluateJsonPath.RETURN_TYPE_JSON);
+
+        final String jsonPathControlCharKey = 
"evaluatejson.controlcharacterpath";
+
+        testRunner.setProperty(jsonPathControlCharKey, 
"$.jinxing_json.object.property");
+
+        
testRunner.enqueue(Paths.get("src/test/resources/TestJson/control-characters.json"));
+        testRunner.run();
+
+        final Relationship expectedRel = EvaluateJsonPath.REL_MATCH;
+
+        testRunner.assertAllFlowFilesTransferred(expectedRel, 1);
+        final MockFlowFile out = 
testRunner.getFlowFilesForRelationship(expectedRel).get(0);
+        Assert.assertNotNull("Transferred flow file did not have the correct 
result for id attribute", out.getAttribute(jsonPathControlCharKey));
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/3295f7f1/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestJson/control-characters.json
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestJson/control-characters.json
 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestJson/control-characters.json
new file mode 100644
index 0000000..73bf1db
--- /dev/null
+++ 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestJson/control-characters.json
@@ -0,0 +1,7 @@
+{
+  "jinxing_json": {
+    "object": {
+      "property": "Arbitrary characters to the right          
                      more normal characters"
+    }
+  }
+}

Reply via email to