From 386932dd7c972c514cb1eb5047363cce235c285c Mon Sep 17 00:00:00 2001 From: richie Date: Tue, 16 Apr 2019 14:05:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E7=94=A8=E4=BA=8EJS=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E7=9A=84JS=E5=BC=95=E6=93=8E=EF=BC=8C=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=A4=A7=E6=96=87=E6=9C=AC=E7=9A=84JS=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=96CPU=E9=A3=99=E5=8D=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beautify/JavaScriptFormatHelper.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/javascript/beautify/JavaScriptFormatHelper.java b/designer-base/src/main/java/com/fr/design/javascript/beautify/JavaScriptFormatHelper.java index 7f1468a45..b2c5d200c 100644 --- a/designer-base/src/main/java/com/fr/design/javascript/beautify/JavaScriptFormatHelper.java +++ b/designer-base/src/main/java/com/fr/design/javascript/beautify/JavaScriptFormatHelper.java @@ -1,9 +1,14 @@ package com.fr.design.javascript.beautify; +import com.eclipsesource.v8.V8; +import com.eclipsesource.v8.V8Array; +import com.eclipsesource.v8.V8Object; +import com.eclipsesource.v8.utils.V8ObjectUtils; import com.fr.log.FineLoggerFactory; import com.fr.general.IOUtils; import com.fr.script.ScriptFactory; +import com.fr.stable.EncodeConstants; import javax.script.Invocable; import javax.script.ScriptEngine; @@ -11,6 +16,7 @@ import javax.script.ScriptException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.io.UnsupportedEncodingException; public class JavaScriptFormatHelper { @@ -34,15 +40,21 @@ public class JavaScriptFormatHelper { */ public static String beautify(String jsCode, BeautifyOption option) { InputStream resourceAsStream = IOUtils.readResource("com/fr/design/javascript/beautify/beautify.js"); - ScriptEngine scriptEngine = ScriptFactory.newScriptEngine(); String result = jsCode; + V8 v8 = V8.createV8Runtime(); try { - Reader reader = new InputStreamReader(resourceAsStream); - scriptEngine.eval(reader); - Invocable invocable = (Invocable) scriptEngine; - result = (String) invocable.invokeFunction("js_beautify_global", jsCode, option.toFormatArgument()); - } catch (ScriptException | NoSuchMethodException e) { + v8.executeVoidScript(IOUtils.inputStream2String(resourceAsStream, EncodeConstants.ENCODING_UTF_8)); + V8Array parameters = new V8Array(v8); + parameters.push(jsCode); + V8Object arg = V8ObjectUtils.toV8Object(v8, option.toFormatArgument()); + parameters.push(arg); + result = v8.executeStringFunction("js_beautify_global", parameters); + parameters.release(); + arg.release(); + } catch (UnsupportedEncodingException e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); + } finally { + v8.release(true); } return result; }