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";

Reply via email to