新增一个验证脚本的方法
This commit is contained in:
parent
6f63864b65
commit
13af5f704a
|
@ -31,49 +31,71 @@ public class ScriptValidator {
|
|||
}
|
||||
|
||||
/**
|
||||
* 只引入一种脚本语言时,使用该语言验证
|
||||
* 验证脚本逻辑的公共部分
|
||||
*
|
||||
* @param script 脚本
|
||||
* @param script 脚本
|
||||
* @param scriptType 脚本类型
|
||||
* @return boolean
|
||||
*/
|
||||
public static boolean validate(String script){
|
||||
private static boolean validateScript(String script, ScriptTypeEnum scriptType){
|
||||
// 未加载任何脚本模块
|
||||
if(scriptExecutors.isEmpty()){
|
||||
LOG.error("The loaded script modules not found.");
|
||||
return false;
|
||||
}
|
||||
// 使用多脚本语言需要指定验证语言
|
||||
if(scriptExecutors.size() > 1){
|
||||
|
||||
// 指定脚本语言未加载
|
||||
if (scriptType != null && !scriptExecutors.containsKey(scriptType)) {
|
||||
LOG.error(StrUtil.format("Specified script language {} was not found.", scriptType));
|
||||
return false;
|
||||
}
|
||||
|
||||
// 加载多个脚本语言需要指定语言验证
|
||||
if (scriptExecutors.size() > 1 && scriptType == null) {
|
||||
LOG.error("The loaded script modules more than 1. Please specify the script language.");
|
||||
return false;
|
||||
}
|
||||
|
||||
ScriptExecutor scriptExecutor = scriptExecutors.values().iterator().next();
|
||||
ScriptExecutor scriptExecutor = (scriptType != null) ? scriptExecutors.get(scriptType) : scriptExecutors.values().iterator().next();
|
||||
try {
|
||||
scriptExecutor.compile(script);
|
||||
} catch (Exception e) {
|
||||
LOG.error("script component validate failure. " + e.getMessage());
|
||||
LOG.error(StrUtil.format("{} Script component validate failure. ", scriptExecutor.scriptType()) + e.getMessage());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 多语言脚本验证
|
||||
* 只引入一种脚本语言时,可以不指定语言验证
|
||||
*
|
||||
* @param script 脚本
|
||||
* @return boolean
|
||||
*/
|
||||
public static boolean validate(String script){
|
||||
return validateScript(script, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定脚本语言验证
|
||||
*
|
||||
* @param script 脚本
|
||||
* @param scriptType 脚本类型
|
||||
* @return boolean
|
||||
*/
|
||||
public static boolean validate(String script, ScriptTypeEnum scriptType){
|
||||
return validateScript(script, scriptType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 多语言脚本批量验证
|
||||
*
|
||||
* @param scripts 脚本
|
||||
* @return boolean
|
||||
*/
|
||||
public static boolean validate(Map<String, ScriptTypeEnum> scripts){
|
||||
for(Map.Entry<String, ScriptTypeEnum> script : scripts.entrySet()){
|
||||
ScriptExecutor scriptExecutor = scriptExecutors.getOrDefault(script.getValue(), null);
|
||||
if(scriptExecutor == null){
|
||||
LOG.error(StrUtil.format("Specified script language {} was not found.", script.getValue()));
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
scriptExecutor.compile(script.getKey());
|
||||
} catch (Exception e) {
|
||||
LOG.error(StrUtil.format("{} script component validate failure. ", script.getValue()) + e.getMessage());
|
||||
public static boolean validate(Map<ScriptTypeEnum, String> scripts){
|
||||
for(Map.Entry<ScriptTypeEnum, String> script : scripts.entrySet()){
|
||||
if(!validate(script.getValue(), script.getKey())){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yomahub.liteflow.test.script.aviator.validate;
|
||||
|
||||
import com.yomahub.liteflow.enums.ScriptTypeEnum;
|
||||
import com.yomahub.liteflow.script.aviator.AviatorScriptExecutor;
|
||||
import com.yomahub.liteflow.script.validator.ScriptValidator;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
|
@ -37,5 +38,10 @@ public class ValidateAviatorScriptComponentTest {
|
|||
" setData(defaultContext, \"s1\", a*b);";
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript));
|
||||
Assertions.assertFalse(ScriptValidator.validate(wrongScript));
|
||||
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript, ScriptTypeEnum.AVIATOR));
|
||||
Assertions.assertFalse(ScriptValidator.validate(correctScript, ScriptTypeEnum.PYTHON));
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yomahub.liteflow.test.script.graaljs.validate;
|
||||
|
||||
import com.yomahub.liteflow.enums.ScriptTypeEnum;
|
||||
import com.yomahub.liteflow.script.graaljs.GraalJavaScriptExecutor;
|
||||
import com.yomahub.liteflow.script.validator.ScriptValidator;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
|
@ -47,5 +48,8 @@ public class ValidateGraaljsScriptComponentTest {
|
|||
" defaultContext.setData(\"s1\",parseInt(result));";
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript));
|
||||
Assertions.assertFalse(ScriptValidator.validate(wrongScript));
|
||||
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript, ScriptTypeEnum.JS));
|
||||
Assertions.assertFalse(ScriptValidator.validate(correctScript, ScriptTypeEnum.AVIATOR));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yomahub.liteflow.test.script.groovy.validate;
|
||||
|
||||
import com.yomahub.liteflow.enums.ScriptTypeEnum;
|
||||
import com.yomahub.liteflow.script.groovy.GroovyScriptExecutor;
|
||||
import com.yomahub.liteflow.script.validator.ScriptValidator;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
|
@ -75,5 +76,8 @@ public class ValidateGroovyScriptComponentTest {
|
|||
" defaultContext.setData(\"s1\", a * b)";
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript));
|
||||
Assertions.assertFalse(ScriptValidator.validate(wrongScript));
|
||||
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript, ScriptTypeEnum.GROOVY));
|
||||
Assertions.assertFalse(ScriptValidator.validate(correctScript, ScriptTypeEnum.JS));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yomahub.liteflow.test.script.java.validate;
|
||||
|
||||
import com.yomahub.liteflow.enums.ScriptTypeEnum;
|
||||
import com.yomahub.liteflow.script.java.JavaExecutor;
|
||||
import com.yomahub.liteflow.script.validator.ScriptValidator;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
|
@ -59,5 +60,8 @@ public class ValidateJavaScriptComponentTest {
|
|||
" }";
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript));
|
||||
Assertions.assertFalse(ScriptValidator.validate(wrongScript));
|
||||
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript, ScriptTypeEnum.JAVA));
|
||||
Assertions.assertFalse(ScriptValidator.validate(correctScript, ScriptTypeEnum.GROOVY));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yomahub.liteflow.test.script.javascript.validate;
|
||||
|
||||
import com.yomahub.liteflow.enums.ScriptTypeEnum;
|
||||
import com.yomahub.liteflow.script.javascript.JavaScriptExecutor;
|
||||
import com.yomahub.liteflow.script.validator.ScriptValidator;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
|
@ -47,5 +48,8 @@ public class ValidateJavaScriptScriptComponentTest {
|
|||
" defaultContext.setData(\"s1\",parseInt(result));";
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript));
|
||||
Assertions.assertFalse(ScriptValidator.validate(wrongScript));
|
||||
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript, ScriptTypeEnum.JS));
|
||||
Assertions.assertFalse(ScriptValidator.validate(correctScript, ScriptTypeEnum.JAVA));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yomahub.liteflow.test.script.lua.validate;
|
||||
|
||||
import com.yomahub.liteflow.enums.ScriptTypeEnum;
|
||||
import com.yomahub.liteflow.script.lua.LuaScriptExecutor;
|
||||
import com.yomahub.liteflow.script.validator.ScriptValidator;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
|
@ -33,5 +34,8 @@ public class ValidateLuaScriptComponentTest {
|
|||
" defaultContext:setData(\"s2\",_meta:get(\"nodeId\"))";
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript));
|
||||
Assertions.assertFalse(ScriptValidator.validate(wrongScript));
|
||||
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript, ScriptTypeEnum.LUA));
|
||||
Assertions.assertFalse(ScriptValidator.validate(correctScript, ScriptTypeEnum.JS));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,17 +46,17 @@ public class ValidateMultiLanguageScriptComponentTest {
|
|||
Assertions.assertFalse(ScriptValidator.validate(correctGroovyScript));
|
||||
|
||||
// 多语言脚本验证 正确样例
|
||||
Map<String, ScriptTypeEnum> correctData = new HashMap<>();
|
||||
correctData.put(correctGroovyScript, ScriptTypeEnum.GROOVY);
|
||||
correctData.put(correctJavascriptScript, ScriptTypeEnum.JS);
|
||||
correctData.put(correctPythonScript, ScriptTypeEnum.PYTHON);
|
||||
Map<ScriptTypeEnum, String> correctData = new HashMap<>();
|
||||
correctData.put(ScriptTypeEnum.GROOVY, correctGroovyScript);
|
||||
correctData.put(ScriptTypeEnum.JS, correctJavascriptScript);
|
||||
correctData.put(ScriptTypeEnum.PYTHON, correctPythonScript);
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctData));
|
||||
|
||||
// 多语言脚本验证 错误样例
|
||||
Map<String, ScriptTypeEnum> wrongData = new HashMap<>();
|
||||
wrongData.put(correctGroovyScript, ScriptTypeEnum.GROOVY);
|
||||
wrongData.put(correctJavascriptScript, ScriptTypeEnum.JS);
|
||||
wrongData.put(wrongPythonScript, ScriptTypeEnum.PYTHON);
|
||||
Map<ScriptTypeEnum, String> wrongData = new HashMap<>();
|
||||
wrongData.put(ScriptTypeEnum.GROOVY, correctGroovyScript);
|
||||
wrongData.put(ScriptTypeEnum.JS, correctJavascriptScript);
|
||||
wrongData.put(ScriptTypeEnum.PYTHON, wrongPythonScript);
|
||||
Assertions.assertFalse(ScriptValidator.validate(wrongData));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yomahub.liteflow.test.script.python.validate;
|
||||
|
||||
import com.yomahub.liteflow.enums.ScriptTypeEnum;
|
||||
import com.yomahub.liteflow.script.python.PythonScriptExecutor;
|
||||
import com.yomahub.liteflow.script.validator.ScriptValidator;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
|
@ -49,5 +50,8 @@ public class ValidatePythonScriptComponentTest {
|
|||
" defaultContext.setData(\"td\", td.sayHi(\"jack\"))";
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript));
|
||||
Assertions.assertFalse(ScriptValidator.validate(wrongScript));
|
||||
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript, ScriptTypeEnum.PYTHON));
|
||||
Assertions.assertFalse(ScriptValidator.validate(correctScript, ScriptTypeEnum.LUA));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yomahub.liteflow.test.script.qlexpress.validate;
|
||||
|
||||
import com.yomahub.liteflow.enums.ScriptTypeEnum;
|
||||
import com.yomahub.liteflow.script.qlexpress.QLExpressScriptExecutor;
|
||||
import com.yomahub.liteflow.script.validator.ScriptValidator;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
|
@ -27,5 +28,8 @@ public class ValidateQLExpressScriptComponentTest {
|
|||
" }";
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript));
|
||||
Assertions.assertFalse(ScriptValidator.validate(wrongScript));
|
||||
|
||||
Assertions.assertTrue(ScriptValidator.validate(correctScript, ScriptTypeEnum.QLEXPRESS));
|
||||
Assertions.assertFalse(ScriptValidator.validate(correctScript, ScriptTypeEnum.PYTHON));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue