Ver código fonte

代码优化

mxd 3 anos atrás
pai
commit
e260a49e22

+ 3 - 53
magic-api/src/main/java/org/ssssssss/magicapi/script/ScriptManager.java

@@ -1,14 +1,9 @@
 package org.ssssssss.magicapi.script;
 
-import org.ssssssss.magicapi.cache.DefaultSqlCache;
-import org.ssssssss.magicapi.exception.MagicAPIException;
-import org.ssssssss.magicapi.utils.MD5Utils;
 import org.ssssssss.script.MagicScript;
 import org.ssssssss.script.MagicScriptContext;
 import org.ssssssss.script.MagicScriptDebugContext;
 
-import javax.script.*;
-
 /**
  * 脚本管理
  *
@@ -16,59 +11,14 @@ import javax.script.*;
  */
 public class ScriptManager {
 
-	private static final ScriptEngineManager SCRIPT_ENGINE_MANAGER = new ScriptEngineManager();
-
-
-	/**
-	 * 编译缓存
-	 */
-	private static final DefaultSqlCache COMPILE_CACHE = new DefaultSqlCache(500, -1);
-
-	private static final String DEBUG_MARK = MagicScript.DEBUG_MARK;
-
-	/**
-	 * 编译脚本
-	 *
-	 * @param script 脚本内容
-	 */
-	public static CompiledScript compile(String engine, String script) {
-		// 先对脚本MD5作为key
-		String key = MD5Utils.encrypt(script);
-		CompiledScript scriptObject = (CompiledScript) COMPILE_CACHE.get("default", key);
-		if (scriptObject == null) {
-			ScriptEngine scriptEngine = SCRIPT_ENGINE_MANAGER.getEngineByName(engine);
-			if (scriptEngine != null) {
-				// 判断是否支持编译
-				if (scriptEngine instanceof Compilable) {
-					Compilable compilable = (Compilable) scriptEngine;
-					try {
-						scriptObject = compilable.compile(script);
-					} catch (Exception e) {
-						throw new MagicAPIException(String.format("编译%s出错", engine), e);
-					}
-				} else {
-					scriptObject = new UnCompileScript(script, scriptEngine);
-				}
-				COMPILE_CACHE.put("default", key, scriptObject, -1);
-			}
-		}
-		return scriptObject;
-	}
-
 	/**
 	 * 执行脚本
 	 */
 	public static Object executeScript(String script, MagicScriptContext context) {
-		SimpleScriptContext simpleScriptContext = new SimpleScriptContext();
-		simpleScriptContext.setAttribute(MagicScript.CONTEXT_ROOT, context, ScriptContext.ENGINE_SCOPE);
+		script = (context instanceof MagicScriptDebugContext ? MagicScript.DEBUG_MARK : "") + script;
+		MagicScript magicScript = MagicScript.create(script, null);
 		// 执行脚本
-		try {
-			return compile("MagicScript", (context instanceof MagicScriptDebugContext ? DEBUG_MARK : "") + script).eval(simpleScriptContext);
-		} catch (ScriptException e) {
-			throw new MagicAPIException(e.getMessage(), e);
-		} finally {
-			MagicScriptContext.remove();
-		}
+		return magicScript.execute(context);
 	}
 
 	/**