Repository: nifi
Updated Branches:
  refs/heads/master 8e10f0bd5 -> 63d4bba5a


NIFI-5047 Fixed a bug in PutMongo that prevented it from working if the mode is 
insert and the query/query key are not set.

Signed-off-by: Pierre Villard <pierre.villard...@gmail.com>

This closes #2609.


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/63d4bba5
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/63d4bba5
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/63d4bba5

Branch: refs/heads/master
Commit: 63d4bba5a41d4eed40fb3324f124ba02e196d28c
Parents: 8e10f0b
Author: Mike Thomsen <mikerthom...@gmail.com>
Authored: Fri Apr 6 08:34:08 2018 -0400
Committer: Pierre Villard <pierre.villard...@gmail.com>
Committed: Fri Apr 6 21:36:30 2018 +0200

----------------------------------------------------------------------
 .../nifi/processors/mongodb/PutMongo.java       |  4 ++
 .../nifi/processors/mongodb/PutMongoIT.java     |  2 +
 .../nifi/processors/mongodb/PutMongoTest.java   | 73 ++++++++++++++++++++
 3 files changed, 79 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/63d4bba5/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java
----------------------------------------------------------------------
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 60eb0d5..e52fd36 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
@@ -155,6 +155,10 @@ public class PutMongo extends AbstractMongoProcessor {
     protected Collection<ValidationResult> customValidate(final 
ValidationContext validationContext) {
         List<ValidationResult> problems = new ArrayList<>();
 
+        if 
(validationContext.getProperty(MODE).getValue().equals(MODE_INSERT)) {
+            return problems;
+        }
+
         final boolean queryKey = 
validationContext.getProperty(UPDATE_QUERY_KEY).isSet();
         final boolean query    = 
validationContext.getProperty(UPDATE_QUERY).isSet();
 

http://git-wip-us.apache.org/repos/asf/nifi/blob/63d4bba5/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java
 
b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java
index 6c14c06..6ceff7b 100644
--- 
a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java
+++ 
b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java
@@ -104,6 +104,7 @@ public class PutMongoIT extends MongoWriteTestBase {
     @Test
     public void testQueryAndUpdateKey() {
         TestRunner runner = init(PutMongo.class);
+        runner.setProperty(PutMongo.MODE, PutMongo.MODE_UPDATE);
         runner.setProperty(PutMongo.UPDATE_QUERY_KEY, "_id");
         runner.setProperty(PutMongo.UPDATE_QUERY, "{}");
         runner.assertNotValid();
@@ -112,6 +113,7 @@ public class PutMongoIT extends MongoWriteTestBase {
     @Test
     public void testNoQueryAndNoUpdateKey() {
         TestRunner runner = init(PutMongo.class);
+        runner.setProperty(PutMongo.MODE, PutMongo.MODE_UPDATE);
         runner.removeProperty(PutMongo.UPDATE_QUERY);
         runner.setProperty(PutMongo.UPDATE_QUERY_KEY, "");
         runner.assertNotValid();

http://git-wip-us.apache.org/repos/asf/nifi/blob/63d4bba5/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoTest.java
 
b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoTest.java
new file mode 100644
index 0000000..10e2922
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoTest.java
@@ -0,0 +1,73 @@
+/*
+ * 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.mongodb;
+
+import org.apache.nifi.components.ValidationResult;
+import org.apache.nifi.util.MockProcessContext;
+import org.apache.nifi.util.TestRunner;
+import org.apache.nifi.util.TestRunners;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+public class PutMongoTest {
+
+    /*
+     * Corresponds to NIFI-5047
+     */
+    @Test
+    public void testQueryKeyValidation() {
+        TestRunner runner = TestRunners.newTestRunner(PutMongo.class);
+        runner.setProperty(PutMongo.URI, "mongodb://localhost:27017");
+        runner.setProperty(PutMongo.DATABASE_NAME, "demo");
+        runner.setProperty(PutMongo.COLLECTION_NAME, "messages");
+        runner.setProperty(PutMongo.MODE, PutMongo.MODE_INSERT);
+        runner.assertValid();
+
+        runner.setProperty(PutMongo.MODE, PutMongo.MODE_UPDATE);
+        runner.setProperty(PutMongo.UPDATE_QUERY, "{}");
+        runner.setProperty(PutMongo.UPDATE_QUERY_KEY, "test");
+        runner.assertNotValid();
+
+        Collection<ValidationResult> results = null;
+        if (runner.getProcessContext() instanceof MockProcessContext) {
+            results = ((MockProcessContext) 
runner.getProcessContext()).validate();
+        }
+        Assert.assertNotNull(results);
+        Assert.assertEquals(1, results.size());
+        Iterator<ValidationResult> it = results.iterator();
+        Assert.assertTrue(it.next().toString().endsWith("Both update query key 
and update query cannot be set at the same time."));
+
+        runner.removeProperty(PutMongo.UPDATE_QUERY);
+        runner.removeProperty(PutMongo.UPDATE_QUERY_KEY);
+
+        runner.assertNotValid();
+
+        results = null;
+        if (runner.getProcessContext() instanceof MockProcessContext) {
+            results = ((MockProcessContext) 
runner.getProcessContext()).validate();
+        }
+
+        Assert.assertNotNull(results);
+        Assert.assertEquals(1, results.size());
+        it = results.iterator();
+        Assert.assertTrue(it.next().toString().endsWith("Either the update 
query key or the update query field must be set."));
+    }
+}

Reply via email to