package com.qianwen.core.tool.script.engine.common; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.script.Bindings; import javax.script.Compilable; import javax.script.CompiledScript; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import javax.script.SimpleScriptContext; import org.apache.commons.codec.digest.DigestUtils; import javax.script.ScriptEngine; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.core.tool.script.engine.ExecuteResult; import com.qianwen.core.tool.script.engine.ListenerSupportEngine; import com.qianwen.core.tool.script.engine.ScriptContext; import com.qianwen.core.tool.script.engine.ScriptListener; /* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/script/engine/common/CommonScriptEngine.class */ public abstract class CommonScriptEngine extends ListenerSupportEngine { protected Compilable compilable; protected Bindings utilBindings; protected List scriptListeners; protected final Logger logger = LoggerFactory.getLogger(getClass()); protected Map scriptBase = new ConcurrentHashMap(); public abstract String getScriptName(); @Override // org.springblade.core.tool.script.engine.DynamicScriptEngine public boolean compiled(String id) { return this.scriptBase.containsKey(id); } @Override // org.springblade.core.tool.script.engine.DynamicScriptEngine public boolean remove(String id) { return this.scriptBase.remove(id) != null; } public CommonScriptEngine() { try { init(new String[0]); } catch (Exception e) { this.logger.warn("init {} error", getScriptName()); } } @Override // org.springblade.core.tool.script.engine.DynamicScriptEngine public void init(String... contents) throws Exception { ScriptEngineManager manager = new ScriptEngineManager(); //Compilable engineByName = manager.getEngineByName(getScriptName()); ScriptEngine engine = manager.getEngineByName(getScriptName()); this.compilable = (Compilable)engine; //this.compilable = engineByName; this.utilBindings = engine.createBindings(); for (String content : contents) { CompiledScript script = this.compilable.compile(content); script.eval(this.utilBindings); } } @Override // org.springblade.core.tool.script.engine.DynamicScriptEngine public ScriptContext getContext(String id) { return this.scriptBase.get(id); } @Override // org.springblade.core.tool.script.engine.DynamicScriptEngine public boolean compile(String id, String code) throws Exception { if (this.logger.isDebugEnabled()) { this.logger.debug("compile {} {} : {}", new Object[]{getScriptName(), id, code}); } if (this.compilable == null) { init(new String[0]); } CompiledScript compiledScript = this.compilable.compile(code); CommonScriptContext scriptContext = new CommonScriptContext(id, DigestUtils.md5Hex(code), compiledScript); this.scriptBase.put(id, scriptContext); return true; } @Override // org.springblade.core.tool.script.engine.ListenerSupportEngine, org.springblade.core.tool.script.engine.DynamicScriptEngine public void addListener(ScriptListener scriptListener) { if (this.scriptListeners == null) { this.scriptListeners = new LinkedList(); } this.scriptListeners.add(scriptListener); } @Override // org.springblade.core.tool.script.engine.DynamicScriptEngine public ExecuteResult execute(String id) { return execute(id, new HashMap()); } @Override // org.springblade.core.tool.script.engine.DynamicScriptEngine public ExecuteResult execute(String id, Map param) { long startTime = System.currentTimeMillis(); if (this.logger.isDebugEnabled()) { this.logger.debug("execute {} {} : {}", getScriptName(), id); } ExecuteResult result = new ExecuteResult(); CommonScriptContext scriptContext = this.scriptBase.get(id); try { if (scriptContext != null) { doListenerBefore(scriptContext); SimpleScriptContext simpleScriptContext = new SimpleScriptContext(); simpleScriptContext.setBindings(this.utilBindings, 200); for (Map.Entry entry : param.entrySet()) { simpleScriptContext.setAttribute(entry.getKey(), entry.getValue(), 100); } result.setResult(scriptContext.getScript().eval(simpleScriptContext)); result.setSuccess(true); } else { result.setSuccess(false); result.setResult(null); result.setMessage(String.format("script(%s): %s not found!", getScriptName(), id)); } } catch (ScriptException e) { result.setException(e); } result.setUseTime(System.currentTimeMillis() - startTime); doListenerAfter(scriptContext, result); return result; } @Override // org.springblade.core.tool.script.engine.ListenerSupportEngine, org.springblade.core.tool.script.engine.DynamicScriptEngine public void addGlobalVariable(Map vars) { this.utilBindings.putAll(vars); } /* JADX INFO: Access modifiers changed from: protected */ /* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/script/engine/common/CommonScriptEngine$CommonScriptContext.class */ public class CommonScriptContext extends ScriptContext { private CompiledScript script; public CommonScriptContext(String id, String md5, CompiledScript script) { super(id, md5); this.script = script; } public CompiledScript getScript() { return this.script; } } public Bindings getUtilBindings() { return this.utilBindings; } public void setUtilBindings(Bindings utilBindings) { this.utilBindings = utilBindings; } }