You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2022/04/27 13:53:43 UTC

[nifi] 01/02: NIFI-9944: Fixed issue with using modules in InvokeScriptedProcessor

This is an automated email from the ASF dual-hosted git repository.

mattyb149 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 4b66299cf656e3a835d9926215a847607ec2397e
Author: Matthew Burgess <ma...@apache.org>
AuthorDate: Mon Apr 25 16:15:23 2022 -0400

    NIFI-9944: Fixed issue with using modules in InvokeScriptedProcessor
---
 .../processors/script/InvokeScriptedProcessor.java    |   4 ----
 .../org/apache/nifi/script/ScriptRunnerFactory.java   |   2 +-
 .../nifi/processors/script/TestInvokeJavascript.java  |   8 ++++----
 .../src/test/resources/jar/commons-math3-3.2.jar      | Bin 0 -> 1692782 bytes
 .../src/test/resources/javascript/test_reader.js      |   4 +++-
 5 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
index 93a9984c83..8c89233d88 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
@@ -262,10 +262,6 @@ public class InvokeScriptedProcessor extends AbstractSessionFactoryProcessor {
 
             scriptNeedsReload.set(true);
             scriptRunner = null; //reset engine. This happens only when a processor is stopped, so there won't be any performance impact in run-time.
-            if (isConfigurationRestored()) {
-                // Once the configuration has been restored, each call to onPropertyModified() is due to a change made after the processor was loaded, so reload the script
-                setup();
-            }
         } else if (instance != null) {
             // If the script provides a Processor, call its onPropertyModified() method
             try {
diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptRunnerFactory.java b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptRunnerFactory.java
index 1b90851a67..6bd2fe6aa9 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptRunnerFactory.java
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptRunnerFactory.java
@@ -79,7 +79,7 @@ public class ScriptRunnerFactory {
 
         if (!"Clojure".equals(scriptEngineName)
                 && !"Groovy".equals(scriptEngineName)
-                && "ECMAScript".equals(scriptEngineName)) {
+                && !"ECMAScript".equals(scriptEngineName)) {
             return new URL[0];
         }
 
diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestInvokeJavascript.java b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestInvokeJavascript.java
index 8c4eda2cb5..c56612bd2a 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestInvokeJavascript.java
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestInvokeJavascript.java
@@ -58,7 +58,7 @@ public class TestInvokeJavascript extends BaseScriptTest {
     public void testReadFlowFileContentAndStoreInFlowFileAttribute() {
         runner.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE, "ECMAScript");
         runner.setProperty(ScriptingComponentUtils.SCRIPT_FILE, "target/test/resources/javascript/test_reader.js");
-        runner.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/javascript");
+        runner.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/jar");
 
         runner.assertValid();
         runner.enqueue("test content".getBytes(StandardCharsets.UTF_8));
@@ -86,7 +86,7 @@ public class TestInvokeJavascript extends BaseScriptTest {
 
         context.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE, "ECMAScript");
         context.setProperty(ScriptingComponentUtils.SCRIPT_FILE, "target/test/resources/javascript/test_reader.js");
-        context.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/javascript");
+        context.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/jar");
         // State Manger is unused, and a null reference is specified
         processor.customValidate(new MockValidationContext(context));
         processor.setup(context);
@@ -112,7 +112,7 @@ public class TestInvokeJavascript extends BaseScriptTest {
      * @Any error encountered while testing
      */
     @Test
-    public void testScriptDefinedRelationship() {
+    public void testScriptDefinedRelationshipWithExternalJar() {
         InvokeScriptedProcessor processor = new InvokeScriptedProcessor();
         MockProcessContext context = new MockProcessContext(processor);
         MockProcessorInitializationContext initContext = new MockProcessorInitializationContext(processor, context);
@@ -121,7 +121,7 @@ public class TestInvokeJavascript extends BaseScriptTest {
 
         context.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE, "ECMAScript");
         context.setProperty(ScriptingComponentUtils.SCRIPT_FILE, "target/test/resources/javascript/test_reader.js");
-        context.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/javascript");
+        context.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/jar");
 
         // State Manger is unused, and a null reference is specified
         processor.customValidate(new MockValidationContext(context));
diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/jar/commons-math3-3.2.jar b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/jar/commons-math3-3.2.jar
new file mode 100644
index 0000000000..f8b7db295b
Binary files /dev/null and b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/jar/commons-math3-3.2.jar differ
diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/javascript/test_reader.js b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/javascript/test_reader.js
index 44d9530d31..f82a31a569 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/javascript/test_reader.js
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/javascript/test_reader.js
@@ -27,6 +27,7 @@ var Relationship = Java.type("org.apache.nifi.processor.Relationship");
 var PropertyDescriptor = Java.type("org.apache.nifi.components.PropertyDescriptor");
 var StandardValidators = Java.type("org.apache.nifi.processor.util.StandardValidators");
 var StreamUtils = Java.type("org.apache.nifi.stream.io.StreamUtils");
+var Primes = Java.type("org.apache.commons.math3.primes.Primes")
 
 var REL_TEST = new Relationship.Builder()
         .name("test")
@@ -72,7 +73,8 @@ var processor = new Object() {
 
         this.logger.info("Read content={}", [content]);
 
-        flowFile = session.putAttribute(flowFile, "from-content", content)
+        flowFile = session.putAttribute(flowFile, "from-content", content);
+        flowFile = session.putAttribute(flowFile, "is3Prime", Primes.isPrime(3))
         // transfer
         session.transfer(flowFile, REL_TEST)
         session.commitAsync()