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
FieldsModifier and TypeFieldDescriptionfinal boolean
Determines if the script can be stored as part of the cluster state.final TimeValue
The default expiration of a script in the cache for the context, if not overriddenfinal int
The default size of the cache for the context if not overriddenfinal boolean
Is 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 String
A 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
-