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" + } + } +}
