diff --git a/nifi-commons/nifi-json-utils/pom.xml b/nifi-commons/nifi-json-utils/pom.xml
new file mode 100644
index 0000000000..7ebb79a2ba
--- /dev/null
+++ b/nifi-commons/nifi-json-utils/pom.xml
@@ -0,0 +1,39 @@
+
+
+
+ 4.0.0
+
+ org.apache.nifi
+ nifi-commons
+ 1.7.0-SNAPSHOT
+
+ nifi-json-utils
+ 1.7.0-SNAPSHOT
+ jar
+
+
+ org.apache.nifi
+ nifi-api
+ 1.7.0-SNAPSHOT
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.9.4
+ compile
+
+
+
diff --git a/nifi-commons/nifi-json-utils/src/main/java/org/apache/nifi/processor/util/JsonValidator.java b/nifi-commons/nifi-json-utils/src/main/java/org/apache/nifi/processor/util/JsonValidator.java
new file mode 100644
index 0000000000..79c68d5afc
--- /dev/null
+++ b/nifi-commons/nifi-json-utils/src/main/java/org/apache/nifi/processor/util/JsonValidator.java
@@ -0,0 +1,49 @@
+/*
+ * 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.processor.util;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.nifi.components.ValidationContext;
+import org.apache.nifi.components.ValidationResult;
+import org.apache.nifi.components.Validator;
+
+import java.util.List;
+import java.util.Map;
+
+public class JsonValidator implements Validator {
+ public static final JsonValidator INSTANCE = new JsonValidator();
+
+ @Override
+ public ValidationResult validate(String subject, String input, ValidationContext context) {
+ ObjectMapper mapper = new ObjectMapper();
+ if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) {
+ return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").valid(true).build();
+ }
+
+ try {
+ Class clz = input.startsWith("[") ? List.class : Map.class;
+ mapper.readValue(input, clz);
+ } catch (Exception e) {
+ return new ValidationResult.Builder().subject(subject).input(input).valid(false)
+ .explanation(subject + " is not a valid JSON representation due to " + e.getLocalizedMessage())
+ .build();
+ }
+
+ return new ValidationResult.Builder().subject(subject).input(input).valid(true).build();
+ }
+}
diff --git a/nifi-commons/nifi-json-utils/src/test/groovy/org/apache/nifi/processor/TestStandardValidators.groovy b/nifi-commons/nifi-json-utils/src/test/groovy/org/apache/nifi/processor/TestStandardValidators.groovy
new file mode 100644
index 0000000000..c820c03dfc
--- /dev/null
+++ b/nifi-commons/nifi-json-utils/src/test/groovy/org/apache/nifi/processor/TestStandardValidators.groovy
@@ -0,0 +1,101 @@
+/*
+ * 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.processor
+
+import org.apache.nifi.components.ValidationContext
+import org.apache.nifi.components.ValidationResult
+import org.apache.nifi.components.Validator
+import org.apache.nifi.processor.util.JsonValidator
+import org.junit.Before
+import org.junit.Test
+
+import static org.junit.Assert.assertFalse
+import static org.junit.Assert.assertTrue
+import static org.mockito.Mockito.mock
+
+import static groovy.json.JsonOutput.*
+
+class TestStandardValidators {
+ final String DUMMY_JSON_PROPERTY = "JSONProperty"
+ Validator validator
+ ValidationContext context
+
+ @Before
+ void setup() {
+ validator = JsonValidator.INSTANCE
+ context = mock(ValidationContext.class)
+ }
+
+ @Test
+ void testFlat() {
+ def msg = prettyPrint(toJson([
+ Name: "Crockford, Douglas"
+ ]))
+ ValidationResult validationResult = validator.validate(DUMMY_JSON_PROPERTY, msg, context)
+ assertTrue(validationResult.isValid())
+ }
+
+ @Test
+ void testNested() {
+ def msg = prettyPrint(toJson([
+ Name: "Crockford, Douglas",
+ ContactInfo: [
+ Mobile: 987654321,
+ Email: "mrx@xyz.zyx"
+ ]
+ ]))
+ ValidationResult validationResult = validator.validate(DUMMY_JSON_PROPERTY, msg, context)
+ assertTrue(validationResult.isValid())
+ }
+
+ @Test
+ void testObjectWithArray() {
+ def msg = prettyPrint(toJson([
+ name: "Smith, John",
+ age: 30,
+ cars: [ "Ford", "BMW", "Fiat" ]
+ ]))
+ ValidationResult validationResult = validator.validate(DUMMY_JSON_PROPERTY, msg, context)
+ assertTrue(validationResult.isValid())
+ }
+
+ @Test
+ void testJSONArray() {
+ def msg = prettyPrint(toJson([
+ "one", "two", "three"
+ ]))
+ ValidationResult validationResult = validator.validate(DUMMY_JSON_PROPERTY, msg, context)
+ assertTrue(validationResult.isValid())
+ }
+
+ @Test
+ void testEmpty() {
+ // Empty JSON
+ ValidationResult validationResult = validator.validate(DUMMY_JSON_PROPERTY, "{}", context)
+ assertTrue(validationResult.isValid())
+ }
+
+ @Test
+ void testInvalidJson() {
+ // Invalid JSON
+ ValidationResult validationResult = validator.validate(DUMMY_JSON_PROPERTY, "\"Name\" : \"Smith, John\"", context)
+ assertFalse(validationResult.isValid())
+ assertTrue(validationResult.getExplanation().contains("not a valid JSON representation"))
+ validationResult = validator.validate(DUMMY_JSON_PROPERTY, "bncjbhjfjhj", context)
+ assertFalse(validationResult.isValid())
+ }
+}
diff --git a/nifi-commons/nifi-utils/pom.xml b/nifi-commons/nifi-utils/pom.xml
index 26d64aeb79..5a023b6eb1 100644
--- a/nifi-commons/nifi-utils/pom.xml
+++ b/nifi-commons/nifi-utils/pom.xml
@@ -40,10 +40,5 @@
nifi-api
1.7.0-SNAPSHOT
-
- com.google.code.gson
- gson
- 2.8.1
-
diff --git a/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/processor/util/StandardValidators.java b/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
index b1e39fa655..0ea7c17695 100644
--- a/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
+++ b/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/processor/util/StandardValidators.java
@@ -16,6 +16,15 @@
*/
package org.apache.nifi.processor.util;
+import org.apache.nifi.components.PropertyValue;
+import org.apache.nifi.components.ValidationContext;
+import org.apache.nifi.components.ValidationResult;
+import org.apache.nifi.components.Validator;
+import org.apache.nifi.expression.AttributeExpression.ResultType;
+import org.apache.nifi.flowfile.FlowFile;
+import org.apache.nifi.processor.DataUnit;
+import org.apache.nifi.util.FormatUtils;
+
import java.io.File;
import java.net.MalformedURLException;
import java.net.URI;
@@ -30,18 +39,6 @@ import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonSyntaxException;
-import org.apache.nifi.components.PropertyValue;
-import org.apache.nifi.components.ValidationContext;
-import org.apache.nifi.components.ValidationResult;
-import org.apache.nifi.components.Validator;
-import org.apache.nifi.expression.AttributeExpression.ResultType;
-import org.apache.nifi.flowfile.FlowFile;
-import org.apache.nifi.processor.DataUnit;
-import org.apache.nifi.util.FormatUtils;
-
public class StandardValidators {
//
@@ -483,25 +480,6 @@ public class StandardValidators {
public static final Validator FILE_EXISTS_VALIDATOR = new FileExistsValidator(true);
- /**
- * {@link Validator} that ensures the value is a valid JSON
- */
- public static final Validator JSON_VALIDATOR = (subject, input, context) -> {
- if (context.isExpressionLanguageSupported(subject) && context.isExpressionLanguagePresent(input)) {
- return new ValidationResult.Builder().subject(subject).input(input).explanation("Expression Language Present").valid(true).build();
- }
-
- try {
- new Gson().fromJson(input, JsonElement.class);
- } catch (JsonSyntaxException e) {
- return new ValidationResult.Builder().subject(subject).input(input).valid(false)
- .explanation(subject + " is not a valid JSON representation due to " + e.getLocalizedMessage())
- .build();
- }
-
- return new ValidationResult.Builder().subject(subject).input(input).valid(true).build();
- };
-
//
//
// FACTORY METHODS FOR VALIDATORS
diff --git a/nifi-commons/nifi-utils/src/test/java/org/apache/nifi/util/validator/TestStandardValidators.java b/nifi-commons/nifi-utils/src/test/java/org/apache/nifi/util/validator/TestStandardValidators.java
index 147ed13c25..ffebb9d863 100644
--- a/nifi-commons/nifi-utils/src/test/java/org/apache/nifi/util/validator/TestStandardValidators.java
+++ b/nifi-commons/nifi-utils/src/test/java/org/apache/nifi/util/validator/TestStandardValidators.java
@@ -16,12 +16,6 @@
*/
package org.apache.nifi.util.validator;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-
-import java.util.concurrent.TimeUnit;
-
import org.apache.nifi.components.ValidationContext;
import org.apache.nifi.components.ValidationResult;
import org.apache.nifi.components.Validator;
@@ -29,6 +23,12 @@ import org.apache.nifi.processor.util.StandardValidators;
import org.junit.Test;
import org.mockito.Mockito;
+import java.util.concurrent.TimeUnit;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+
public class TestStandardValidators {
@Test
@@ -288,42 +288,4 @@ public class TestStandardValidators {
vr = val.validate("foo", "2016-01-01T01:01:01.000Z", vc);
assertTrue(vr.isValid());
}
-
- @Test
- public void testJSONObjectValidator() {
- final Validator validator = StandardValidators.JSON_VALIDATOR;
- final ValidationContext context = mock(ValidationContext.class);
- final String DUMMY_JSON_PROPERTY = "JSONProperty";
- ValidationResult validationResult;
-
- // Flat JSON
- validationResult = validator.validate(DUMMY_JSON_PROPERTY,"{\"Name\" : \"Crockford, Douglas\"}", context);
- assertTrue(validationResult.isValid());
-
- // Nested JSON
- validationResult = validator.validate(DUMMY_JSON_PROPERTY, "{ \"Name\" : \"Crockford, Douglas\", \"ContactInfo\": { \"Mobile\" : 0987654321, \"Email\" : \"mrx@xyz.zyx\" } }", context);
- assertTrue(validationResult.isValid());
-
- // JSON object with JSON array
- validationResult = validator.validate(DUMMY_JSON_PROPERTY, "{ \"name\":\"Smith, John\", \"age\":30, \"cars\":[ \"Ford\", \"BMW\", \"Fiat\" ] } ", context);
- assertTrue(validationResult.isValid());
-
- // JSON array
- validationResult = validator.validate(DUMMY_JSON_PROPERTY, "[\"one\", \"two\", \"three\"]", context);
- assertTrue(validationResult.isValid());
-
- // JSON Primitives
- validationResult = validator.validate(DUMMY_JSON_PROPERTY, "bncjbhjfjhj", context);
- assertTrue(validationResult.isValid());
-
- // Empty JSON
- validationResult = validator.validate(DUMMY_JSON_PROPERTY, "{}", context);
- assertTrue(validationResult.isValid());
-
- // Invalid JSON
- validationResult = validator.validate(DUMMY_JSON_PROPERTY, "\"Name\" : \"Smith, John\"", context);
- assertFalse(validationResult.isValid());
- assertTrue(validationResult.getExplanation().contains("not a valid JSON representation"));
-
- }
}
diff --git a/nifi-commons/pom.xml b/nifi-commons/pom.xml
index 41d5076aef..f652f5653c 100644
--- a/nifi-commons/pom.xml
+++ b/nifi-commons/pom.xml
@@ -31,6 +31,7 @@
nifi-security-utils
nifi-socket-utils
nifi-utils
+ nifi-json-utils
nifi-web-utils
nifi-write-ahead-log
nifi-site-to-site-client
diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-restapi-processors/pom.xml b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-restapi-processors/pom.xml
index 09cb0eaefc..5abe3b3ba1 100644
--- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-restapi-processors/pom.xml
+++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-restapi-processors/pom.xml
@@ -110,6 +110,12 @@ language governing permissions and limitations under the License. -->
1.7.0-SNAPSHOT
provided
+
+ org.apache.nifi
+ nifi-json-utils
+ 1.7.0-SNAPSHOT
+ compile
+
diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-restapi-processors/src/main/java/org/apache/nifi/processors/elasticsearch/ElasticSearchRestProcessor.java b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-restapi-processors/src/main/java/org/apache/nifi/processors/elasticsearch/ElasticSearchRestProcessor.java
index 43df99126e..ccf04cade2 100644
--- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-restapi-processors/src/main/java/org/apache/nifi/processors/elasticsearch/ElasticSearchRestProcessor.java
+++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-restapi-processors/src/main/java/org/apache/nifi/processors/elasticsearch/ElasticSearchRestProcessor.java
@@ -24,6 +24,7 @@ import org.apache.nifi.expression.ExpressionLanguageScope;
import org.apache.nifi.flowfile.FlowFile;
import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.ProcessSession;
+import org.apache.nifi.processor.util.JsonValidator;
import org.apache.nifi.processor.util.StandardValidators;
import java.io.ByteArrayOutputStream;
@@ -55,7 +56,7 @@ public interface ElasticSearchRestProcessor {
"If this parameter is not set, the query will be read from the flowfile content.")
.required(false)
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
- .addValidator(StandardValidators.JSON_VALIDATOR)
+ .addValidator(JsonValidator.INSTANCE)
.build();
PropertyDescriptor QUERY_ATTRIBUTE = new PropertyDescriptor.Builder()
.name("el-query-attribute")
diff --git a/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/pom.xml b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/pom.xml
index 8469e2947a..394464de3c 100644
--- a/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/pom.xml
+++ b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/pom.xml
@@ -80,6 +80,12 @@
json
1.8
+
+ org.apache.nifi
+ nifi-json-utils
+ 1.7.0-SNAPSHOT
+ compile
+
diff --git a/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/credentials/factory/CredentialPropertyDescriptors.java b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/credentials/factory/CredentialPropertyDescriptors.java
index 2531ab072b..7fde8ad792 100644
--- a/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/credentials/factory/CredentialPropertyDescriptors.java
+++ b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/credentials/factory/CredentialPropertyDescriptors.java
@@ -18,6 +18,7 @@ package org.apache.nifi.processors.gcp.credentials.factory;
import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.expression.ExpressionLanguageScope;
+import org.apache.nifi.processor.util.JsonValidator;
import org.apache.nifi.processor.util.StandardValidators;
/**
@@ -83,7 +84,7 @@ public final class CredentialPropertyDescriptors {
.displayName("Service Account JSON")
.expressionLanguageSupported(ExpressionLanguageScope.VARIABLE_REGISTRY)
.required(false)
- .addValidator(StandardValidators.JSON_VALIDATOR)
+ .addValidator(JsonValidator.INSTANCE)
.description("The raw JSON containing a Service Account keyfile.")
.sensitive(true)
.build();
diff --git a/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-services-api/pom.xml b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-services-api/pom.xml
index 6e7a526276..6a3f44ba79 100644
--- a/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-services-api/pom.xml
+++ b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-services-api/pom.xml
@@ -45,6 +45,11 @@
com.github.stephenc.findbugs
findbugs-annotations
1.3.9-1
-
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.9.4
+
diff --git a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/pom.xml b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/pom.xml
index ebecc6595e..32420be318 100644
--- a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/pom.xml
+++ b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/pom.xml
@@ -85,5 +85,11 @@
18.0
test
+
+ org.apache.nifi
+ nifi-json-utils
+ 1.7.0-SNAPSHOT
+ compile
+
diff --git a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/GetMongo.java b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/GetMongo.java
index 3cf80ad9fa..10eb0c723a 100644
--- a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/GetMongo.java
+++ b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/GetMongo.java
@@ -38,6 +38,7 @@ import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.ProcessSession;
import org.apache.nifi.processor.Relationship;
import org.apache.nifi.processor.exception.ProcessException;
+import org.apache.nifi.processor.util.JsonValidator;
import org.apache.nifi.processor.util.StandardValidators;
import org.bson.Document;
import org.bson.json.JsonWriterSettings;
@@ -79,7 +80,7 @@ public class GetMongo extends AbstractMongoProcessor {
"that will result in a full collection fetch using a \"{}\" query.")
.required(false)
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
- .addValidator(StandardValidators.JSON_VALIDATOR)
+ .addValidator(JsonValidator.INSTANCE)
.build();
static final PropertyDescriptor PROJECTION = new PropertyDescriptor.Builder()
@@ -87,14 +88,14 @@ public class GetMongo extends AbstractMongoProcessor {
.description("The fields to be returned from the documents in the result set; must be a valid BSON document")
.required(false)
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
- .addValidator(StandardValidators.JSON_VALIDATOR)
+ .addValidator(JsonValidator.INSTANCE)
.build();
static final PropertyDescriptor SORT = new PropertyDescriptor.Builder()
.name("Sort")
.description("The fields by which to sort; must be a valid BSON document")
.required(false)
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
- .addValidator(StandardValidators.JSON_VALIDATOR)
+ .addValidator(JsonValidator.INSTANCE)
.build();
static final PropertyDescriptor LIMIT = new PropertyDescriptor.Builder()
.name("Limit")
diff --git a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java
index 839ad9e599..620ee7c273 100644
--- a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java
+++ b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java
@@ -39,6 +39,7 @@ import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.ProcessSession;
import org.apache.nifi.processor.Relationship;
import org.apache.nifi.processor.exception.ProcessException;
+import org.apache.nifi.processor.util.JsonValidator;
import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.stream.io.StreamUtils;
import org.apache.nifi.util.StringUtils;
@@ -100,7 +101,7 @@ public class PutMongo extends AbstractMongoProcessor {
.displayName("Update Query")
.description("Specify a full MongoDB query to be used for the lookup query to do an update/upsert.")
.required(false)
- .addValidator(StandardValidators.JSON_VALIDATOR)
+ .addValidator(JsonValidator.INSTANCE)
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
.build();
diff --git a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/RunMongoAggregation.java b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/RunMongoAggregation.java
index ff32039605..19969c420a 100644
--- a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/RunMongoAggregation.java
+++ b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/RunMongoAggregation.java
@@ -19,6 +19,7 @@
package org.apache.nifi.processors.mongodb;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.BasicDBObject;
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.MongoCollection;
@@ -34,10 +35,9 @@ import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.ProcessSession;
import org.apache.nifi.processor.Relationship;
import org.apache.nifi.processor.exception.ProcessException;
-import org.apache.nifi.processor.util.StandardValidators;
+import org.apache.nifi.processor.util.JsonValidator;
import org.bson.Document;
import org.bson.conversions.Bson;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.ArrayList;
@@ -88,7 +88,7 @@ public class RunMongoAggregation extends AbstractMongoProcessor {
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
.description("The aggregation query to be executed.")
.required(true)
- .addValidator(StandardValidators.JSON_VALIDATOR)
+ .addValidator(JsonValidator.INSTANCE)
.build();
static {