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:42 UTC

[nifi] branch main updated (6ee3d32ca3 -> 8b08795e18)

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

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


    from 6ee3d32ca3 NIFI-9918: 'Parse XML Attributes' property added to XMLReader NIFI-9918: Fixed review findings NIFI-9918: Example added to XMLReader's additionalDetails.html on the new property. Minor documentation fixes.
     new 4b66299cf6 NIFI-9944: Fixed issue with using modules in InvokeScriptedProcessor
     new 8b08795e18 NIFI-9944 Configured maven-dependency-plugin for JavaScript test JAR

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../nifi-scripting-processors/pom.xml              | 26 +++++++++
 .../processors/script/InvokeScriptedProcessor.java |  4 --
 .../apache/nifi/script/ScriptRunnerFactory.java    |  2 +-
 .../processors/script/TestInvokeJavascript.java    | 64 ++++++++++------------
 .../src/test/resources/javascript/test_reader.js   |  4 +-
 5 files changed, 60 insertions(+), 40 deletions(-)


[nifi] 02/02: NIFI-9944 Configured maven-dependency-plugin for JavaScript test JAR

Posted by ma...@apache.org.
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 8b08795e18f69825e2b73760af79ab0530f93d70
Author: exceptionfactory <ex...@apache.org>
AuthorDate: Tue Apr 26 20:48:46 2022 -0500

    NIFI-9944 Configured maven-dependency-plugin for JavaScript test JAR
    
    Signed-off-by: Matthew Burgess <ma...@apache.org>
    
    This closes #5997
---
 .../nifi-scripting-processors/pom.xml              |  26 +++++++++
 .../processors/script/TestInvokeJavascript.java    |  62 ++++++++++-----------
 .../src/test/resources/jar/commons-math3-3.2.jar   | Bin 1692782 -> 0 bytes
 3 files changed, 55 insertions(+), 33 deletions(-)

diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/pom.xml b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/pom.xml
index 1808a39b6e..6cf490f7db 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/pom.xml
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/pom.xml
@@ -163,6 +163,32 @@
                     </excludes>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>3.3.0</version>
+                <executions>
+                    <execution>
+                        <id>copy</id>
+                        <phase>process-test-resources</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.commons</groupId>
+                                    <artifactId>commons-math3</artifactId>
+                                    <version>3.6.1</version>
+                                    <type>jar</type>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.build.testOutputDirectory}/jar</outputDirectory>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 </project>
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 c56612bd2a..6955c57349 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
@@ -20,9 +20,6 @@ import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.processor.Relationship;
 import org.apache.nifi.script.ScriptingComponentUtils;
 import org.apache.nifi.util.MockFlowFile;
-import org.apache.nifi.util.MockProcessContext;
-import org.apache.nifi.util.MockProcessorInitializationContext;
-import org.apache.nifi.util.MockValidationContext;
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.junit.jupiter.api.BeforeEach;
@@ -30,8 +27,13 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledForJreRange;
 import org.junit.jupiter.api.condition.JRE;
 
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Paths;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -56,9 +58,7 @@ public class TestInvokeJavascript extends BaseScriptTest {
      */
     @Test
     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/jar");
+        setScriptProperties();
 
         runner.assertValid();
         runner.enqueue("test content".getBytes(StandardCharsets.UTF_8));
@@ -78,20 +78,10 @@ public class TestInvokeJavascript extends BaseScriptTest {
      */
     @Test
     public void testScriptDefinedAttribute() {
-        InvokeScriptedProcessor processor = new InvokeScriptedProcessor();
-        MockProcessContext context = new MockProcessContext(processor);
-        MockProcessorInitializationContext initContext = new MockProcessorInitializationContext(processor, context);
-
-        processor.initialize(initContext);
-
-        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/jar");
-        // State Manger is unused, and a null reference is specified
-        processor.customValidate(new MockValidationContext(context));
-        processor.setup(context);
+        setScriptProperties();
+        runner.assertValid();
 
-        List<PropertyDescriptor> descriptors = processor.getSupportedPropertyDescriptors();
+        List<PropertyDescriptor> descriptors = runner.getProcessor().getPropertyDescriptors();
         assertNotNull(descriptors);
         assertTrue(descriptors.size() > 0);
         boolean found = false;
@@ -113,21 +103,10 @@ public class TestInvokeJavascript extends BaseScriptTest {
      */
     @Test
     public void testScriptDefinedRelationshipWithExternalJar() {
-        InvokeScriptedProcessor processor = new InvokeScriptedProcessor();
-        MockProcessContext context = new MockProcessContext(processor);
-        MockProcessorInitializationContext initContext = new MockProcessorInitializationContext(processor, context);
-
-        processor.initialize(initContext);
-
-        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/jar");
-
-        // State Manger is unused, and a null reference is specified
-        processor.customValidate(new MockValidationContext(context));
-        processor.setup(context);
+        setScriptProperties();
+        runner.assertValid();
 
-        Set<Relationship> relationships = processor.getRelationships();
+        Set<Relationship> relationships = runner.getProcessor().getRelationships();
         assertNotNull(relationships);
         assertTrue(relationships.size() > 0);
         boolean found = false;
@@ -188,4 +167,21 @@ public class TestInvokeJavascript extends BaseScriptTest {
         runner.setProperty(ScriptingComponentUtils.SCRIPT_BODY, "");
         runner.assertNotValid();
     }
+
+    private void setScriptProperties() {
+        runner.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE, "ECMAScript");
+        runner.setProperty(ScriptingComponentUtils.SCRIPT_FILE, getResource("/javascript/test_reader.js"));
+        runner.setProperty(ScriptingComponentUtils.MODULES, getResource("/jar"));
+    }
+
+    private String getResource(final String resourcePath) {
+        final URL resourceUrl = Objects.requireNonNull(TestInvokeJavascript.class.getResource(resourcePath), resourcePath);
+        final URI resourceUri;
+        try {
+            resourceUri = resourceUrl.toURI();
+        } catch (final URISyntaxException e) {
+            throw new RuntimeException(e);
+        }
+        return Paths.get(resourceUri).toString();
+    }
 }
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
deleted file mode 100644
index f8b7db295b..0000000000
Binary files a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/jar/commons-math3-3.2.jar and /dev/null differ


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

Posted by ma...@apache.org.
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()