diff options
Diffstat (limited to 'plugins/plugins-executor/plugins-executor-javascript')
12 files changed, 129 insertions, 94 deletions
diff --git a/plugins/plugins-executor/plugins-executor-javascript/pom.xml b/plugins/plugins-executor/plugins-executor-javascript/pom.xml index d3d3faac0..1fc79dddd 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/pom.xml +++ b/plugins/plugins-executor/plugins-executor-javascript/pom.xml @@ -39,19 +39,9 @@ <dependencies> <dependency> - <groupId>org.graalvm.sdk</groupId> - <artifactId>graal-sdk</artifactId> - <version>${graalvm.version}</version> - </dependency> - <dependency> - <groupId>org.graalvm.truffle</groupId> - <artifactId>truffle-api</artifactId> - <version>${graalvm.version}</version> - </dependency> - <dependency> - <groupId>org.graalvm.js</groupId> - <artifactId>js</artifactId> - <version>${graalvm.version}</version> + <groupId>org.mozilla</groupId> + <artifactId>rhino</artifactId> + <version>1.7.12</version> </dependency> <dependency> <groupId>org.assertj</groupId> diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutor.java b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutor.java index 93f6216fc..c80f58fbe 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutor.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutor.java @@ -20,9 +20,10 @@ package org.onap.policy.apex.plugins.executor.javascript; -import org.graalvm.polyglot.Context; -import org.graalvm.polyglot.HostAccess; -import org.graalvm.polyglot.Value; +import org.apache.commons.lang3.StringUtils; +import org.mozilla.javascript.Context; +import org.mozilla.javascript.Script; +import org.mozilla.javascript.Scriptable; import org.onap.policy.apex.core.engine.executor.exception.StateMachineException; import org.onap.policy.apex.model.basicmodel.concepts.AxKey; @@ -32,35 +33,50 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxKey; * @author Liam Fallon (liam.fallon@ericsson.com) */ public class JavascriptExecutor { + public static final int DEFAULT_OPTIMIZATION_LEVEL = 9; + + // Recurring string constants + private static final String WITH_MESSAGE = " with message: "; + // The key of the subject that wants to execute Javascript code final AxKey subjectKey; - // The Javascript context - private final Context jsContext; + private Context javascriptContext; + private Script script; /** - * Prepares the executor for processing. + * Initializes the Javascripe executor. * * @param subjectKey the key of the subject that is requesting Javascript execution - * @throws StateMachineException thrown when instantiation of the executor fails */ - public JavascriptExecutor(final AxKey subjectKey) throws StateMachineException { + public JavascriptExecutor(final AxKey subjectKey) { this.subjectKey = subjectKey; + } - // @formatter:off - jsContext = - Context.newBuilder("js") - .allowHostClassLookup(s -> true) - .allowHostAccess(HostAccess.ALL) - .build(); - // @formatter:on + /** + * Prepares the executor for processing and compiles the Javascript code. + * + * @param javascriptCode the Javascript code to execute + * @throws StateMachineException thrown when instantiation of the executor fails + */ + public void init(final String javascriptCode) throws StateMachineException { + if (StringUtils.isEmpty(javascriptCode)) { + throw new StateMachineException("no logic specified for " + subjectKey.getId()); + } try { - jsContext.getBindings("js"); + // Create a Javascript context for this thread + javascriptContext = Context.enter(); + + // Set up the default values of the context + javascriptContext.setOptimizationLevel(DEFAULT_OPTIMIZATION_LEVEL); + javascriptContext.setLanguageVersion(Context.VERSION_1_8); + + script = javascriptContext.compileString(javascriptCode, subjectKey.getId(), 1, null); } catch (Exception e) { - jsContext.close(); + Context.exit(); throw new StateMachineException( - "prepare: javascript engine failed to initialize properly for \"" + subjectKey.getId() + "\"", e); + "logic failed to compile for " + subjectKey.getId() + WITH_MESSAGE + e.getMessage(), e); } } @@ -68,28 +84,30 @@ public class JavascriptExecutor { * Executes the the Javascript code. * * @param executionContext the execution context of the subject to be passed to the Javascript context - * @param javascriptCode the Javascript code to execute * @return true if the Javascript executed properly * @throws StateMachineException thrown when Javascript execution fails */ - public boolean execute(final Object executionContext, final String javascriptCode) throws StateMachineException { + public boolean execute(final Object executionContext) throws StateMachineException { + Object returnObject = null; + try { - // Set up the Javascript engine context - jsContext.getBindings("js").putMember("executor", executionContext); - jsContext.eval("js", javascriptCode); + // Pass the subject context to the Javascript engine + Scriptable javascriptScope = javascriptContext.initStandardObjects(); + javascriptScope.put("executor", javascriptScope, executionContext); + // Run the script + returnObject = script.exec(javascriptContext, javascriptScope); } catch (final Exception e) { - throw new StateMachineException("execute: logic failed to run for \"" + subjectKey.getId() + "\"", e); + throw new StateMachineException( + "logic failed to run for " + subjectKey.getId() + WITH_MESSAGE + e.getMessage(), e); } - Value returnValue = jsContext.getBindings("js").getMember("returnValue"); - - if (returnValue == null || returnValue.isNull()) { + if (!(returnObject instanceof Boolean)) { throw new StateMachineException( - "execute: logic failed to set a return value for \"" + subjectKey.getId() + "\""); + "execute: logic for " + subjectKey.getId() + " returned a non-boolean value " + returnObject); } - return returnValue.asBoolean(); + return (boolean) returnObject; } /** @@ -99,10 +117,10 @@ public class JavascriptExecutor { */ public void cleanUp() throws StateMachineException { try { - jsContext.close(); + Context.exit(); } catch (final Exception e) { - throw new StateMachineException( - "cleanUp: executor cleanup failed to close for \"" + subjectKey.getId() + "\"", e); + throw new StateMachineException("cleanUp: executor cleanup failed to close for " + subjectKey.getId() + + WITH_MESSAGE + e.getMessage(), e); } } } diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutor.java b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutor.java index 18a6ef58a..27e649fd3 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutor.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutor.java @@ -52,7 +52,12 @@ public class JavascriptStateFinalizerExecutor extends StateFinalizerExecutor { // Call generic prepare logic super.prepare(); + // Create the executor javascriptExecutor = new JavascriptExecutor(getSubject().getKey()); + + // Initialize and cleanup the executor to check the Javascript code + javascriptExecutor.init(getSubject().getLogic()); + javascriptExecutor.cleanUp(); } /** @@ -71,8 +76,13 @@ public class JavascriptStateFinalizerExecutor extends StateFinalizerExecutor { // Do execution pre work executePre(executionId, executionProperties, incomingFields); - // Execute the Javascript and do post processing - executePost(javascriptExecutor.execute(getExecutionContext(), getSubject().getLogic())); + // Execute the Javascript executor + javascriptExecutor.init(getSubject().getLogic()); + boolean result = javascriptExecutor.execute(getExecutionContext()); + javascriptExecutor.cleanUp(); + + // Execute the Javascript + executePost(result); return getOutgoing(); } @@ -86,7 +96,5 @@ public class JavascriptStateFinalizerExecutor extends StateFinalizerExecutor { public void cleanUp() throws StateMachineException { LOGGER.debug("cleanUp:" + getSubject().getKey().getId() + "," + getSubject().getLogicFlavour() + "," + getSubject().getLogic()); - - javascriptExecutor.cleanUp(); } } diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutor.java b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutor.java index 29fae193e..bec5670c5 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutor.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutor.java @@ -52,7 +52,12 @@ public class JavascriptTaskExecutor extends TaskExecutor { // Call generic prepare logic super.prepare(); + // Create the executor javascriptExecutor = new JavascriptExecutor(getSubject().getKey()); + + // Initialize and cleanup the executor to check the Javascript code + javascriptExecutor.init(getSubject().getTaskLogic().getLogic()); + javascriptExecutor.cleanUp(); } /** @@ -68,11 +73,17 @@ public class JavascriptTaskExecutor extends TaskExecutor { @Override public Map<String, Object> execute(final long executionId, final Properties executionProperties, final Map<String, Object> incomingFields) throws StateMachineException, ContextException { + // Do execution pre work executePre(executionId, executionProperties, incomingFields); - // Execute the Javascript and do post processing - executePost(javascriptExecutor.execute(getExecutionContext(), getSubject().getTaskLogic().getLogic())); + // Execute the Javascript executor + javascriptExecutor.init(getSubject().getTaskLogic().getLogic()); + boolean result = javascriptExecutor.execute(getExecutionContext()); + javascriptExecutor.cleanUp(); + + // Execute the Javascript + executePost(result); return getOutgoing(); } @@ -86,7 +97,5 @@ public class JavascriptTaskExecutor extends TaskExecutor { public void cleanUp() throws StateMachineException { LOGGER.debug("cleanUp:" + getSubject().getKey().getId() + "," + getSubject().getTaskLogic().getLogicFlavour() + "," + getSubject().getTaskLogic().getLogic()); - - javascriptExecutor.cleanUp(); } } diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutor.java b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutor.java index 41585fbd0..c32b70991 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutor.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutor.java @@ -53,7 +53,11 @@ public class JavascriptTaskSelectExecutor extends TaskSelectExecutor { // Call generic prepare logic super.prepare(); + // Create the executor javascriptExecutor = new JavascriptExecutor(getSubject().getKey()); + + // Initialize and cleanup the executor to check the Javascript code + javascriptExecutor.init(getSubject().getTaskSelectionLogic().getLogic()); } /** @@ -72,8 +76,13 @@ public class JavascriptTaskSelectExecutor extends TaskSelectExecutor { // Do execution pre work executePre(executionId, executionProperties, incomingEvent); - // Execute the Javascript and do post processing - executePost(javascriptExecutor.execute(getExecutionContext(), getSubject().getTaskSelectionLogic().getLogic())); + // Execute the Javascript executor + javascriptExecutor.init(getSubject().getTaskSelectionLogic().getLogic()); + boolean result = javascriptExecutor.execute(getExecutionContext()); + javascriptExecutor.cleanUp(); + + // Execute the Javascript + executePost(result); return getOutgoing(); } @@ -88,7 +97,5 @@ public class JavascriptTaskSelectExecutor extends TaskSelectExecutor { LOGGER.debug("cleanUp:" + getSubject().getKey().getId() + "," + getSubject().getTaskSelectionLogic().getLogicFlavour() + "," + getSubject().getTaskSelectionLogic().getLogic()); - - javascriptExecutor.cleanUp(); } } diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutorTest.java b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutorTest.java index 5ccbd255f..8be79558f 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutorTest.java @@ -23,7 +23,6 @@ package org.onap.policy.apex.plugins.executor.javascript; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; import java.util.HashMap; import java.util.Map; @@ -94,31 +93,32 @@ public class JavascriptStateFinalizerExecutorTest { jsfe.setContext(parentStateExcutor, stateFinalizerLogic, internalContext); stateFinalizerLogic.setLogic("return false"); - jsfe.prepare(); + assertThatThrownBy(() -> { + jsfe.prepare(); + }).hasMessage("logic failed to compile for NULL:0.0.0:NULL:NULL " + + "with message: invalid return (NULL:0.0.0:NULL:NULL#1)"); Map<String, Object> incomingParameters1 = new HashMap<>(); assertThatThrownBy(() -> { jsfe.execute(-1, new Properties(), incomingParameters1); - fail("test should throw an exception here"); - }).hasMessage("execute: logic failed to run for \"NULL:0.0.0:NULL:NULL\""); + }).hasMessage("logic failed to compile for NULL:0.0.0:NULL:NULL " + + "with message: invalid return (NULL:0.0.0:NULL:NULL#1)"); stateFinalizerLogic.setLogic("java.lang.String"); jsfe.prepare(); AxEvent axEvent = new AxEvent(new AxArtifactKey("Event", "0.0.1")); EnEvent event = new EnEvent(axEvent); - stateFinalizerLogic.setLogic( - "if(executor.executionId==-1)" + "{\r\n" + "var returnValueType = Java.type(\"java.lang.Boolean\");" - + "var returnValue = new returnValueType(false); }\n" + "else{\n" - + "executor.setSelectedStateOutputName(\"SelectedOutputIsMe\");\n" - + "var returnValueType = Java.type(\"java.lang.Boolean\");\n" + "\n" - + "var returnValue = new returnValueType(true);}"); + stateFinalizerLogic.setLogic("if(executor.executionId==-1)" + "{\r\n" + + "var returnValueType = java.lang.Boolean;" + "var returnValue = new returnValueType(false); }\n" + + "else{\n" + "executor.setSelectedStateOutputName(\"SelectedOutputIsMe\");\n" + + "var returnValueType = java.lang.Boolean;\n" + "\n" + + "var returnValue = new returnValueType(true);} true;"); assertThatThrownBy(() -> { jsfe.prepare(); jsfe.execute(-1, new Properties(), event); - }).hasMessage("execute-post: state finalizer logic execution failure on state \"NULL:0.0.0:NULL:NULL\" " - + "on finalizer logic NULL:0.0.0:NULL:NULL"); + }).hasMessage("execute-post: state finalizer logic \"NULL:0.0.0:NULL:NULL\" did not select an output state"); state.getStateOutputs().put("SelectedOutputIsMe", null); diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutorTest.java b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutorTest.java index 786cebcc3..c327ebb4d 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutorTest.java @@ -105,41 +105,38 @@ public class JavascriptTaskExecutorTest { jte.prepare(); }).isInstanceOf(NullPointerException.class); - AxTask task = new AxTask(); + AxTask task = new AxTask(new AxArtifactKey("TestTask:0.0.1")); final ApexInternalContext internalContext = new ApexInternalContext(new AxPolicyModel()); jte.setContext(null, task, internalContext); task.getTaskLogic().setLogic("return boolean;"); - jte.prepare(); - Map<String, Object> incomingParameters2 = new HashMap<>(); assertThatThrownBy(() -> { - jte.execute(-1, new Properties(), incomingParameters2); - }).hasMessage("execute: logic failed to run for \"NULL:0.0.0\""); + jte.prepare(); + jte.execute(-1, new Properties(), null); + }).hasMessage("logic failed to compile for TestTask:0.0.1 with message: invalid return (TestTask:0.0.1#1)"); task.getTaskLogic().setLogic("var x = 5;"); - jte.prepare(); + jte.prepare(); assertThatThrownBy(() -> { jte.execute(-1, new Properties(), null); }).isInstanceOf(NullPointerException.class); + jte.cleanUp(); - Map<String, Object> incomingParameters = new HashMap<>(); - assertThatThrownBy(() -> { - jte.execute(-1, new Properties(), incomingParameters); - }).hasMessage("execute: logic failed to set a return value for \"NULL:0.0.0\""); + task.getTaskLogic().setLogic("var returnValue = false;\nreturnValue;"); - task.getTaskLogic().setLogic("var returnValueType = Java.type(\"java.lang.Boolean\");\n" - + "var returnValue = new returnValueType(false); "); + Map<String, Object> incomingParameters = new HashMap<>(); assertThatThrownBy(() -> { jte.prepare(); jte.execute(-1, new Properties(), incomingParameters); - }).hasMessage("execute-post: task logic execution failure on task \"NULL\" in model NULL:0.0.0"); + }).hasMessage("execute-post: task logic execution failure on task \"TestTask\" in model NULL:0.0.0"); - task.getTaskLogic().setLogic("var returnValueType = Java.type(\"java.lang.Boolean\");\r\n" - + "var returnValue = new returnValueType(true); "); + jte.cleanUp(); + + task.getTaskLogic().setLogic("var returnValue = true;\nreturnValue;"); jte.prepare(); Map<String, Object> returnMap = jte.execute(0, new Properties(), incomingParameters); @@ -176,11 +173,13 @@ public class JavascriptTaskExecutorTest { jte.prepare(); jte.execute(-1, new Properties(), incomingParameters); + jte.cleanUp(); task.getTaskLogic().setLogic(TextFileUtils.getTextFileAsString("src/test/resources/javascript/TestLogic01.js")); jte.prepare(); Map<String, Object> outcomingParameters = jte.execute(-1, new Properties(), incomingParameters); + jte.cleanUp(); assertEquals("returnVal0", outcomingParameters.get("par0")); assertEquals("returnVal1", outcomingParameters.get("par1")); diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutorTest.java b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutorTest.java index abbcd19b7..3acf132dd 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutorTest.java @@ -80,14 +80,17 @@ public class JavascriptTaskSelectExecutorTest { AxState state = new AxState(); ApexInternalContext internalContext = new ApexInternalContext(new AxPolicyModel()); jtse.setContext(null, state, internalContext); - jtse.prepare(); + + assertThatThrownBy(() -> { + jtse.prepare(); + }).hasMessage("no logic specified for NULL:0.0.0:NULL:NULL"); AxEvent axEvent1 = new AxEvent(new AxArtifactKey("Event", "0.0.1")); EnEvent event1 = new EnEvent(axEvent1); assertThatThrownBy(() -> { jtse.execute(-1, new Properties(), event1); - }).hasMessage("execute: logic failed to set a return value for \"NULL:0.0.0:NULL:NULL\""); + }).hasMessage("no logic specified for NULL:0.0.0:NULL:NULL"); state.getTaskSelectionLogic().setLogic("java.lang.String"); jtse.prepare(); @@ -101,18 +104,17 @@ public class JavascriptTaskSelectExecutorTest { assertThatThrownBy(() -> { jtse.execute(-1, new Properties(), event); - }).hasMessage("execute: logic failed to set a return value for \"NULL:0.0.0:NULL:NULL\""); + }).hasMessage( + "execute: logic for NULL:0.0.0:NULL:NULL returned a non-boolean value [JavaClass java.lang.String]"); - state.getTaskSelectionLogic().setLogic("var returnValueType = Java.type(\"java.lang.Boolean\");\r\n" - + "var returnValue = new returnValueType(false); "); + state.getTaskSelectionLogic().setLogic("var x=1;\n" + "false; "); assertThatThrownBy(() -> { jtse.prepare(); jtse.execute(-1, new Properties(), event); }).hasMessage("execute-post: task selection logic failed on state \"NULL:0.0.0:NULL:NULL\""); - state.getTaskSelectionLogic().setLogic("var returnValueType = Java.type(\"java.lang.Boolean\");\r\n" - + "var returnValue = new returnValueType(true); "); + state.getTaskSelectionLogic().setLogic("var x = 1\n" + "true; "); jtse.prepare(); AxArtifactKey taskKey = jtse.execute(0, new Properties(), event); diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/PolicyTaskLogic.js b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/PolicyTaskLogic.js index a7bb81666..d5427582a 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/PolicyTaskLogic.js +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/PolicyTaskLogic.js @@ -32,4 +32,4 @@ executor.outFields.put("intPar", intParBy2); executor.logger.info("outgoing value: " + executor.outFields.get("intPar").toString()); -var returnValue = executor.isTrue;
\ No newline at end of file +executor.isTrue;
\ No newline at end of file diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic00.js b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic00.js index 8b3bff425..0c15249d2 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic00.js +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic00.js @@ -19,3 +19,5 @@ */ var x = 1; var returnValue = true; + +returnValue;
\ No newline at end of file diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic01.js b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic01.js index 7c8a44962..83c3060bd 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic01.js +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic01.js @@ -30,4 +30,4 @@ executor.outFields.put("par1", "returnVal1"); executor.logger.info(executor.outFields.get("par0")); executor.logger.info(executor.outFields.get("par1")); -var returnValue = executor.isTrue; +true; diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/policymodels/ExecutorModel.json b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/policymodels/ExecutorModel.json index 79f08e279..d987a0c78 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/policymodels/ExecutorModel.json +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/policymodels/ExecutorModel.json @@ -460,7 +460,7 @@ "taskLogic" : { "key" : "TaskLogic", "logicFlavour" : "JAVASCRIPT", - "logic" : "executor.logger.debug(executor.subject.getId());\nvar gc = executor.getContextAlbum(\"BasicContextAlbum\");\nexecutor.logger.debug(gc.getName());\nexecutor.logger.debug(\"incoming value: \" + executor.inFields.get(\"intPar\").toString());\n\nvar intPar = executor.inFields.get(\"intPar\");\n\nexecutor.logger.debug(\"read value: \" + intPar.toString());\n\nvar intParBy2 = intPar * 2;\n\nexecutor.outFields.put(\"intPar\", intParBy2);\n\nexecutor.logger.debug(\"outgoing value: \" + executor.outFields.get(\"intPar\").toString());\n\nvar returnValue = executor.isTrue;" + "logic" : "executor.logger.debug(executor.subject.getId());\nvar gc = executor.getContextAlbum(\"BasicContextAlbum\");\nexecutor.logger.debug(gc.getName());\nexecutor.logger.debug(\"incoming value: \" + executor.inFields.get(\"intPar\").toString());\n\nvar intPar = executor.inFields.get(\"intPar\");\n\nexecutor.logger.debug(\"read value: \" + intPar.toString());\n\nvar intParBy2 = intPar * 2;\n\nexecutor.outFields.put(\"intPar\", intParBy2);\n\nexecutor.logger.debug(\"outgoing value: \" + executor.outFields.get(\"intPar\").toString());\n\ntrue;" } } } ] |