mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
add createXXXScript
This commit is contained in:
parent
4a4cdd3744
commit
c7ce3719e8
@ -11,6 +11,7 @@
|
||||
* 【core 】 TableMap增加getKeys和getValues方法
|
||||
* 【json 】 JSONObject和JSONArray增加set方法,标识put弃用
|
||||
* 【http 】 增加SimpleHttpServer
|
||||
* 【script 】 增加createXXXScript,区别单例
|
||||
|
||||
### Bug修复
|
||||
* 【extra 】 修复SpringUtil使用devtools重启报错问题
|
||||
|
@ -17,7 +17,7 @@ import java.io.Reader;
|
||||
public class JavaScriptEngine extends FullSupportScriptEngine {
|
||||
|
||||
public JavaScriptEngine() {
|
||||
super(ScriptUtil.getJsEngine());
|
||||
super(ScriptUtil.createJsEngine());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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 脚本内容
|
||||
|
Loading…
Reference in New Issue
Block a user