Class RhinoScriptProcessor

  • All Implemented Interfaces:
    org.alfresco.processor.Processor, org.alfresco.scripts.ScriptResourceLoader, ScriptProcessor, org.springframework.beans.factory.InitializingBean

    public class RhinoScriptProcessor
    extends BaseProcessor
    implements ScriptProcessor, org.alfresco.scripts.ScriptResourceLoader, org.springframework.beans.factory.InitializingBean
    Implementation of the ScriptProcessor using the Rhino JavaScript library.
    Author:
    Kevin Roast
    • Constructor Detail

      • RhinoScriptProcessor

        public RhinoScriptProcessor()
    • Method Detail

      • setStoreUrl

        public void setStoreUrl​(java.lang.String storeRef)
        Set the default store reference
        Parameters:
        storeRef - The default store reference
      • setStorePath

        public void setStorePath​(java.lang.String storePath)
        Parameters:
        storePath - The store path to set.
      • setCompile

        public void setCompile​(boolean compile)
        Parameters:
        compile - the compile flag to set
      • setShareSealedScopes

        public void setShareSealedScopes​(boolean shareSealedScopes)
        Parameters:
        shareSealedScopes - true to allow sharing of sealed scopes between script executions - set to false to disable this feature and ensure that a new scope is created for each executed script.
      • loadScriptResource

        public java.lang.String loadScriptResource​(java.lang.String resource)
        Load a script content from the specific resource path.
        Specified by:
        loadScriptResource in interface org.alfresco.scripts.ScriptResourceLoader
        Parameters:
        resource - Resources can be of the form:
         classpath:alfresco/includeme.js
         workspace://SpacesStore/6f73de1b-d3b4-11db-80cb-112e6c2ea048
         /Company Home/Data Dictionary/Scripts/includeme.js
         
        Returns:
        the content from the resource, null if not recognised format
        Throws:
        org.alfresco.error.AlfrescoRuntimeException - on any IO or ContentIO error
      • afterPropertiesSet

        public void afterPropertiesSet()
                                throws java.lang.Exception
        Pre initializes two scope objects (one secure and one not) with the standard objects preinitialised. This saves on very expensive calls to reinitialize a new scope on every web script execution. See http://www.mozilla.org/rhino/scopes.html
        Specified by:
        afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
        Throws:
        java.lang.Exception
        See Also:
        InitializingBean.afterPropertiesSet()
      • initScope

        protected org.mozilla.javascript.Scriptable initScope​(org.mozilla.javascript.Context cx,
                                                              boolean secure,
                                                              boolean sealed)
        Initializes a scope for script execution. The easiest way to embed Rhino is just to create a new scope this way whenever you need one. However, initStandardObjects() is an expensive method to call and it allocates a fair amount of memory.
        Parameters:
        cx - the thread execution context
        secure - Do we consider the script secure? When false this ensures the script may not access insecure java.* libraries or import any other classes for direct access - only the configured root host objects will be available to the script writer.
        sealed - Should the scope be sealed, making it immutable? This should be true if a scope is to be reused.
        Returns:
        the scope object