package com.qianwen.core.tool.script.engine.ognl;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
import ognl.Ognl;
|
import org.apache.commons.codec.digest.DigestUtils;
|
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;
|
|
/* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/script/engine/ognl/OgnlEngine.class */
|
public class OgnlEngine extends ListenerSupportEngine {
|
protected final Logger logger = LoggerFactory.getLogger(getClass());
|
protected final Map<String, OgnlScriptContext> cache = new ConcurrentHashMap();
|
|
@Override // org.springblade.core.tool.script.engine.DynamicScriptEngine
|
public boolean compiled(String id) {
|
return this.cache.containsKey(id);
|
}
|
|
@Override // org.springblade.core.tool.script.engine.DynamicScriptEngine
|
public ScriptContext getContext(String id) {
|
return this.cache.get(id);
|
}
|
|
@Override // org.springblade.core.tool.script.engine.DynamicScriptEngine
|
public boolean remove(String id) {
|
return this.cache.remove(id) != null;
|
}
|
|
@Override // org.springblade.core.tool.script.engine.DynamicScriptEngine
|
public void init(String... contents) throws Exception {
|
}
|
|
@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 boolean compile(String id, String code) throws Exception {
|
if (this.logger.isDebugEnabled()) {
|
this.logger.debug("compile Ognl {} : {}", id, code);
|
}
|
this.cache.put(id, new OgnlScriptContext(id, DigestUtils.md5Hex(code), Ognl.parseExpression(code)));
|
return false;
|
}
|
|
@Override // org.springblade.core.tool.script.engine.DynamicScriptEngine
|
public ExecuteResult execute(String id, Map<String, Object> param) {
|
if (this.logger.isDebugEnabled()) {
|
this.logger.debug("execute Ognl {} : {}", id, param);
|
}
|
ExecuteResult result = new ExecuteResult();
|
long start = System.currentTimeMillis();
|
OgnlScriptContext scriptContext = this.cache.get(id);
|
try {
|
if (scriptContext != null) {
|
doListenerBefore(scriptContext);
|
scriptContext = this.cache.get(id);
|
Map<String, Object> param2 = new HashMap<>(param);
|
param2.putAll(getGlobalVariable());
|
Object obj = Ognl.getValue(scriptContext.getScript(), param2, param2);
|
result.setSuccess(true);
|
result.setResult(obj);
|
} else {
|
result.setSuccess(false);
|
result.setResult(null);
|
result.setMessage(String.format("Ognl: %s not found!", id));
|
}
|
long end = System.currentTimeMillis();
|
result.setUseTime(end - start);
|
} catch (Exception e) {
|
this.logger.error("execute SpEL error", e);
|
result.setException(e);
|
}
|
doListenerAfter(scriptContext, result);
|
return result;
|
}
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
/* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/script/engine/ognl/OgnlEngine$OgnlScriptContext.class */
|
public class OgnlScriptContext extends ScriptContext {
|
private Object script;
|
|
public OgnlScriptContext(String id, String md5, Object script) {
|
super(id, md5);
|
this.script = script;
|
}
|
|
public Object getScript() {
|
return this.script;
|
}
|
}
|
}
|