1
0
mirror of https://github.com/apache/nifi.git synced 2025-02-16 15:06:00 +00:00

NIFI-9944: Fixed issue with using modules in InvokeScriptedProcessor

This commit is contained in:
Matthew Burgess 2022-04-25 16:15:23 -04:00
parent 6ee3d32ca3
commit 4b66299cf6
No known key found for this signature in database
GPG Key ID: 05D3DEB8126DAD24
5 changed files with 8 additions and 10 deletions
nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src
main/java/org/apache/nifi
test
java/org/apache/nifi/processors/script
resources

@ -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 {

@ -79,7 +79,7 @@ public class ScriptRunnerFactory {
if (!"Clojure".equals(scriptEngineName)
&& !"Groovy".equals(scriptEngineName)
&& "ECMAScript".equals(scriptEngineName)) {
&& !"ECMAScript".equals(scriptEngineName)) {
return new URL[0];
}

@ -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));

@ -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()