Moving the JsonPath Validator to the JsonPathUtil class so that it can be reused by other processors.
Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/5a81f19b Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/5a81f19b Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/5a81f19b Branch: refs/heads/NIFI-360 Commit: 5a81f19b25bc073ec1089c115b6e6fcf01056f91 Parents: 0a19ada Author: Aldrin Piri <aldrinp...@gmail.com> Authored: Tue Feb 17 09:44:30 2015 -0500 Committer: Aldrin Piri <aldrinp...@gmail.com> Committed: Tue Feb 17 09:44:30 2015 -0500 ---------------------------------------------------------------------- .../processors/standard/EvaluateJsonPath.java | 21 +++------- .../processors/standard/util/JsonPathUtils.java | 44 ++++++++++++++++++++ 2 files changed, 50 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/5a81f19b/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 fe89635..05d31da 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 @@ -16,7 +16,10 @@ */ package org.apache.nifi.processors.standard; -import com.jayway.jsonpath.*; +import com.jayway.jsonpath.Configuration; +import com.jayway.jsonpath.DocumentContext; +import com.jayway.jsonpath.JsonPath; +import com.jayway.jsonpath.PathNotFoundException; import com.jayway.jsonpath.spi.json.JsonProvider; import net.minidev.json.JSONValue; import org.apache.nifi.annotation.behavior.EventDriven; @@ -27,13 +30,13 @@ import org.apache.nifi.annotation.documentation.Tags; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.components.ValidationContext; import org.apache.nifi.components.ValidationResult; -import org.apache.nifi.components.Validator; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.*; import org.apache.nifi.processor.exception.ProcessException; import org.apache.nifi.processor.io.InputStreamCallback; import org.apache.nifi.processor.io.OutputStreamCallback; +import org.apache.nifi.processors.standard.util.JsonPathUtils; import org.apache.nifi.stream.io.BufferedInputStream; import org.apache.nifi.stream.io.BufferedOutputStream; import org.apache.nifi.util.BooleanHolder; @@ -147,7 +150,7 @@ public class EvaluateJsonPath extends AbstractProcessor { return new PropertyDescriptor.Builder() .name(propertyDescriptorName) .expressionLanguageSupported(false) - .addValidator(new JsonPathValidator()) + .addValidator(JsonPathUtils.JSON_PATH_VALIDATOR) .required(false) .dynamic(true) .build(); @@ -278,17 +281,5 @@ public class EvaluateJsonPath extends AbstractProcessor { return (obj instanceof String); } - private static class JsonPathValidator implements Validator { - @Override - public ValidationResult validate(String subject, String input, ValidationContext context) { - String error = null; - try { - JsonPath compile = JsonPath.compile(input); - } catch (InvalidPathException ipe) { - error = ipe.toString(); - } - return new ValidationResult.Builder().valid(error == null).explanation(error).build(); - } - } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/5a81f19b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JsonPathUtils.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JsonPathUtils.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JsonPathUtils.java new file mode 100644 index 0000000..ecd2ad0 --- /dev/null +++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JsonPathUtils.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nifi.processors.standard.util; + +import com.jayway.jsonpath.InvalidPathException; +import com.jayway.jsonpath.JsonPath; +import org.apache.nifi.components.ValidationContext; +import org.apache.nifi.components.ValidationResult; +import org.apache.nifi.components.Validator; + +/** + * Provides utilities for interacting with JsonPath expressions and results + * + * @see <a href="https://github.com/jayway/JsonPath">https://github.com/jayway/JsonPath</a> + */ +public class JsonPathUtils { + + public static final Validator JSON_PATH_VALIDATOR = new Validator() { + @Override + public ValidationResult validate(final String subject, final String input, final ValidationContext context) { + String error = null; + try { + JsonPath compile = JsonPath.compile(input); + } catch (InvalidPathException ipe) { + error = ipe.toString(); + } + return new ValidationResult.Builder().valid(error == null).explanation(error).build(); + } + }; +}