Package org.pirkaengine.core.script

Source Code of org.pirkaengine.core.script.SingleThreadScriptInvoker

package org.pirkaengine.core.script;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

import org.pirkaengine.core.expression.Function;


/**
* スクリプト実行クラス.
* <p>
* クラスローダを分割せず、スレッドも新たに立てずにスクリプトを実行する。
* トレードオフとして複数の言語を同時に実行することはできない
* </p>
* @author shuji.w6e
* @since 0.1.0
*/
public class SingleThreadScriptInvoker extends ScriptInvoker {

    private final ScriptEngine engine;
   
    /**
     * コンストラクタ
     * @param language 言語名
     * @throws ScriptEngineException
     */
    public SingleThreadScriptInvoker(String language) throws ScriptEngineException {
        ScriptEngineManager mng = new ScriptEngineManager();
        engine = mng.getEngineByName(language);
        if (engine == null) throw new ScriptEngineException("Cant find ScriptEngineManager: language=" + language);
    }

    @Override
    ScriptEngine getEngine() {
        return engine;
    }

    @Override
    public Object invoke(Function function, Object[] params) throws ScriptEngineException {
        try {
            return getInvocable(function).invokeFunction(function.name, params);
        } catch (ScriptException e) {
            throw new ScriptEngineException("function invoke error.", e);
        } catch (NoSuchMethodException e) {
            throw new ScriptEngineException("function invoke error.", e);
        }
    }

}
TOP

Related Classes of org.pirkaengine.core.script.SingleThreadScriptInvoker

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.