Package delight.rhinosandox.internal
Class RhinoSandboxImpl
- java.lang.Object
-
- delight.rhinosandox.internal.RhinoSandboxImpl
-
- All Implemented Interfaces:
RhinoSandbox
public class RhinoSandboxImpl extends java.lang.Object implements RhinoSandbox
-
-
Field Summary
Fields Modifier and Type Field Description private SafeClassShutter
classShutter
private SafeContext
contextFactory
private static java.lang.Object
ctxFactoryLock
private org.mozilla.javascript.ScriptableObject
globalScope
private java.util.Map<java.lang.String,java.lang.Object>
inScope
private int
instructionLimit
private long
maxDuration
private org.mozilla.javascript.ScriptableObject
safeScope
private boolean
sealScope
private boolean
useSafeStandardObjects
-
Constructor Summary
Constructors Constructor Description RhinoSandboxImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RhinoSandbox
allow(java.lang.Class<?> clazz)
Will allow access to this class in Rhino scripts.void
assertContextFactory()
see https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Scopes_and_Contextsvoid
assertSafeScope(org.mozilla.javascript.Context context)
java.lang.Object
callFunction(org.mozilla.javascript.NativeFunction function, java.lang.Object[] args)
executes a javascript functionjava.lang.Object
eval(java.lang.String sourceName, java.io.Reader js)
Evaluate a script with its own scope.java.lang.Object
eval(java.lang.String sourceName, java.io.Reader js, java.util.Map<java.lang.String,java.lang.Object> variables)
Evaluate a script with its own scope.java.lang.Object
eval(java.lang.String sourceName, java.lang.String js)
Evaluate a script with its own scope.java.lang.Object
eval(java.lang.String sourceName, java.lang.String js, java.util.Map<java.lang.String,java.lang.Object> variables)
Evaluate a script with its own scope.java.lang.Object
evalWithGlobalScope(java.lang.String sourceName, java.io.Reader js)
Evaluate the given script with the global scope.java.lang.Object
evalWithGlobalScope(java.lang.String sourceName, java.lang.String js)
Evaluate the given script with the global scope.RhinoSandbox
inject(java.lang.Class<org.mozilla.javascript.ScriptableObject> clazz)
Will make this class available to instantiate in Rhino scripts.RhinoSandbox
inject(java.lang.String variableName, java.lang.Object object)
Will add a global variable available to all scripts executed with this sandbox.private void
injectInt(java.lang.String variableName, java.lang.Object object)
RhinoSandbox
setInstructionLimit(int limit)
Sets the maximum instructions allowed for script execution.RhinoSandbox
setMaxDuration(int limitInMs)
Sets the maximum allowed duration for scripts.RhinoSandbox
setUseSafeStandardObjects(boolean useSafeStandardObjects)
If .initSafeStandardObjects should be used.RhinoSandbox
setUseSealedScope(boolean value)
If the global scope should be sealed (default: true).
-
-
-
Field Detail
-
contextFactory
private SafeContext contextFactory
-
globalScope
private org.mozilla.javascript.ScriptableObject globalScope
-
safeScope
private org.mozilla.javascript.ScriptableObject safeScope
-
instructionLimit
private int instructionLimit
-
maxDuration
private long maxDuration
-
useSafeStandardObjects
private boolean useSafeStandardObjects
-
sealScope
private boolean sealScope
-
inScope
private final java.util.Map<java.lang.String,java.lang.Object> inScope
-
classShutter
private SafeClassShutter classShutter
-
ctxFactoryLock
private static final java.lang.Object ctxFactoryLock
-
-
Method Detail
-
assertContextFactory
public void assertContextFactory()
see https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Scopes_and_Contexts
-
assertSafeScope
public void assertSafeScope(org.mozilla.javascript.Context context)
-
evalWithGlobalScope
public java.lang.Object evalWithGlobalScope(java.lang.String sourceName, java.lang.String js)
Description copied from interface:RhinoSandbox
Evaluate the given script with the global scope. That is all new global variables written will be available to all other scripts.- Specified by:
evalWithGlobalScope
in interfaceRhinoSandbox
-
evalWithGlobalScope
public java.lang.Object evalWithGlobalScope(java.lang.String sourceName, java.io.Reader js) throws java.io.IOException
Description copied from interface:RhinoSandbox
Evaluate the given script with the global scope. That is all new global variables written will be available to all other scripts.- Specified by:
evalWithGlobalScope
in interfaceRhinoSandbox
- Throws:
java.io.IOException
-
eval
public java.lang.Object eval(java.lang.String sourceName, java.lang.String js, java.util.Map<java.lang.String,java.lang.Object> variables)
Description copied from interface:RhinoSandbox
Evaluate a script with its own scope. It has access to all objects in the global scope but cannot add new ones.
variables
defines variables with Java objects which will be available for the execution of this script.- Specified by:
eval
in interfaceRhinoSandbox
-
eval
public java.lang.Object eval(java.lang.String sourceName, java.io.Reader js, java.util.Map<java.lang.String,java.lang.Object> variables) throws java.io.IOException
Description copied from interface:RhinoSandbox
Evaluate a script with its own scope. It has access to all objects in the global scope but cannot add new ones.
variables
defines variables with Java objects which will be available for the execution of this script.- Specified by:
eval
in interfaceRhinoSandbox
- Throws:
java.io.IOException
-
eval
public java.lang.Object eval(java.lang.String sourceName, java.lang.String js)
Description copied from interface:RhinoSandbox
Evaluate a script with its own scope. It has access to all objects in the global scope but cannot add new ones.- Specified by:
eval
in interfaceRhinoSandbox
-
callFunction
public java.lang.Object callFunction(org.mozilla.javascript.NativeFunction function, java.lang.Object[] args)
Description copied from interface:RhinoSandbox
executes a javascript function- Specified by:
callFunction
in interfaceRhinoSandbox
- Parameters:
function
- a Native function you may got from jsargs
- parameters you need to call the function- Returns:
- the result of the javascript function
-
eval
public java.lang.Object eval(java.lang.String sourceName, java.io.Reader js) throws java.io.IOException
Description copied from interface:RhinoSandbox
Evaluate a script with its own scope. It has access to all objects in the global scope but cannot add new ones.- Specified by:
eval
in interfaceRhinoSandbox
- Throws:
java.io.IOException
-
setInstructionLimit
public RhinoSandbox setInstructionLimit(int limit)
Description copied from interface:RhinoSandbox
Sets the maximum instructions allowed for script execution.- Specified by:
setInstructionLimit
in interfaceRhinoSandbox
-
setMaxDuration
public RhinoSandbox setMaxDuration(int limitInMs)
Sets the maximum allowed duration for scripts.- Specified by:
setMaxDuration
in interfaceRhinoSandbox
-
setUseSafeStandardObjects
public RhinoSandbox setUseSafeStandardObjects(boolean useSafeStandardObjects)
Description copied from interface:RhinoSandbox
If .initSafeStandardObjects should be used.- Specified by:
setUseSafeStandardObjects
in interfaceRhinoSandbox
-
allow
public RhinoSandbox allow(java.lang.Class<?> clazz)
Description copied from interface:RhinoSandbox
Will allow access to this class in Rhino scripts.
Note that for classes in packages which don't start with java., com., net. etc. the class name needs to be prefixed with Packages.
e.g. mypackage.Myclass will be Packages.mypackage.MyClass
- Specified by:
allow
in interfaceRhinoSandbox
-
inject
public RhinoSandbox inject(java.lang.Class<org.mozilla.javascript.ScriptableObject> clazz)
Description copied from interface:RhinoSandbox
Will make this class available to instantiate in Rhino scripts.- Specified by:
inject
in interfaceRhinoSandbox
-
inject
public RhinoSandbox inject(java.lang.String variableName, java.lang.Object object)
Description copied from interface:RhinoSandbox
Will add a global variable available to all scripts executed with this sandbox.- Specified by:
inject
in interfaceRhinoSandbox
-
injectInt
private void injectInt(java.lang.String variableName, java.lang.Object object)
-
setUseSealedScope
public RhinoSandbox setUseSealedScope(boolean value)
Description copied from interface:RhinoSandbox
If the global scope should be sealed (default: true).- Specified by:
setUseSealedScope
in interfaceRhinoSandbox
-
-