org.mozilla.javascript.commonjs.module.provider
Class SoftCachingModuleScriptProvider
java.lang.Object
org.mozilla.javascript.commonjs.module.provider.CachingModuleScriptProviderBase
org.mozilla.javascript.commonjs.module.provider.SoftCachingModuleScriptProvider
- All Implemented Interfaces:
- java.io.Serializable, ModuleScriptProvider
public class SoftCachingModuleScriptProvider
- extends CachingModuleScriptProviderBase
A module script provider that uses a module source provider to load modules
and caches the loaded modules. It softly references the loaded modules'
Rhino Script
objects, thus a module once loaded can become eligible
for garbage collection if it is otherwise unused under memory pressure.
Instances of this class are thread safe.
- Version:
- $Id: SoftCachingModuleScriptProvider.java,v 1.3 2011/04/07 20:26:12 hannes%helma.at Exp $
- Author:
- Attila Szegedi
- See Also:
- Serialized Form
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
SoftCachingModuleScriptProvider
public SoftCachingModuleScriptProvider(ModuleSourceProvider moduleSourceProvider)
- Creates a new module provider with the specified module source provider.
- Parameters:
moduleSourceProvider
- provider for modules' source code
getModuleScript
public ModuleScript getModuleScript(Context cx,
java.lang.String moduleId,
java.net.URI uri,
java.net.URI base,
Scriptable paths)
throws java.lang.Exception
- Description copied from interface:
ModuleScriptProvider
- Returns a module script. It should attempt to load the module script if
it is not already available to it, or return an already loaded module
script instance if it is available to it.
- Specified by:
getModuleScript
in interface ModuleScriptProvider
- Overrides:
getModuleScript
in class CachingModuleScriptProviderBase
- Parameters:
cx
- current context. Can be used to compile module scripts.moduleId
- the ID of the module. An implementation must only accept
an absolute ID, starting with a term.uri
- the URI of the module. If this is not null, resolution
of moduleId
is bypassed and the script is directly loaded
from moduleUri
base
- the module path base URI from which moduleUri
was derived.paths
- the value of the require() function's "paths" attribute. If
the require() function is sandboxed, it will be null, otherwise it will
be a JavaScript Array object. It is up to the provider implementation
whether and how it wants to honor the contents of the array.
- Returns:
- a module script representing the compiled code of the module.
Null should be returned if the script could not found.
- Throws:
java.lang.Exception
- if there was an unrecoverable problem obtaining the
script
java.lang.IllegalArgumentException
- if the module ID is syntactically not a
valid absolute module identifier.
getLoadedModule
protected CachingModuleScriptProviderBase.CachedModuleScript getLoadedModule(java.lang.String moduleId)
- Description copied from class:
CachingModuleScriptProviderBase
- Retrieves an already loaded moduleScript stored using
CachingModuleScriptProviderBase.putLoadedModule(String, ModuleScript, Object)
.
- Specified by:
getLoadedModule
in class CachingModuleScriptProviderBase
- Parameters:
moduleId
- the ID of the module
- Returns:
- a cached module script, or null if the module is not loaded.
putLoadedModule
protected void putLoadedModule(java.lang.String moduleId,
ModuleScript moduleScript,
java.lang.Object validator)
- Description copied from class:
CachingModuleScriptProviderBase
- Store a loaded module script for later retrieval using
CachingModuleScriptProviderBase.getLoadedModule(String)
.
- Specified by:
putLoadedModule
in class CachingModuleScriptProviderBase
- Parameters:
moduleId
- the ID of the modulemoduleScript
- the module scriptvalidator
- the validator for the module's source text entity