Package com.thinkaurelius.faunus.tinkerpop.gremlin

Source Code of com.thinkaurelius.faunus.tinkerpop.gremlin.FaunusGremlinScriptEngine

package com.thinkaurelius.faunus.tinkerpop.gremlin;

import com.tinkerpop.gremlin.groovy.jsr223.DefaultImportCustomizerProvider;
import com.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine;
import groovy.lang.GroovyClassLoader;
import org.codehaus.groovy.control.CompilerConfiguration;
import org.codehaus.groovy.control.customizers.ImportCustomizer;

import javax.script.ScriptContext;
import java.io.IOException;

/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public class FaunusGremlinScriptEngine extends GremlinGroovyScriptEngine {

    private static final String DOT_STAR = ".*";
    private static final String EMPTY_STRING = "";

    public FaunusGremlinScriptEngine() {
        super();
        FaunusGremlin.load();
        final CompilerConfiguration conf = new CompilerConfiguration();
        conf.addCompilationCustomizers(FaunusGremlinScriptEngine.getImportCustomizer());
        this.loader = new GroovyClassLoader(getParentLoader(), conf);
        try {
            this.setBindings(Imports.getEvaluateBindings(), ScriptContext.GLOBAL_SCOPE);
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }

    public static ImportCustomizer getImportCustomizer() {
        final ImportCustomizer ic = new DefaultImportCustomizerProvider().getImportCustomizer();
        for (final String imp : Imports.getImports()) {
            ic.addStarImports(imp.replace(DOT_STAR, EMPTY_STRING));
        }
        return ic;
    }
}
TOP

Related Classes of com.thinkaurelius.faunus.tinkerpop.gremlin.FaunusGremlinScriptEngine

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.