Class GremlinGroovyScriptEngine
- java.lang.Object
-
- javax.script.AbstractScriptEngine
-
- org.codehaus.groovy.jsr223.GroovyScriptEngineImpl
-
- org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine
-
- All Implemented Interfaces:
Compilable,Invocable,ScriptEngine,GremlinScriptEngine
public class GremlinGroovyScriptEngine extends org.codehaus.groovy.jsr223.GroovyScriptEngineImpl implements GremlinScriptEngine
Provides methods to compile and evaluate Gremlin scripts. Compiled scripts are stored in a managed cache to cut down on compilation times of future evaluations of the same script. ThisScriptEngineimplementation is heavily adapted from theGroovyScriptEngineImplto include some additional functionality.- Author:
- Marko A. Rodriguez (http://markorodriguez.com), Stephen Mallette (http://stephen.genoprime.com)
- See Also:
GremlinExecutor
-
-
Field Summary
Fields Modifier and Type Field Description static StringCOLLECTED_BOUND_VARS_MAP_VARNAMEName of variable that holds local variables to be globally bound if "interpreter mode" is enabled withInterpreterModeGroovyCustomizer.static ThreadLocal<Map<String,Object>>COMPILE_OPTIONSstatic StringCOMPILE_OPTIONS_VAR_TYPESAn "internal" key for sandboxing the script engine - technically not for public use.static StringKEY_REFERENCE_TYPEThe attribute key (passed as a binding on the context) for how to cache scripts.static StringREFERENCE_TYPE_HARDA value to theKEY_REFERENCE_TYPEthat makes the evaluated script available in the cache for the life of the JVM.static StringREFERENCE_TYPE_PHANTOMA value to theKEY_REFERENCE_TYPEthat immediately garbage collects the script after evaluation.static StringREFERENCE_TYPE_SOFTA value to theKEY_REFERENCE_TYPEthat retains the script until memory is "low" and therefore should be reclaimed before anOutOfMemoryErroroccurs.static StringREFERENCE_TYPE_WEAKA value to theKEY_REFERENCE_TYPEthat marks the script as one that can be garbage collected even when memory is abundant.-
Fields inherited from class javax.script.AbstractScriptEngine
context
-
Fields inherited from interface org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine
HIDDEN_G
-
Fields inherited from interface javax.script.ScriptEngine
ARGV, ENGINE, ENGINE_VERSION, FILENAME, LANGUAGE, LANGUAGE_VERSION, NAME
-
-
Constructor Summary
Constructors Constructor Description GremlinGroovyScriptEngine()Creates a new instance using noCustomizer.GremlinGroovyScriptEngine(Customizer... customizers)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CompiledScriptcompile(Reader reader)CompiledScriptcompile(String scriptSource)BindingscreateBindings()Create bindings to be used by thisScriptEngine.Objecteval(Reader reader, ScriptContext context)Objecteval(String script, ScriptContext context)Traversal.Admineval(Bytecode bytecode, Bindings bindings, String traversalSource)doublegetClassCacheAverageLoadPenalty()Gets the average time spent compiling new scripts.longgetClassCacheEstimatedSize()Gets the estimated size of the class cache for compiled scripts.longgetClassCacheEvictionCount()Gets the number of times a script compiled to a class has been evicted from the cache.longgetClassCacheEvictionWeight()Gets the sum of the weights of evicted entries from the class cache.longgetClassCacheHitCount()Gets the number of times cache look up for a compiled script returned a cached value.doublegetClassCacheHitRate()Gets the hit rate of the class cache.longgetClassCacheLoadCount()Gets the total number of times the cache lookup method attempted to compile new scripts.longgetClassCacheLoadFailureCount()Gets the total number of times the cache lookup method failed to compile a new script.doublegetClassCacheLoadFailureRate()Gets the ratio of script compilation attempts that failed.longgetClassCacheLoadSuccessCount()Gets the total number of times the cache lookup method succeeded to compile a new script.longgetClassCacheLongRunCompilationCount()Gets the number of compilations that extended beyond theexpectedCompilationTime.longgetClassCacheMissCount()Gets the total number of times the cache lookup method returned a newly compiled script.doublegetClassCacheMissRate()Gets the ratio of script compilation attempts that were misses.longgetClassCacheRequestCount()Gets the total number of times the cache lookup method returned a cached or uncached value.longgetClassCacheTotalLoadTime()Gets the total number of nanoseconds that the cache spent compiling scripts.GremlinScriptEngineFactorygetFactory()<T> TgetInterface(Class<T> clazz)<T> TgetInterface(Object thiz, Class<T> clazz)protected ClassLoadergetParentLoader()SetgetPlugins()Get the list of loaded plugins.protected ScriptContextgetScriptContext(Bindings nn)Creates theScriptContextusing aGremlinScriptContextwhich avoids a significant amount of additional object creation on script evaluation.ObjectinvokeFunction(String name, Object... args)ObjectinvokeMethod(Object thiz, String name, Object... args)voidreset()Resets the entireGremlinGroovyScriptEngineby clearing script caches, recreating the classloader, clearing bindings.-
Methods inherited from class org.codehaus.groovy.jsr223.GroovyScriptEngineImpl
getClassLoader, setClassLoader
-
Methods inherited from class javax.script.AbstractScriptEngine
eval, eval, eval, eval, get, getBindings, getContext, put, setBindings, setContext
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine
eval
-
Methods inherited from interface javax.script.ScriptEngine
eval, eval, eval, eval, get, getBindings, getContext, put, setBindings, setContext
-
-
-
-
Field Detail
-
COMPILE_OPTIONS_VAR_TYPES
public static final String COMPILE_OPTIONS_VAR_TYPES
An "internal" key for sandboxing the script engine - technically not for public use.- See Also:
- Constant Field Values
-
KEY_REFERENCE_TYPE
public static final String KEY_REFERENCE_TYPE
The attribute key (passed as a binding on the context) for how to cache scripts. The value must be one of the following:- See Also:
- Constant Field Values
-
REFERENCE_TYPE_PHANTOM
public static final String REFERENCE_TYPE_PHANTOM
A value to theKEY_REFERENCE_TYPEthat immediately garbage collects the script after evaluation.- See Also:
- Constant Field Values
-
REFERENCE_TYPE_WEAK
public static final String REFERENCE_TYPE_WEAK
A value to theKEY_REFERENCE_TYPEthat marks the script as one that can be garbage collected even when memory is abundant.- See Also:
- Constant Field Values
-
REFERENCE_TYPE_SOFT
public static final String REFERENCE_TYPE_SOFT
A value to theKEY_REFERENCE_TYPEthat retains the script until memory is "low" and therefore should be reclaimed before anOutOfMemoryErroroccurs.- See Also:
- Constant Field Values
-
REFERENCE_TYPE_HARD
public static final String REFERENCE_TYPE_HARD
A value to theKEY_REFERENCE_TYPEthat makes the evaluated script available in the cache for the life of the JVM.- See Also:
- Constant Field Values
-
COLLECTED_BOUND_VARS_MAP_VARNAME
public static final String COLLECTED_BOUND_VARS_MAP_VARNAME
Name of variable that holds local variables to be globally bound if "interpreter mode" is enabled withInterpreterModeGroovyCustomizer.- See Also:
- Constant Field Values
-
COMPILE_OPTIONS
public static final ThreadLocal<Map<String,Object>> COMPILE_OPTIONS
-
-
Constructor Detail
-
GremlinGroovyScriptEngine
public GremlinGroovyScriptEngine()
Creates a new instance using noCustomizer.
-
GremlinGroovyScriptEngine
public GremlinGroovyScriptEngine(Customizer... customizers)
-
-
Method Detail
-
getPlugins
public Set getPlugins()
Get the list of loaded plugins.
-
eval
public Traversal.Admin eval(Bytecode bytecode, Bindings bindings, String traversalSource) throws ScriptException
Description copied from interface:GremlinScriptEngineEvaluatesTraversalBytecodewith the specifiedBindings. TheseBindingssupplied to this method will be merged with global engine bindings and override them where keys match.- Specified by:
evalin interfaceGremlinScriptEngine- Throws:
ScriptException
-
reset
public void reset()
Resets the entireGremlinGroovyScriptEngineby clearing script caches, recreating the classloader, clearing bindings.
-
getScriptContext
protected ScriptContext getScriptContext(Bindings nn)
Creates theScriptContextusing aGremlinScriptContextwhich avoids a significant amount of additional object creation on script evaluation.- Overrides:
getScriptContextin classAbstractScriptEngine
-
eval
public Object eval(Reader reader, ScriptContext context) throws ScriptException
- Specified by:
evalin interfaceScriptEngine- Overrides:
evalin classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl- Throws:
ScriptException
-
eval
public Object eval(String script, ScriptContext context) throws ScriptException
- Specified by:
evalin interfaceScriptEngine- Overrides:
evalin classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl- Throws:
ScriptException
-
createBindings
public Bindings createBindings()
Create bindings to be used by thisScriptEngine. In this case,SimpleBindingsare returned.- Specified by:
createBindingsin interfaceScriptEngine- Overrides:
createBindingsin classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
-
getFactory
public GremlinScriptEngineFactory getFactory()
- Specified by:
getFactoryin interfaceGremlinScriptEngine- Specified by:
getFactoryin interfaceScriptEngine- Overrides:
getFactoryin classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
-
compile
public CompiledScript compile(String scriptSource) throws ScriptException
- Specified by:
compilein interfaceCompilable- Overrides:
compilein classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl- Throws:
ScriptException
-
compile
public CompiledScript compile(Reader reader) throws ScriptException
- Specified by:
compilein interfaceCompilable- Overrides:
compilein classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl- Throws:
ScriptException
-
invokeFunction
public Object invokeFunction(String name, Object... args) throws ScriptException, NoSuchMethodException
- Specified by:
invokeFunctionin interfaceInvocable- Overrides:
invokeFunctionin classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl- Throws:
ScriptExceptionNoSuchMethodException
-
invokeMethod
public Object invokeMethod(Object thiz, String name, Object... args) throws ScriptException, NoSuchMethodException
- Specified by:
invokeMethodin interfaceInvocable- Overrides:
invokeMethodin classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl- Throws:
ScriptExceptionNoSuchMethodException
-
getInterface
public <T> T getInterface(Class<T> clazz)
- Specified by:
getInterfacein interfaceInvocable- Overrides:
getInterfacein classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
-
getInterface
public <T> T getInterface(Object thiz, Class<T> clazz)
- Specified by:
getInterfacein interfaceInvocable- Overrides:
getInterfacein classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
-
getClassCacheLongRunCompilationCount
public long getClassCacheLongRunCompilationCount()
Gets the number of compilations that extended beyond theexpectedCompilationTime.
-
getClassCacheEstimatedSize
public long getClassCacheEstimatedSize()
Gets the estimated size of the class cache for compiled scripts.
-
getClassCacheAverageLoadPenalty
public double getClassCacheAverageLoadPenalty()
Gets the average time spent compiling new scripts.
-
getClassCacheEvictionCount
public long getClassCacheEvictionCount()
Gets the number of times a script compiled to a class has been evicted from the cache.
-
getClassCacheEvictionWeight
public long getClassCacheEvictionWeight()
Gets the sum of the weights of evicted entries from the class cache.
-
getClassCacheHitCount
public long getClassCacheHitCount()
Gets the number of times cache look up for a compiled script returned a cached value.
-
getClassCacheHitRate
public double getClassCacheHitRate()
Gets the hit rate of the class cache.
-
getClassCacheLoadCount
public long getClassCacheLoadCount()
Gets the total number of times the cache lookup method attempted to compile new scripts.
-
getClassCacheLoadFailureCount
public long getClassCacheLoadFailureCount()
Gets the total number of times the cache lookup method failed to compile a new script.
-
getClassCacheLoadFailureRate
public double getClassCacheLoadFailureRate()
Gets the ratio of script compilation attempts that failed.
-
getClassCacheLoadSuccessCount
public long getClassCacheLoadSuccessCount()
Gets the total number of times the cache lookup method succeeded to compile a new script.
-
getClassCacheMissCount
public long getClassCacheMissCount()
Gets the total number of times the cache lookup method returned a newly compiled script.
-
getClassCacheMissRate
public double getClassCacheMissRate()
Gets the ratio of script compilation attempts that were misses.
-
getClassCacheRequestCount
public long getClassCacheRequestCount()
Gets the total number of times the cache lookup method returned a cached or uncached value.
-
getClassCacheTotalLoadTime
public long getClassCacheTotalLoadTime()
Gets the total number of nanoseconds that the cache spent compiling scripts.
-
getParentLoader
protected ClassLoader getParentLoader()
-
-