org.apache.tinkerpop.gremlin.groovy.jsr223

## 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. This `ScriptEngine` implementation is heavily adapted from the `GroovyScriptEngineImpl` 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 and Description
    --- | ---
    `static String` | `COLLECTED_BOUND_VARS_MAP_VARNAME` Name of variable that holds local variables to be globally bound if "interpreter mode" is enabled with `InterpreterModeGroovyCustomizer`.
    `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 the `KEY_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 the `KEY_REFERENCE_TYPE` that immediately garbage collects the script after evaluation.
    `static String` | `REFERENCE_TYPE_SOFT` A value to the `KEY_REFERENCE_TYPE` that retains the script until memory is "low" and therefore should be reclaimed before an `OutOfMemoryError` occurs.
    `static String` | `REFERENCE_TYPE_WEAK` A value to the `KEY_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 and Description
    `GremlinGroovyScriptEngine()` Creates a new instance using no `Customizer`.
    `GremlinGroovyScriptEngine(Customizer... customizers)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `CompiledScript` | `compile(Reader reader)`
    `CompiledScript` | `compile(String scriptSource)`
    `Bindings` | `createBindings()` Create bindings to be used by this `ScriptEngine`.
    `Traversal.Admin` | `eval(Bytecode bytecode, Bindings bindings, String traversalSource)` Evaluates `Traversal` `Bytecode` with the specified `Bindings`.
    `Object` | `eval(Reader reader, ScriptContext context)`
    `Object` | `eval(String script, ScriptContext context)`
    `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 the `expectedCompilationTime`.
    `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 the `ScriptContext` using a `GremlinScriptContext` 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 entire `GremlinGroovyScriptEngine` 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:
      - `REFERENCE_TYPE_HARD`
      - `REFERENCE_TYPE_SOFT`
      - `REFERENCE_TYPE_WEAK`
      - `REFERENCE_TYPE_PHANTOM`
      See Also:
        Constant Field Values

    - #### REFERENCE_TYPE_PHANTOM

          public static final String REFERENCE_TYPE_PHANTOM

      A value to the `KEY_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 the `KEY_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 the `KEY_REFERENCE_TYPE` that retains the script until memory is "low" and therefore should be reclaimed before an `OutOfMemoryError` occurs.
      See Also:
        Constant Field Values

    - #### REFERENCE_TYPE_HARD

          public static final String REFERENCE_TYPE_HARD

      A value to the `KEY_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 with `InterpreterModeGroovyCustomizer`.
      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 no `Customizer`.

    - #### 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`
      Evaluates `Traversal` `Bytecode` with the specified `Bindings`. These `Bindings` supplied to this method will be merged with global engine bindings and override them where keys match.
      Specified by:
        `eval` in interface `GremlinScriptEngine`
      Throws:
        `ScriptException`

    - #### reset

          public void reset()

      Resets the entire `GremlinGroovyScriptEngine` by clearing script caches, recreating the classloader, clearing bindings.

    - #### getScriptContext

          protected ScriptContext getScriptContext(Bindings nn)

      Creates the `ScriptContext` using a `GremlinScriptContext` which avoids a significant amount of additional object creation on script evaluation.
      Overrides:
        `getScriptContext` in class `AbstractScriptEngine`

    - #### eval

          public Object eval(Reader reader,
                             ScriptContext context)
                      throws ScriptException

      Specified by:
        `eval` in interface `ScriptEngine`
      Overrides:
        `eval` in class `org.codehaus.groovy.jsr223.GroovyScriptEngineImpl`
      Throws:
        `ScriptException`

    - #### eval

          public Object eval(String script,
                             ScriptContext context)
                      throws ScriptException

      Specified by:
        `eval` in interface `ScriptEngine`
      Overrides:
        `eval` in class `org.codehaus.groovy.jsr223.GroovyScriptEngineImpl`
      Throws:
        `ScriptException`

    - #### createBindings

          public Bindings createBindings()

      Create bindings to be used by this `ScriptEngine`. In this case, `SimpleBindings` are returned.
      Specified by:
        `createBindings` in interface `ScriptEngine`
      Overrides:
        `createBindings` in class `org.codehaus.groovy.jsr223.GroovyScriptEngineImpl`

    - #### getFactory

          public GremlinScriptEngineFactory getFactory()

      Specified by:
        `getFactory` in interface `ScriptEngine`
      Specified by:
        `getFactory` in interface `GremlinScriptEngine`
      Overrides:
        `getFactory` in class `org.codehaus.groovy.jsr223.GroovyScriptEngineImpl`

    - #### compile

          public CompiledScript compile(String scriptSource)
                                 throws ScriptException

      Specified by:
        `compile` in interface `Compilable`
      Overrides:
        `compile` in class `org.codehaus.groovy.jsr223.GroovyScriptEngineImpl`
      Throws:
        `ScriptException`

    - #### compile

          public CompiledScript compile(Reader reader)
                                 throws ScriptException

      Specified by:
        `compile` in interface `Compilable`
      Overrides:
        `compile` in class `org.codehaus.groovy.jsr223.GroovyScriptEngineImpl`
      Throws:
        `ScriptException`

    - #### invokeFunction

          public Object invokeFunction(String name,
                                       Object... args)
                                throws ScriptException,
                                       NoSuchMethodException

      Specified by:
        `invokeFunction` in interface `Invocable`
      Overrides:
        `invokeFunction` in class `org.codehaus.groovy.jsr223.GroovyScriptEngineImpl`
      Throws:
        `ScriptException`
        `NoSuchMethodException`

    - #### invokeMethod

          public Object invokeMethod(Object thiz,
                                     String name,
                                     Object... args)
                              throws ScriptException,
                                     NoSuchMethodException

      Specified by:
        `invokeMethod` in interface `Invocable`
      Overrides:
        `invokeMethod` in class `org.codehaus.groovy.jsr223.GroovyScriptEngineImpl`
      Throws:
        `ScriptException`
        `NoSuchMethodException`

    - #### getInterface

          public <T> T getInterface(Class<T> clazz)

      Specified by:
        `getInterface` in interface `Invocable`
      Overrides:
        `getInterface` in class `org.codehaus.groovy.jsr223.GroovyScriptEngineImpl`

    - #### getInterface

          public <T> T getInterface(Object thiz,
                                    Class<T> clazz)

      Specified by:
        `getInterface` in interface `Invocable`
      Overrides:
        `getInterface` in class `org.codehaus.groovy.jsr223.GroovyScriptEngineImpl`

    - #### getClassCacheLongRunCompilationCount

          public long getClassCacheLongRunCompilationCount()

      Gets the number of compilations that extended beyond the `expectedCompilationTime`.

    - #### 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()

Copyright © 2013–2022 Apache Software Foundation. All rights reserved.