Class ScriptContext<FactoryType>

java.lang.Object
org.elasticsearch.script.ScriptContext<FactoryType>

public final class ScriptContext<FactoryType>
extends java.lang.Object
The information necessary to compile and run a script. A ScriptContext contains the information related to a single use case and the interfaces and methods necessary for a ScriptEngine to implement.

There are at least two (and optionally a third) related classes which must be defined.

The InstanceType is a class which users of the script api call to execute a script. It may be stateful. Instances of the InstanceType may be executed multiple times by a caller with different arguments. This class must have an abstract method named execute which ScriptEngine implementations will define.

The FactoryType is a factory class returned by the ScriptService when compiling a script. This class must be stateless so it is cacheable by the ScriptService. It must have one of the following:

  • An abstract method named newInstance which returns an instance of InstanceType
  • An abstract method named newFactory which returns an instance of StatefulFactoryType

The StatefulFactoryType is an optional class which allows a stateful factory from the stateless factory type required by the ScriptService. If defined, the StatefulFactoryType must have a method named newInstance which returns an instance of InstanceType.

Both the FactoryType and StatefulFactoryType may have abstract methods to indicate whether a variable is used in a script. These method should return a boolean and their name should start with needs, followed by the variable name, with the first letter uppercased. For example, to check if a variable doc is used, a method boolean needsDoc() should be added. If the variable name starts with an underscore, for example, _score, the needs method would be boolean needs_score().

  • Field Summary

    Fields 
    Modifier and Type Field Description
    java.lang.Class<FactoryType> factoryClazz
    A factory class for constructing script or stateful factory instances.
    java.lang.Class<?> instanceClazz
    A class that is an instance of a script.
    java.lang.String name
    A unique identifier for this context.
    java.lang.Class<?> statefulFactoryClazz
    A factory class for construct script instances.
  • Constructor Summary

    Constructors 
    Constructor Description
    ScriptContext​(java.lang.String name, java.lang.Class<FactoryType> factoryClazz)
    Construct a context with the related instance and compiled classes.
  • Method Summary

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • name

      public final java.lang.String name
      A unique identifier for this context.
    • factoryClazz

      public final java.lang.Class<FactoryType> factoryClazz
      A factory class for constructing script or stateful factory instances.
    • statefulFactoryClazz

      public final java.lang.Class<?> statefulFactoryClazz
      A factory class for construct script instances.
    • instanceClazz

      public final java.lang.Class<?> instanceClazz
      A class that is an instance of a script.
  • Constructor Details

    • ScriptContext

      public ScriptContext​(java.lang.String name, java.lang.Class<FactoryType> factoryClazz)
      Construct a context with the related instance and compiled classes.