diff --git a/build.gradle b/build.gradle index 9eecfbe5..fc2a36ae 100644 --- a/build.gradle +++ b/build.gradle @@ -44,13 +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" - 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' 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..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 -> { @@ -50,12 +51,14 @@ public String processScript(RunnableScript script, Map params) { }); Value bindings = scriptingContext.getBindings(script.getLanguage()); - + 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); @@ -69,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(); + } } 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..18fa7d34 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; @@ -76,7 +72,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,7 +429,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); } 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)); } }