From 609a028453ab0c9d0ed14ad4cb746b473263e5d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 10:59:44 +0200 Subject: [PATCH 01/12] Fixed issue #165 --- .../fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java index d51ef225..d899bd26 100644 --- a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java +++ b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java @@ -433,7 +433,6 @@ public Cell setCellFormula(String sheetId, int rowNumber, int columnNumber, Stri * @throws IOException thrown when writing fails */ public void write(OutputStream stream) throws IOException { - workbook.getCreationHelper().createFormulaEvaluator().evaluateAll(); workbook.write(stream); } From af6cf3012114b77a63a2bf5c8a5d10fd6e09397b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 11:24:55 +0200 Subject: [PATCH 02/12] Fixed issue #165 --- .../fi/metatavu/metaform/server/script/FormScriptBinding.java | 3 ++- .../fi/metatavu/metaform/server/script/ScriptProcessor.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/fi/metatavu/metaform/server/script/FormScriptBinding.java b/src/main/java/fi/metatavu/metaform/server/script/FormScriptBinding.java index 179d3bf5..1566a7f8 100644 --- a/src/main/java/fi/metatavu/metaform/server/script/FormScriptBinding.java +++ b/src/main/java/fi/metatavu/metaform/server/script/FormScriptBinding.java @@ -5,6 +5,7 @@ import java.util.Map; import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.context.RequestScoped; import javax.inject.Inject; /** @@ -12,7 +13,7 @@ * * @author Antti Leppä */ -@ApplicationScoped +@RequestScoped public class FormScriptBinding { @Inject diff --git a/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java b/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java index f242965f..aaee5090 100644 --- a/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java +++ b/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java @@ -50,7 +50,9 @@ public String processScript(RunnableScript script, Map params) { }); Value bindings = scriptingContext.getBindings(script.getLanguage()); - + + System.out.println("getXlsxServices: " + formScriptBinding.getXlsxServices()); + bindings.putMember("XMLHttpRequest", XMLHttpRequest.class); bindings.putMember("form", formScriptBinding); bindings.putMember("args", scriptArgs); From eb34f3973509587b1b67195f53e96c9b90b72991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 11:36:04 +0200 Subject: [PATCH 03/12] Fixed issue #165 --- .../fi/metatavu/metaform/server/script/ScriptProcessor.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java b/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java index aaee5090..23fd5287 100644 --- a/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java +++ b/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java @@ -51,10 +51,9 @@ public String processScript(RunnableScript script, Map params) { Value bindings = scriptingContext.getBindings(script.getLanguage()); - System.out.println("getXlsxServices: " + formScriptBinding.getXlsxServices()); - bindings.putMember("XMLHttpRequest", XMLHttpRequest.class); bindings.putMember("form", formScriptBinding); + bindings.putMember("formXlsxServices", formScriptBinding.getXlsxServices()); bindings.putMember("args", scriptArgs); Source source = Source.newBuilder(script.getLanguage(), script.getContent(), script.getName()).build(); From 7edc1ee779e5d1973d6a0aed81dc2ef6e3afee96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 11:39:07 +0200 Subject: [PATCH 04/12] Fixed issue #165 --- .../fi/metatavu/metaform/server/script/ScriptProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java b/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java index 23fd5287..3399b748 100644 --- a/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java +++ b/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java @@ -51,9 +51,9 @@ public String processScript(RunnableScript script, Map params) { Value bindings = scriptingContext.getBindings(script.getLanguage()); + bindings.putMember("polyglot.js.allowAllAccess", true); bindings.putMember("XMLHttpRequest", XMLHttpRequest.class); bindings.putMember("form", formScriptBinding); - bindings.putMember("formXlsxServices", formScriptBinding.getXlsxServices()); bindings.putMember("args", scriptArgs); Source source = Source.newBuilder(script.getLanguage(), script.getContent(), script.getName()).build(); From 6abf0b5b9d52c6fdb6e4fea4706ffd9ed9cdc437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 11:49:05 +0200 Subject: [PATCH 05/12] Fixed issue #165 --- .../fi/metatavu/metaform/server/script/FormScriptBinding.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/fi/metatavu/metaform/server/script/FormScriptBinding.java b/src/main/java/fi/metatavu/metaform/server/script/FormScriptBinding.java index 1566a7f8..179d3bf5 100644 --- a/src/main/java/fi/metatavu/metaform/server/script/FormScriptBinding.java +++ b/src/main/java/fi/metatavu/metaform/server/script/FormScriptBinding.java @@ -5,7 +5,6 @@ import java.util.Map; import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.context.RequestScoped; import javax.inject.Inject; /** @@ -13,7 +12,7 @@ * * @author Antti Leppä */ -@RequestScoped +@ApplicationScoped public class FormScriptBinding { @Inject From 42abbf8906088fef11dd6a46d84559cc8fdaaf0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 11:53:57 +0200 Subject: [PATCH 06/12] Fixed issue #165 --- .../server/script/ScriptProcessor.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java b/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java index 3399b748..54219f33 100644 --- a/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java +++ b/src/main/java/fi/metatavu/metaform/server/script/ScriptProcessor.java @@ -10,6 +10,7 @@ import javax.inject.Inject; import org.graalvm.polyglot.Context; +import org.graalvm.polyglot.HostAccess; import org.graalvm.polyglot.Source; import org.graalvm.polyglot.Value; import org.slf4j.Logger; @@ -40,7 +41,7 @@ public class ScriptProcessor { * @return processed output */ public String processScript(RunnableScript script, Map params) { - try (Context scriptingContext = Context.create(script.getLanguage())) { + try (Context scriptingContext = createContext(script)) { Map scriptArgs = new HashMap<>(); params.keySet().stream().forEach(param -> { @@ -51,12 +52,13 @@ public String processScript(RunnableScript script, Map params) { Value bindings = scriptingContext.getBindings(script.getLanguage()); - bindings.putMember("polyglot.js.allowAllAccess", true); bindings.putMember("XMLHttpRequest", XMLHttpRequest.class); bindings.putMember("form", formScriptBinding); bindings.putMember("args", scriptArgs); - Source source = Source.newBuilder(script.getLanguage(), script.getContent(), script.getName()).build(); + Source source = Source + .newBuilder(script.getLanguage(), script.getContent(), script.getName()) + .build(); Value returnValue = scriptingContext.eval(source); @@ -70,6 +72,18 @@ public String processScript(RunnableScript script, Map params) { return ""; } + + private Context createContext(RunnableScript script) { + return Context.newBuilder(script.getLanguage()) + .allowHostAccess(HostAccess.ALL) + .allowAllAccess(true) + .allowCreateThread(true) + .allowHostClassLoading(true) + .allowIO(true) + .allowNativeAccess(true) + .allowCreateProcess(true) + .build(); + } } From e2f2599e6888debfc086909255e7912ee6d9cd52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 12:46:13 +0200 Subject: [PATCH 07/12] Fixed issue #165 --- build.gradle | 5 ----- 1 file changed, 5 deletions(-) diff --git a/build.gradle b/build.gradle index 9eecfbe5..96f71236 100644 --- a/build.gradle +++ b/build.gradle @@ -46,11 +46,6 @@ dependencies { implementation 'javax.servlet:javax.servlet-api:4.0.1' implementation "org.apache.poi:poi:4.1.2" implementation "org.apache.poi:poi-ooxml:4.1.2" - implementation "org.graalvm.sdk:graal-sdk:1.0.0-rc9" - implementation "org.graalvm.js:js:1.0.0-rc9" - implementation "org.graalvm.js:js-scriptengine:1.0.0-rc9" - implementation "org.graalvm.tools:profiler:1.0.0-rc9" - implementation "org.graalvm.tools:chromeinspector:1.0.0-rc9" testImplementation 'org.awaitility:awaitility:3.1.2' testImplementation 'org.apache.pdfbox:pdfbox:2.0.8' From a71a853b6c6e5e061ef3ab1950ebd7ed97ec1062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 13:05:13 +0200 Subject: [PATCH 08/12] Fixed issue #165 --- .../fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java index d899bd26..efb37863 100644 --- a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java +++ b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java @@ -76,7 +76,7 @@ public S getSheet(String sheetId) { /** * Returns sheet by sheetId * - * @param sheetId sheet id + * @param sheetName sheet name * @return sheet or null if not found */ public S getSheetByName(String sheetName) { @@ -433,6 +433,7 @@ public Cell setCellFormula(String sheetId, int rowNumber, int columnNumber, Stri * @throws IOException thrown when writing fails */ public void write(OutputStream stream) throws IOException { + workbook.getCreationHelper().createFormulaEvaluator().evaluateAll(); workbook.write(stream); } From 01b16341e01e9a76af978e129fbd23113a4b081c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 13:20:18 +0200 Subject: [PATCH 09/12] Fixed issue #165 --- .../metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java index efb37863..1effe8dd 100644 --- a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java +++ b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java @@ -433,7 +433,12 @@ public Cell setCellFormula(String sheetId, int rowNumber, int columnNumber, Stri * @throws IOException thrown when writing fails */ public void write(OutputStream stream) throws IOException { - workbook.getCreationHelper().createFormulaEvaluator().evaluateAll(); + try { + workbook.getCreationHelper().createFormulaEvaluator().evaluateAll(); + } catch (Exception e) { + // just silently eat the exception away + } + workbook.write(stream); } From dc5abfeccb735c4cdbb4d9df0adc0239e602364c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 14:37:44 +0200 Subject: [PATCH 10/12] Fixed issue #165 --- build.gradle | 2 -- .../metaform/server/xlsx/AbstractXlsxBuilder.java | 9 ++++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 96f71236..fc2a36ae 100644 --- a/build.gradle +++ b/build.gradle @@ -44,8 +44,6 @@ dependencies { implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8' implementation 'io.quarkus:quarkus-undertow' implementation 'javax.servlet:javax.servlet-api:4.0.1' - implementation "org.apache.poi:poi:4.1.2" - implementation "org.apache.poi:poi-ooxml:4.1.2" testImplementation 'org.awaitility:awaitility:3.1.2' testImplementation 'org.apache.pdfbox:pdfbox:2.0.8' diff --git a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java index 1effe8dd..eac38a88 100644 --- a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java +++ b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java @@ -10,11 +10,7 @@ import java.util.UUID; import org.apache.poi.common.usermodel.HyperlinkType; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.CreationHelper; -import org.apache.poi.ss.usermodel.Hyperlink; -import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,6 +29,7 @@ public abstract class AbstractXlsxBuilder cells; private Map cellSources; private CellStyle dateTimeCellStyle; + private FormulaEvaluator formulaEvaluator; /** * Constructor @@ -48,6 +45,7 @@ public AbstractXlsxBuilder(B workbook) { CreationHelper createHelper = workbook.getCreationHelper(); + this.formulaEvaluator = createHelper.createFormulaEvaluator(); this.dateTimeCellStyle = workbook.createCellStyle(); this.dateTimeCellStyle.setDataFormat(createHelper.createDataFormat().getFormat("DD.MM.YYYY HH:MM")); @@ -419,6 +417,7 @@ public Cell setCellFormula(String sheetId, int rowNumber, int columnNumber, Stri Cell cell = findOrCreateCell(sheetId, rowNumber, columnNumber); if (cell != null) { cell.setCellFormula(formula); + this.formulaEvaluator.evaluateFormulaCell(cell); } setCellSource(sheetId, rowNumber, columnNumber, cellSource); From 76dd02412b4b765361d5048220abd64914921c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 14:49:17 +0200 Subject: [PATCH 11/12] Fixed issue #165 --- .../metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java index eac38a88..379bf802 100644 --- a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java +++ b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java @@ -417,7 +417,11 @@ public Cell setCellFormula(String sheetId, int rowNumber, int columnNumber, Stri Cell cell = findOrCreateCell(sheetId, rowNumber, columnNumber); if (cell != null) { cell.setCellFormula(formula); - this.formulaEvaluator.evaluateFormulaCell(cell); + try { + this.formulaEvaluator.evaluateFormulaCell(cell); + } catch (Exception e) { + e.printStackTrace(); + } } setCellSource(sheetId, rowNumber, columnNumber, cellSource); From 7139b2c0a0d6ced133b8a5649a5bacfd5b6a3f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Lepp=C3=A4?= Date: Tue, 1 Feb 2022 15:27:18 +0200 Subject: [PATCH 12/12] Fixed issue #165 --- .../metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java | 7 ------- .../java/fi/metatavu/metaform/server/xlsx/XlsxBuilder.java | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java index 379bf802..18fa7d34 100644 --- a/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java +++ b/src/main/java/fi/metatavu/metaform/server/xlsx/AbstractXlsxBuilder.java @@ -29,7 +29,6 @@ public abstract class AbstractXlsxBuilder cells; private Map cellSources; private CellStyle dateTimeCellStyle; - private FormulaEvaluator formulaEvaluator; /** * Constructor @@ -45,7 +44,6 @@ public AbstractXlsxBuilder(B workbook) { CreationHelper createHelper = workbook.getCreationHelper(); - this.formulaEvaluator = createHelper.createFormulaEvaluator(); this.dateTimeCellStyle = workbook.createCellStyle(); this.dateTimeCellStyle.setDataFormat(createHelper.createDataFormat().getFormat("DD.MM.YYYY HH:MM")); @@ -417,11 +415,6 @@ public Cell setCellFormula(String sheetId, int rowNumber, int columnNumber, Stri Cell cell = findOrCreateCell(sheetId, rowNumber, columnNumber); if (cell != null) { cell.setCellFormula(formula); - try { - this.formulaEvaluator.evaluateFormulaCell(cell); - } catch (Exception e) { - e.printStackTrace(); - } } setCellSource(sheetId, rowNumber, columnNumber, cellSource); diff --git a/src/main/java/fi/metatavu/metaform/server/xlsx/XlsxBuilder.java b/src/main/java/fi/metatavu/metaform/server/xlsx/XlsxBuilder.java index cbfa5a2c..a2801b03 100644 --- a/src/main/java/fi/metatavu/metaform/server/xlsx/XlsxBuilder.java +++ b/src/main/java/fi/metatavu/metaform/server/xlsx/XlsxBuilder.java @@ -14,7 +14,7 @@ public class XlsxBuilder extends AbstractXlsxBuilder * Constructor */ public XlsxBuilder() { - super(new SXSSFWorkbook()); + super(new SXSSFWorkbook(10000)); } }