Class ScriptContext<FactoryType>
public final class ScriptContext<FactoryType>
extends java.lang.Object
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 org.elasticsearch.common.unit.TimeValue
cacheExpireDefault
The default expiration of a script in the cache for the context, if not overriddenint
cacheSizeDefault
The default size of the cache for the context if not overriddenjava.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.org.elasticsearch.common.collect.Tuple<java.lang.Integer,org.elasticsearch.common.unit.TimeValue>
maxCompilationRateDefault
The default max compilation rate for scripts in this context.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 with defaults for cacheSizeDefault, cacheExpireDefault and maxCompilationRateDefaultScriptContext(java.lang.String name, java.lang.Class<FactoryType> factoryClazz, int cacheSizeDefault, org.elasticsearch.common.unit.TimeValue cacheExpireDefault, org.elasticsearch.common.collect.Tuple<java.lang.Integer,org.elasticsearch.common.unit.TimeValue> maxCompilationRateDefault)
Construct a context with the related instance and compiled classes with caller provided cache defaults -
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 nameA unique identifier for this context. -
factoryClazz
A factory class for constructing script or stateful factory instances. -
statefulFactoryClazz
public final java.lang.Class<?> statefulFactoryClazzA factory class for construct script instances. -
instanceClazz
public final java.lang.Class<?> instanceClazzA 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
public final org.elasticsearch.common.unit.TimeValue cacheExpireDefaultThe default expiration of a script in the cache for the context, if not overridden -
maxCompilationRateDefault
public final org.elasticsearch.common.collect.Tuple<java.lang.Integer,org.elasticsearch.common.unit.TimeValue> maxCompilationRateDefaultThe default max compilation rate for scripts in this context. Script compilation is throttled if this is exceeded
-
-
Constructor Details
-
ScriptContext
public ScriptContext(java.lang.String name, java.lang.Class<FactoryType> factoryClazz, int cacheSizeDefault, org.elasticsearch.common.unit.TimeValue cacheExpireDefault, org.elasticsearch.common.collect.Tuple<java.lang.Integer,org.elasticsearch.common.unit.TimeValue> maxCompilationRateDefault)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 maxCompilationRateDefault
-