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. ThisScriptEngine
implementation is heavily adapted from theGroovyScriptEngineImpl
to 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 String
COLLECTED_BOUND_VARS_MAP_VARNAME
Name of variable that holds local variables to be globally bound if "interpreter mode" is enabled withInterpreterModeGroovyCustomizer
.static ThreadLocal<Map<String,Object>>
COMPILE_OPTIONS
static String
COMPILE_OPTIONS_VAR_TYPES
An "internal" key for sandboxing the script engine - technically not for public use.static String
KEY_REFERENCE_TYPE
The attribute key (passed as a binding on the context) for how to cache scripts.static String
REFERENCE_TYPE_HARD
A value to theKEY_REFERENCE_TYPE
that makes the evaluated script available in the cache for the life of the JVM.static String
REFERENCE_TYPE_PHANTOM
A value to theKEY_REFERENCE_TYPE
that immediately garbage collects the script after evaluation.static String
REFERENCE_TYPE_SOFT
A value to theKEY_REFERENCE_TYPE
that retains the script until memory is "low" and therefore should be reclaimed before anOutOfMemoryError
occurs.static String
REFERENCE_TYPE_WEAK
A value to theKEY_REFERENCE_TYPE
that 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 CompiledScript
compile(Reader reader)
CompiledScript
compile(String scriptSource)
Bindings
createBindings()
Create bindings to be used by thisScriptEngine
.Object
eval(Reader reader, ScriptContext context)
Object
eval(String script, ScriptContext context)
Traversal.Admin
eval(Bytecode bytecode, Bindings bindings, String traversalSource)
double
getClassCacheAverageLoadPenalty()
Gets the average time spent compiling new scripts.long
getClassCacheEstimatedSize()
Gets the estimated size of the class cache for compiled scripts.long
getClassCacheEvictionCount()
Gets the number of times a script compiled to a class has been evicted from the cache.long
getClassCacheEvictionWeight()
Gets the sum of the weights of evicted entries from the class cache.long
getClassCacheHitCount()
Gets the number of times cache look up for a compiled script returned a cached value.double
getClassCacheHitRate()
Gets the hit rate of the class cache.long
getClassCacheLoadCount()
Gets the total number of times the cache lookup method attempted to compile new scripts.long
getClassCacheLoadFailureCount()
Gets the total number of times the cache lookup method failed to compile a new script.double
getClassCacheLoadFailureRate()
Gets the ratio of script compilation attempts that failed.long
getClassCacheLoadSuccessCount()
Gets the total number of times the cache lookup method succeeded to compile a new script.long
getClassCacheLongRunCompilationCount()
Gets the number of compilations that extended beyond theexpectedCompilationTime
.long
getClassCacheMissCount()
Gets the total number of times the cache lookup method returned a newly compiled script.double
getClassCacheMissRate()
Gets the ratio of script compilation attempts that were misses.long
getClassCacheRequestCount()
Gets the total number of times the cache lookup method returned a cached or uncached value.long
getClassCacheTotalLoadTime()
Gets the total number of nanoseconds that the cache spent compiling scripts.GremlinScriptEngineFactory
getFactory()
<T> T
getInterface(Class<T> clazz)
<T> T
getInterface(Object thiz, Class<T> clazz)
protected ClassLoader
getParentLoader()
Set
getPlugins()
Get the list of loaded plugins.protected ScriptContext
getScriptContext(Bindings nn)
Creates theScriptContext
using aGremlinScriptContext
which avoids a significant amount of additional object creation on script evaluation.Object
invokeFunction(String name, Object... args)
Object
invokeMethod(Object thiz, String name, Object... args)
void
reset()
Resets the entireGremlinGroovyScriptEngine
by 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_TYPE
that 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_TYPE
that 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_TYPE
that retains the script until memory is "low" and therefore should be reclaimed before anOutOfMemoryError
occurs.- See Also:
- Constant Field Values
-
REFERENCE_TYPE_HARD
public static final String REFERENCE_TYPE_HARD
A value to theKEY_REFERENCE_TYPE
that 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:GremlinScriptEngine
EvaluatesTraversal
Bytecode
with the specifiedBindings
. TheseBindings
supplied to this method will be merged with global engine bindings and override them where keys match.- Specified by:
eval
in interfaceGremlinScriptEngine
- Throws:
ScriptException
-
reset
public void reset()
Resets the entireGremlinGroovyScriptEngine
by clearing script caches, recreating the classloader, clearing bindings.
-
getScriptContext
protected ScriptContext getScriptContext(Bindings nn)
Creates theScriptContext
using aGremlinScriptContext
which avoids a significant amount of additional object creation on script evaluation.- Overrides:
getScriptContext
in classAbstractScriptEngine
-
eval
public Object eval(Reader reader, ScriptContext context) throws ScriptException
- Specified by:
eval
in interfaceScriptEngine
- Overrides:
eval
in classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
- Throws:
ScriptException
-
eval
public Object eval(String script, ScriptContext context) throws ScriptException
- Specified by:
eval
in interfaceScriptEngine
- Overrides:
eval
in classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
- Throws:
ScriptException
-
createBindings
public Bindings createBindings()
Create bindings to be used by thisScriptEngine
. In this case,SimpleBindings
are returned.- Specified by:
createBindings
in interfaceScriptEngine
- Overrides:
createBindings
in classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
-
getFactory
public GremlinScriptEngineFactory getFactory()
- Specified by:
getFactory
in interfaceGremlinScriptEngine
- Specified by:
getFactory
in interfaceScriptEngine
- Overrides:
getFactory
in classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
-
compile
public CompiledScript compile(String scriptSource) throws ScriptException
- Specified by:
compile
in interfaceCompilable
- Overrides:
compile
in classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
- Throws:
ScriptException
-
compile
public CompiledScript compile(Reader reader) throws ScriptException
- Specified by:
compile
in interfaceCompilable
- Overrides:
compile
in classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
- Throws:
ScriptException
-
invokeFunction
public Object invokeFunction(String name, Object... args) throws ScriptException, NoSuchMethodException
- Specified by:
invokeFunction
in interfaceInvocable
- Overrides:
invokeFunction
in classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
- Throws:
ScriptException
NoSuchMethodException
-
invokeMethod
public Object invokeMethod(Object thiz, String name, Object... args) throws ScriptException, NoSuchMethodException
- Specified by:
invokeMethod
in interfaceInvocable
- Overrides:
invokeMethod
in classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
- Throws:
ScriptException
NoSuchMethodException
-
getInterface
public <T> T getInterface(Class<T> clazz)
- Specified by:
getInterface
in interfaceInvocable
- Overrides:
getInterface
in classorg.codehaus.groovy.jsr223.GroovyScriptEngineImpl
-
getInterface
public <T> T getInterface(Object thiz, Class<T> clazz)
- Specified by:
getInterface
in interfaceInvocable
- Overrides:
getInterface
in 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()
-
-