Class JexlScriptEngine
- All Implemented Interfaces:
Compilable,ScriptEngine
This implementation gives access to both ENGINE_SCOPE and GLOBAL_SCOPE bindings. When a JEXL script accesses a variable for read or write, this implementation checks first ENGINE and then GLOBAL scope. The first one found is used. If no variable is found, and the JEXL script is writing to a variable, it will be stored in the ENGINE scope.
The implementation also creates the "JEXL" script object as an instance of the
class JexlScriptEngine.JexlScriptObject for access to utility methods and variables.
- Since:
- 2.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classA factory that shares the JexlEngine instance between all JexlScriptEngine instances it creates.classImplements engine and engine context properties for use by JEXL scripts. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringReserved key for context (mandated by JSR-223).static final StringReserved key for JexlScriptObject.Fields inherited from class javax.script.AbstractScriptEngine
contextFields inherited from interface javax.script.ScriptEngine
ARGV, ENGINE, ENGINE_VERSION, FILENAME, LANGUAGE, LANGUAGE_VERSION, NAME -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor.JexlScriptEngine(ScriptEngineFactory scriptEngineFactory) JSR-223 compatibility constructor.JexlScriptEngine(JexlScriptEngineFactory scriptEngineFactory) Create a scripting engine using the supplied factory. -
Method Summary
Modifier and TypeMethodDescriptioneval(Reader reader, ScriptContext context) eval(String script, ScriptContext context) static voidsetInstance(JexlEngine engine) Sets the shared instance used for the script engine in the default factory.static voidsetPermissions(JexlPermissions permissions) Deprecated.3.6.3Methods inherited from class javax.script.AbstractScriptEngine
eval, eval, eval, eval, get, getBindings, getContext, getScriptContext, put, setBindings, setContext
-
Field Details
-
CONTEXT_KEY
Reserved key for context (mandated by JSR-223).- See Also:
-
JEXL_OBJECT_KEY
Reserved key for JexlScriptObject.- See Also:
-
-
Constructor Details
-
JexlScriptEngine
public JexlScriptEngine()Default constructor.Only intended for use when not using a factory. Sets the factory to
JexlScriptEngineFactory. -
JexlScriptEngine
JSR-223 compatibility constructor.- Parameters:
scriptEngineFactory- the factory which must be aJexlScriptEngineFactory
-
JexlScriptEngine
Create a scripting engine using the supplied factory.- Parameters:
scriptEngineFactory- the factory which creates this instance.- Throws:
NullPointerException- if factory is null
-
-
Method Details
-
setInstance
Sets the shared instance used for the script engine in the default factory.This should be called early enough to have an effect, ie before any
ScriptEngineManagerfeatures.To restore 3.2 script behavior:
JexlScriptEngine.setInstance(new JexlBuilder() .cache(512) .logger(LogFactory.getLog(JexlScriptEngine.class)) .permissions(JexlPermissions.UNRESTRICTED) .create());- Parameters:
engine- the JexlEngine instance to use- Since:
- 3.3
-
setPermissions
Deprecated.3.6.3Sets the permissions instance used to create the script engine.This method has been considered unsafe and is no longer supported. Use
JexlScriptEngineFactory.setDefaultPermissions(JexlPermissions)during initialization - before requesting an engine - to achieve the intended permission injection.- Parameters:
permissions- unused, method will throw
-
compile
- Specified by:
compilein interfaceCompilable- Throws:
ScriptException
-
compile
- Specified by:
compilein interfaceCompilable- Throws:
ScriptException
-
createBindings
- Specified by:
createBindingsin interfaceScriptEngine
-
eval
- Specified by:
evalin interfaceScriptEngine- Throws:
ScriptException
-
eval
- Specified by:
evalin interfaceScriptEngine- Throws:
ScriptException
-
getFactory
- Specified by:
getFactoryin interfaceScriptEngine
-