All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.tenmg.dsl.eval.BeanshellEngine Maven / Gradle / Ivy

Go to download

动态脚本语言(DSL,Dynamic Script Language)解析框架。可广泛用于动态 SQL(即 DSQL)等场景的解析,DSQL 也是目前 DSL 最成功的应用领域,具体包括 Flink SQL(如 Clink)、Spark SQL(如 sparktool)和 JDBC(如 sqltool)。

The newest version!
package cn.tenmg.dsl.eval;

import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import bsh.Interpreter;
import cn.tenmg.dsl.EvalEngine;

/**
 * 基于 Beanshell 的 Java 代码执行引擎
 * 
 * @author June [email protected]
 * 
 * @since 1.4.0
 */
public class BeanshellEngine implements EvalEngine {

	private ThreadLocal interpreterHolder = new ThreadLocal();

	@Override
	public void open() {
		interpreterHolder.set(new Interpreter());
	}

	@Override
	public void put(Map params) throws Exception {
		Entry entry;
		Interpreter interpreter = interpreterHolder.get();
		for (Iterator> it = params.entrySet().iterator(); it.hasNext();) {
			entry = it.next();
			interpreter.set(entry.getKey(), entry.getValue());
		}
	}

	@Override
	public Object eval(String code) throws Exception {
		return interpreterHolder.get().eval(code);
	}

	@Override
	public void close() {
		interpreterHolder.remove();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy