mirror of https://github.com/apache/nifi.git
NIFI-3222 - Allow ExecuteScript,InvokeScriptedProcessor and ScriptedReporting to use ExpressionLanguage to define the scripting engine modules path
Signed-off-by: Matt Burgess <mattyb149@apache.org> This closes #1640
This commit is contained in:
parent
6a64b3cd9c
commit
84f1fb3959
|
@ -444,7 +444,7 @@ public class InvokeScriptedProcessor extends AbstractSessionFactoryProcessor {
|
|||
scriptingComponentHelper.setScriptEngineName(context.getProperty(scriptingComponentHelper.SCRIPT_ENGINE).getValue());
|
||||
scriptingComponentHelper.setScriptPath(context.getProperty(ScriptingComponentUtils.SCRIPT_FILE).evaluateAttributeExpressions().getValue());
|
||||
scriptingComponentHelper.setScriptBody(context.getProperty(ScriptingComponentUtils.SCRIPT_BODY).getValue());
|
||||
String modulePath = context.getProperty(ScriptingComponentUtils.MODULES).getValue();
|
||||
String modulePath = context.getProperty(ScriptingComponentUtils.MODULES).evaluateAttributeExpressions().getValue();
|
||||
if (!StringUtils.isEmpty(modulePath)) {
|
||||
scriptingComponentHelper.setModules(modulePath.split(","));
|
||||
} else {
|
||||
|
|
|
@ -285,7 +285,7 @@ public class ScriptingComponentHelper {
|
|||
scriptEngineName = context.getProperty(SCRIPT_ENGINE).getValue();
|
||||
scriptPath = context.getProperty(ScriptingComponentUtils.SCRIPT_FILE).evaluateAttributeExpressions().getValue();
|
||||
scriptBody = context.getProperty(ScriptingComponentUtils.SCRIPT_BODY).getValue();
|
||||
String modulePath = context.getProperty(ScriptingComponentUtils.MODULES).getValue();
|
||||
String modulePath = context.getProperty(ScriptingComponentUtils.MODULES).evaluateAttributeExpressions().getValue();
|
||||
if (!StringUtils.isEmpty(modulePath)) {
|
||||
modules = modulePath.split(",");
|
||||
} else {
|
||||
|
|
|
@ -60,7 +60,7 @@ public class ScriptingComponentUtils {
|
|||
.name("Module Directory")
|
||||
.description("Comma-separated list of paths to files and/or directories which contain modules required by the script.")
|
||||
.required(false)
|
||||
.expressionLanguageSupported(false)
|
||||
.expressionLanguageSupported(true)
|
||||
.addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
|
||||
.build();
|
||||
}
|
||||
|
|
|
@ -122,7 +122,7 @@ public class ScriptedReportingTask extends AbstractReportingTask {
|
|||
scriptingComponentHelper.setScriptEngineName(context.getProperty(scriptingComponentHelper.SCRIPT_ENGINE).getValue());
|
||||
scriptingComponentHelper.setScriptPath(context.getProperty(ScriptingComponentUtils.SCRIPT_FILE).evaluateAttributeExpressions().getValue());
|
||||
scriptingComponentHelper.setScriptBody(context.getProperty(ScriptingComponentUtils.SCRIPT_BODY).getValue());
|
||||
String modulePath = context.getProperty(ScriptingComponentUtils.MODULES).getValue();
|
||||
String modulePath = context.getProperty(ScriptingComponentUtils.MODULES).evaluateAttributeExpressions().getValue();
|
||||
if (!StringUtils.isEmpty(modulePath)) {
|
||||
scriptingComponentHelper.setModules(modulePath.split(","));
|
||||
} else {
|
||||
|
|
|
@ -44,7 +44,8 @@ public class TestExecuteJavascript extends BaseScriptTest {
|
|||
runner.setValidateExpressionUsage(false);
|
||||
runner.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE, "ECMAScript");
|
||||
runner.setProperty(ScriptingComponentUtils.SCRIPT_FILE, "target/test/resources/javascript/test_onTrigger.js");
|
||||
runner.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/javascript");
|
||||
// Use basic manipulation to validate that EL is working
|
||||
runner.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/${literal('JAVASCRIPT'):toLower()}");
|
||||
|
||||
runner.assertValid();
|
||||
runner.enqueue("test content".getBytes(StandardCharsets.UTF_8));
|
||||
|
|
|
@ -104,7 +104,8 @@ public class TestInvokeJython extends BaseScriptTest {
|
|||
runner.setValidateExpressionUsage(false);
|
||||
runner.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE, "python");
|
||||
runner.setProperty(ScriptingComponentUtils.SCRIPT_FILE, "target/test/resources/jython/test_reader.py");
|
||||
runner.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/jython");
|
||||
// Use EL to populate MODULES property
|
||||
runner.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/${literal('JYTHON'):toLower()}");
|
||||
|
||||
runner.assertValid();
|
||||
runner.enqueue("test content".getBytes(StandardCharsets.UTF_8));
|
||||
|
@ -139,6 +140,7 @@ public class TestInvokeJython extends BaseScriptTest {
|
|||
final TestRunner two = TestRunners.newTestRunner(new InvokeScriptedProcessor());
|
||||
two.setValidateExpressionUsage(false);
|
||||
two.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE, "python");
|
||||
|
||||
two.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/jython");
|
||||
two.setProperty(ScriptingComponentUtils.SCRIPT_FILE, "target/test/resources/jython/test_compress.py");
|
||||
two.setProperty("mode", "decompress");
|
||||
|
|
Loading…
Reference in New Issue