From 1b43df37f166ce758ad22cef567fe120ad853705 Mon Sep 17 00:00:00 2001 From: liamfallon Date: Fri, 28 Feb 2020 16:54:48 +0000 Subject: Switch apex to Graal javascript engine This is the main review to switch out the Nashorn Javascript interpreter and switch in the Graal javascript interpreter for apex Javascript tasks. The Graal Javascript dialect differs slightly from Nashorn in the way it accesses information passed over from the Java world so Javascript tasks need to be converted. Subsequent reviews will convert the JUnit tests marked @Ignore in previous reviews to this one and will convert the Javascript tasks into a format Graal can handle. Subsequent reviews will also convert the examples over to Graal format. Issue-ID: POLICY-2106 Change-Id: Ief582a36539e8a87724c17fb7e56864d5e471c07 Signed-off-by: liamfallon --- .../test/resources/javascript/PolicyTaskLogic.js | 35 ++++++++++++++++++++++ .../src/test/resources/javascript/TestLogic00.js | 21 +++++++++++++ .../src/test/resources/javascript/TestLogic01.js | 33 ++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/PolicyTaskLogic.js create mode 100644 plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic00.js create mode 100644 plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic01.js (limited to 'plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript') 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 new file mode 100644 index 000000000..a7bb81666 --- /dev/null +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/PolicyTaskLogic.js @@ -0,0 +1,35 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +executor.logger.info(executor.subject.getId()); +var gc = executor.getContextAlbum("BasicContextAlbum"); +executor.logger.info(gc.getName()); +executor.logger.info("incoming value: " + executor.inFields.get("intPar").toString()); + +var intPar = executor.inFields.get("intPar"); + +executor.logger.info("read value: " + intPar.toString()); + +var intParBy2 = intPar * 2; + +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 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 new file mode 100644 index 000000000..8b3bff425 --- /dev/null +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic00.js @@ -0,0 +1,21 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +var x = 1; +var returnValue = true; 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 new file mode 100644 index 000000000..7c8a44962 --- /dev/null +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/resources/javascript/TestLogic01.js @@ -0,0 +1,33 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +executor.logger.info("hello world"); + +executor.logger.info(executor.subject.getId()); +var gc = executor.getContextAlbum("TestContextAlbum"); +executor.logger.info(gc.getName()); +executor.logger.info(executor.inFields.get("par0")); + +executor.outFields.put("par0", "returnVal0"); +executor.outFields.put("par1", "returnVal1"); + +executor.logger.info(executor.outFields.get("par0")); +executor.logger.info(executor.outFields.get("par1")); + +var returnValue = executor.isTrue; -- cgit