com.xiaoleilu.hutool.script.FullSupportScriptEngine Maven / Gradle / Ivy
package com.xiaoleilu.hutool.script;
import java.io.Reader;
import javax.script.Bindings;
import javax.script.Compilable;
import javax.script.CompiledScript;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import com.xiaoleilu.hutool.util.StrUtil;
/**
* 全功能引擎类,支持Compilable和Invocable
* @author Looly
*
*/
public class FullSupportScriptEngine implements ScriptEngine, Compilable, Invocable{
ScriptEngine engine;
public FullSupportScriptEngine(ScriptEngine engine) {
this.engine = engine;
}
public FullSupportScriptEngine(String nameOrExtOrMime) {
ScriptEngineManager manager = new ScriptEngineManager();
this.engine = manager.getEngineByName(nameOrExtOrMime);
if(null == this.engine){
manager.getEngineByExtension(nameOrExtOrMime);
}
if(null == this.engine){
manager.getEngineByMimeType(nameOrExtOrMime);
}
if(null == this.engine){
throw new NullPointerException(StrUtil.format("Script for [{}] not support !", nameOrExtOrMime));
}
}
//----------------------------------------------------------------------------------------------- Invocable
@Override
public Object invokeMethod(Object thiz, String name, Object... args) throws ScriptException, NoSuchMethodException {
return ((Invocable)engine).invokeMethod(thiz, name, args);
}
@Override
public Object invokeFunction(String name, Object... args) throws ScriptException, NoSuchMethodException {
return ((Invocable)engine).invokeFunction(name, args);
}
@Override
public T getInterface(Class clasz) {
return ((Invocable)engine).getInterface(clasz);
}
@Override
public T getInterface(Object thiz, Class clasz) {
return ((Invocable)engine).getInterface(thiz, clasz);
}
//----------------------------------------------------------------------------------------------- Compilable
@Override
public CompiledScript compile(String script) throws ScriptException {
return ((Compilable)engine).compile(script);
}
@Override
public CompiledScript compile(Reader script) throws ScriptException {
return ((Compilable)engine).compile(script);
}
//----------------------------------------------------------------------------------------------- ScriptEngine
@Override
public Object eval(String script, ScriptContext context) throws ScriptException {
return engine.eval(script, context);
}
@Override
public Object eval(Reader reader, ScriptContext context) throws ScriptException {
return engine.eval(reader, context);
}
@Override
public Object eval(String script) throws ScriptException {
return engine.eval(script);
}
@Override
public Object eval(Reader reader) throws ScriptException {
return engine.eval(reader);
}
@Override
public Object eval(String script, Bindings n) throws ScriptException {
return engine.eval(script, n);
}
@Override
public Object eval(Reader reader, Bindings n) throws ScriptException {
return engine.eval(reader, n);
}
@Override
public void put(String key, Object value) {
engine.put(key, value);
}
@Override
public Object get(String key) {
return engine.get(key);
}
@Override
public Bindings getBindings(int scope) {
return engine.getBindings(scope);
}
@Override
public void setBindings(Bindings bindings, int scope) {
engine.setBindings(bindings, scope);
}
@Override
public Bindings createBindings() {
return engine.createBindings();
}
@Override
public ScriptContext getContext() {
return engine.getContext();
}
@Override
public void setContext(ScriptContext context) {
engine.setContext(context);
}
@Override
public ScriptEngineFactory getFactory() {
return engine.getFactory();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy