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:
newInstance
which returns an instance of InstanceTypenewFactory
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()
.
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 | Description |
---|---|
ScriptContext(java.lang.String name,
java.lang.Class<FactoryType> factoryClazz) |
Construct a context with the related instance and compiled classes.
|
public final java.lang.String name
public final java.lang.Class<FactoryType> factoryClazz
public final java.lang.Class<?> statefulFactoryClazz
public final java.lang.Class<?> instanceClazz
public ScriptContext(java.lang.String name, java.lang.Class<FactoryType> factoryClazz)