mirror of
https://gitee.com/anji-plus/report.git
synced 2026-05-20 08:47:18 +08:00
ScriptEngine创建方式优化
This commit is contained in:
@@ -33,11 +33,13 @@ import java.util.Set;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class DataSetParamServiceImpl implements DataSetParamService {
|
public class DataSetParamServiceImpl implements DataSetParamService {
|
||||||
static final Set<String> blackList = Sets.newHashSet("java.lang.ProcessBuilder", "java.lang.Runtime", "java.lang.ProcessImpl");
|
static final Set<String> blackList = Sets.newHashSet("java.lang.ProcessBuilder", "java.lang.Runtime", "java.lang.ProcessImpl");
|
||||||
|
private static final ThreadLocal<ScriptEngine> engineHolder = ThreadLocal.withInitial(() -> {
|
||||||
private ScriptEngine engine;
|
|
||||||
{
|
|
||||||
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
|
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
|
||||||
engine = factory.getScriptEngine(clz -> !blackList.contains(clz));
|
ScriptEngine engine = factory.getScriptEngine(clz -> !blackList.contains(clz));
|
||||||
|
return engine;
|
||||||
|
});
|
||||||
|
public static ScriptEngine getEngine() {
|
||||||
|
return engineHolder.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -96,10 +98,10 @@ public class DataSetParamServiceImpl implements DataSetParamService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Object verification(DataSetParamDto dataSetParamDto) {
|
public Object verification(DataSetParamDto dataSetParamDto) {
|
||||||
|
|
||||||
String validationRules = dataSetParamDto.getValidationRules();
|
String validationRules = dataSetParamDto.getValidationRules();
|
||||||
if (StringUtils.isNotBlank(validationRules)) {
|
if (StringUtils.isNotBlank(validationRules)) {
|
||||||
try {
|
try {
|
||||||
|
ScriptEngine engine = getEngine();
|
||||||
engine.eval(validationRules);
|
engine.eval(validationRules);
|
||||||
if(engine instanceof Invocable){
|
if(engine instanceof Invocable){
|
||||||
Invocable invocable = (Invocable) engine;
|
Invocable invocable = (Invocable) engine;
|
||||||
|
|||||||
Reference in New Issue
Block a user