org.alfresco.repo.jscript
Class RhinoScriptProcessor

java.lang.Object
  extended by org.alfresco.repo.processor.BaseProcessor
      extended by org.alfresco.repo.jscript.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.


Field Summary
 
Fields inherited from class org.alfresco.repo.processor.BaseProcessor
extension, name, processorExtensions, scriptService, services, templateService
 
Constructor Summary
RhinoScriptProcessor()
           
 
Method Summary
 void afterPropertiesSet()
          Pre initializes two scope objects (one secure and one not) with the standard objects preinitialised.
 java.lang.Object execute(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName contentProp, java.util.Map model)
          Execute script
 java.lang.Object execute(ScriptLocation location, java.util.Map model)
          Execute script
 java.lang.Object execute(java.lang.String location, java.util.Map model)
          Execute script
 java.lang.Object executeString(java.lang.String source, java.util.Map model)
          Execute script string
protected  org.mozilla.javascript.Scriptable initScope(org.mozilla.javascript.Context cx, boolean secure, boolean sealed)
          Initializes a scope for script execution.
 java.lang.String loadScriptResource(java.lang.String resource)
          Load a script content from the specific resource path.
 void reset()
          Reset the processor - such as clearing any internal caches etc.
 void setCompile(boolean compile)
           
 void setShareSealedScopes(boolean shareSealedScopes)
           
 void setStorePath(java.lang.String storePath)
           
 void setStoreUrl(java.lang.String storeRef)
          Set the default store reference
 
Methods inherited from class org.alfresco.repo.processor.BaseProcessor
getExtension, getName, getProcessorExtensions, register, registerProcessorExtension, setExtension, setName, setScriptService, setServiceRegistry, setTemplateService
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.alfresco.processor.Processor
getExtension, getName, registerProcessorExtension
 

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.

reset

public void reset()
Description copied from interface: ScriptProcessor
Reset the processor - such as clearing any internal caches etc.

Specified by:
reset in interface ScriptProcessor
See Also:
ScriptProcessor.reset()

execute

public java.lang.Object execute(ScriptLocation location,
                                java.util.Map model)
Description copied from interface: ScriptProcessor
Execute script

Specified by:
execute in interface ScriptProcessor
Parameters:
location - the location of the script
model - context model
Returns:
Object the result of the script
See Also:
ScriptProcessor.execute(org.alfresco.service.cmr.repository.ScriptLocation, java.util.Map)

execute

public java.lang.Object execute(java.lang.String location,
                                java.util.Map model)
Description copied from interface: ScriptProcessor
Execute script

Specified by:
execute in interface ScriptProcessor
Parameters:
location - the classpath string locating the script
model - the context model
Returns:
Object the result of the script
See Also:
ScriptProcessor.execute(java.lang.String, java.util.Map)

execute

public java.lang.Object execute(org.alfresco.service.cmr.repository.NodeRef nodeRef,
                                org.alfresco.service.namespace.QName contentProp,
                                java.util.Map model)
Description copied from interface: ScriptProcessor
Execute script

Specified by:
execute in interface ScriptProcessor
Parameters:
nodeRef - the script node reference
contentProp - the content property of the script
model - the context model
Returns:
Object the result of the script
See Also:
ScriptProcessor.execute(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName, java.util.Map)

executeString

public java.lang.Object executeString(java.lang.String source,
                                      java.util.Map model)
Description copied from interface: ScriptProcessor
Execute script string

Specified by:
executeString in interface ScriptProcessor
Parameters:
source - the script string
model - the context model
Returns:
Obejct the result of the script
See Also:
ScriptProcessor.executeString(java.lang.String, java.util.Map)

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


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.