Adding an auto return type for EvaluateJsonPath to match the semantics of the EvaluateXPath processor.
Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/627bd91f Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/627bd91f Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/627bd91f Branch: refs/heads/NIFI-360 Commit: 627bd91fa719748b850b6c610a89b44be3e6f35e Parents: 1a74621 Author: Aldrin Piri <aldrinp...@gmail.com> Authored: Tue Feb 17 16:15:33 2015 -0500 Committer: Aldrin Piri <aldrinp...@gmail.com> Committed: Tue Feb 17 16:15:33 2015 -0500 ---------------------------------------------------------------------- .../apache/nifi/processors/standard/EvaluateJsonPath.java | 10 +++++++--- .../nifi/processors/standard/TestEvaluateJsonPath.java | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/627bd91f/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateJsonPath.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateJsonPath.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateJsonPath.java index 8cdf1a2..093454d 100644 --- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateJsonPath.java +++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateJsonPath.java @@ -61,6 +61,7 @@ public class EvaluateJsonPath extends AbstractProcessor { public static final String DESTINATION_ATTRIBUTE = "flowfile-attribute"; public static final String DESTINATION_CONTENT = "flowfile-content"; + public static final String RETURN_TYPE_AUTO = "auto-detect"; public static final String RETURN_TYPE_JSON = "json"; public static final String RETURN_TYPE_SCALAR = "scalar"; @@ -76,8 +77,8 @@ public class EvaluateJsonPath extends AbstractProcessor { .name("Return Type") .description("Indicates the desired return type of the JSON Path expressions. Selecting 'auto-detect' will set the return type to 'json' for a Destination of 'flowfile-content', and 'string' for a Destination of 'flowfile-attribute'.") .required(true) - .allowableValues(RETURN_TYPE_JSON, RETURN_TYPE_SCALAR) - .defaultValue(RETURN_TYPE_JSON) + .allowableValues(RETURN_TYPE_AUTO, RETURN_TYPE_JSON, RETURN_TYPE_SCALAR) + .defaultValue(RETURN_TYPE_AUTO) .build(); public static final Relationship REL_MATCH = new Relationship.Builder().name("matched").description("FlowFiles are routed to this relationship when the JsonPath is successfully evaluated and the FlowFile is modified as a result").build(); @@ -168,7 +169,10 @@ public class EvaluateJsonPath extends AbstractProcessor { } final String destination = processContext.getProperty(DESTINATION).getValue(); - final String returnType = processContext.getProperty(RETURN_TYPE).getValue(); + String returnType = processContext.getProperty(RETURN_TYPE).getValue(); + if (returnType.equals(RETURN_TYPE_AUTO)) { + returnType = destination.equals(DESTINATION_CONTENT) ? RETURN_TYPE_JSON : RETURN_TYPE_SCALAR; + } flowFileLoop: for (FlowFile flowFile : flowFiles) { http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/627bd91f/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 b7b5103..c5ff814 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 @@ -100,6 +100,7 @@ public class TestEvaluateJsonPath { public void testExtractPath_destinationAttributes_twoPaths() 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); String jsonPathIdAttrKey = "evaluatejson.id"; String jsonPathNameAttrKey = "evaluatejson.name";