add createXXXScript

This commit is contained in:
Looly 2020-04-01 15:46:58 +08:00
parent 4a4cdd3744
commit c7ce3719e8
3 changed files with 81 additions and 27 deletions

View File

@ -11,6 +11,7 @@
* 【core 】 TableMap增加getKeys和getValues方法
* 【json 】 JSONObject和JSONArray增加set方法标识put弃用
* 【http 】 增加SimpleHttpServer
* 【script 】 增加createXXXScript区别单例
### Bug修复
* 【extra 】 修复SpringUtil使用devtools重启报错问题

View File

@ -17,7 +17,7 @@ import java.io.Reader;
public class JavaScriptEngine extends FullSupportScriptEngine {
public JavaScriptEngine() {
super(ScriptUtil.getJsEngine());
super(ScriptUtil.createJsEngine());
}
/**

View File

@ -22,29 +22,38 @@ public class ScriptUtil {
private static SimpleCache<String, ScriptEngine> cache = new SimpleCache<>();
/**
* 获得 {@link ScriptEngine} 实例
* 获得单例的{@link ScriptEngine} 实例
*
* @param nameOrExtOrMime 脚本名称
* @return {@link ScriptEngine} 实例
*/
public static ScriptEngine getScript(String nameOrExtOrMime) {
return cache.get(nameOrExtOrMime, ()->{
ScriptEngine engine = manager.getEngineByName(nameOrExtOrMime);
if (null == engine) {
engine = manager.getEngineByExtension(nameOrExtOrMime);
}
if (null == engine) {
engine = manager.getEngineByMimeType(nameOrExtOrMime);
}
if (null == engine) {
throw new NullPointerException(StrUtil.format("Script for [{}] not support !", nameOrExtOrMime));
}
return engine;
});
return cache.get(nameOrExtOrMime, ()-> createScript(nameOrExtOrMime));
}
/**
* 获得 Javascript引擎 {@link JavaScriptEngine}
* 创建 {@link ScriptEngine} 实例
*
* @param nameOrExtOrMime 脚本名称
* @return {@link ScriptEngine} 实例
* @since 5.2.6
*/
public static ScriptEngine createScript(String nameOrExtOrMime) {
ScriptEngine engine = manager.getEngineByName(nameOrExtOrMime);
if (null == engine) {
engine = manager.getEngineByExtension(nameOrExtOrMime);
}
if (null == engine) {
engine = manager.getEngineByMimeType(nameOrExtOrMime);
}
if (null == engine) {
throw new NullPointerException(StrUtil.format("Script for [{}] not support !", nameOrExtOrMime));
}
return engine;
}
/**
* 获得非单例的 Javascript引擎 {@link JavaScriptEngine}
*
* @return {@link JavaScriptEngine}
*/
@ -53,9 +62,9 @@ public class ScriptUtil {
}
/**
* 获得 JavaScript引擎
* 获得单例的JavaScript引擎
*
* @return Python引擎
* @return Javascript引擎
* @since 5.2.5
*/
public static ScriptEngine getJsEngine() {
@ -63,7 +72,17 @@ public class ScriptUtil {
}
/**
* 获得 Python引擎<br>
* 创建新的JavaScript引擎
*
* @return Javascript引擎
* @since 5.2.6
*/
public static ScriptEngine createJsEngine() {
return createScript("js");
}
/**
* 获得单例的Python引擎<br>
* 需要引入org.python:jython
*
* @return Python引擎
@ -75,7 +94,19 @@ public class ScriptUtil {
}
/**
* 获得Lua引擎<br>
* 创建Python引擎<br>
* 需要引入org.python:jython
*
* @return Python引擎
* @since 5.2.6
*/
public static ScriptEngine createPythonEngine() {
System.setProperty("python.import.site", "false");
return createScript("python");
}
/**
* 获得单例的Lua引擎<br>
* 需要引入org.luaj:luaj-jse
*
* @return Lua引擎
@ -86,7 +117,18 @@ public class ScriptUtil {
}
/**
* 获得Groovy引擎<br>
* 创建Lua引擎<br>
* 需要引入org.luaj:luaj-jse
*
* @return Lua引擎
* @since 5.2.6
*/
public static ScriptEngine createLuaEngine() {
return createScript("lua");
}
/**
* 获得单例的Groovy引擎<br>
* 需要引入org.codehaus.groovy:groovy-all
*
* @return Groovy引擎
@ -97,10 +139,21 @@ public class ScriptUtil {
}
/**
* 执行脚本
* 创建Groovy引擎<br>
* 需要引入org.codehaus.groovy:groovy-all
*
* @return Groovy引擎
* @since 5.2.6
*/
public static ScriptEngine createGroovyEngine() {
return createScript("groovy");
}
/**
* 执行Javascript脚本
*
* @param script 脚本内容
* @return {@link CompiledScript}
* @return 执行结果
* @throws ScriptRuntimeException 脚本异常
* @since 3.2.0
*/
@ -117,7 +170,7 @@ public class ScriptUtil {
*
* @param script 脚本内容
* @param context 脚本上下文
* @return {@link CompiledScript}
* @return 执行结果
* @throws ScriptRuntimeException 脚本异常
* @since 3.2.0
*/
@ -134,7 +187,7 @@ public class ScriptUtil {
*
* @param script 脚本内容
* @param bindings 绑定的参数
* @return {@link CompiledScript}
* @return 执行结果
* @throws ScriptRuntimeException 脚本异常
* @since 3.2.0
*/
@ -147,7 +200,7 @@ public class ScriptUtil {
}
/**
* 编译脚本
* 编译Javascript脚本
*
* @param script 脚本内容
* @return {@link CompiledScript}
@ -163,7 +216,7 @@ public class ScriptUtil {
}
/**
* 编译脚本
* 编译Javascript脚本
*
* @param engine 引擎
* @param script 脚本内容