Class RhinoSandboxImpl

  • All Implemented Interfaces:
    RhinoSandbox

    public class RhinoSandboxImpl
    extends java.lang.Object
    implements RhinoSandbox
    • 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_Contexts
      void assertSafeScope​(org.mozilla.javascript.Context context)  
      java.lang.Object callFunction​(org.mozilla.javascript.NativeFunction function, java.lang.Object[] args)
      executes a javascript function
      java.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).
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • 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
      • ctxFactoryLock

        private static final java.lang.Object ctxFactoryLock
    • Constructor Detail

      • RhinoSandboxImpl

        public RhinoSandboxImpl()
    • 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 interface RhinoSandbox
      • 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 interface RhinoSandbox
        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 interface RhinoSandbox
      • 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 interface RhinoSandbox
        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 interface RhinoSandbox
      • 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 interface RhinoSandbox
        Parameters:
        function - a Native function you may got from js
        args - 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 interface RhinoSandbox
        Throws:
        java.io.IOException
      • 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

        see

        Specified by:
        allow in interface RhinoSandbox
      • 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 interface RhinoSandbox
      • 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 interface RhinoSandbox
      • injectInt

        private void injectInt​(java.lang.String variableName,
                               java.lang.Object object)