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
newInstancewhich returns an instance of InstanceType - An abstract method named
newFactorywhich 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
FieldsModifier and TypeFieldDescriptionfinal booleanDetermines if the script can be stored as part of the cluster state.final TimeValueThe default expiration of a script in the cache for the context, if not overriddenfinal intThe default size of the cache for the context if not overriddenfinal booleanIs compilation rate limiting enabled for this context?The default compilation rate limit for contexts with compilation rate limiting enabledfinal Class<FactoryType> A factory class for constructing script or stateful factory instances.final Class<?> A class that is an instance of a script.final StringA unique identifier for this context.final Class<?> A factory class for construct script instances. -
Constructor Summary
ConstructorsConstructorDescriptionScriptContext(String name, Class<FactoryType> factoryClazz) Construct a context with the related instance and compiled classes with defaults for cacheSizeDefault, cacheExpireDefault and compilationRateLimited and allow scripts of this context to be stored scriptsScriptContext(String name, Class<FactoryType> factoryClazz, int cacheSizeDefault, TimeValue cacheExpireDefault, boolean compilationRateLimited, boolean allowStoredScript) Construct a context with the related instance and compiled classes with caller provided cache defaults -
Method Summary
-
Field Details
-
DEFAULT_COMPILATION_RATE_LIMIT
The default compilation rate limit for contexts with compilation rate limiting enabled -
name
A unique identifier for this context. -
factoryClazz
A factory class for constructing script or stateful factory instances. -
statefulFactoryClazz
A factory class for construct script instances. -
instanceClazz
A class that is an instance of a script. -
cacheSizeDefault
public final int cacheSizeDefaultThe default size of the cache for the context if not overridden -
cacheExpireDefault
The default expiration of a script in the cache for the context, if not overridden -
compilationRateLimited
public final boolean compilationRateLimitedIs compilation rate limiting enabled for this context? -
allowStoredScript
public final boolean allowStoredScriptDetermines if the script can be stored as part of the cluster state.
-
-
Constructor Details
-
ScriptContext
public ScriptContext(String name, Class<FactoryType> factoryClazz, int cacheSizeDefault, TimeValue cacheExpireDefault, boolean compilationRateLimited, boolean allowStoredScript) Construct a context with the related instance and compiled classes with caller provided cache defaults -
ScriptContext
Construct a context with the related instance and compiled classes with defaults for cacheSizeDefault, cacheExpireDefault and compilationRateLimited and allow scripts of this context to be stored scripts
-