Search in sources :

Example 1 with ModuleScript

use of org.mozilla.javascript.commonjs.module.ModuleScript in project hackpad by dropbox.

the class CachingModuleScriptProviderBase method getModuleScript.

public ModuleScript getModuleScript(Context cx, String moduleId, URI moduleUri, Scriptable paths) throws Exception {
    final CachedModuleScript cachedModule1 = getLoadedModule(moduleId);
    final Object validator1 = getValidator(cachedModule1);
    final ModuleSource moduleSource = (moduleUri == null) ? moduleSourceProvider.loadSource(moduleId, paths, validator1) : moduleSourceProvider.loadSource(moduleUri, validator1);
    if (moduleSource == ModuleSourceProvider.NOT_MODIFIED) {
        return cachedModule1.getModule();
    }
    if (moduleSource == null) {
        return null;
    }
    final Reader reader = moduleSource.getReader();
    try {
        final int idHash = moduleId.hashCode();
        synchronized (loadLocks[(idHash >>> loadLockShift) & loadLockMask]) {
            final CachedModuleScript cachedModule2 = getLoadedModule(moduleId);
            if (cachedModule2 != null) {
                if (!equal(validator1, getValidator(cachedModule2))) {
                    return cachedModule2.getModule();
                }
            }
            final URI sourceUri = moduleSource.getUri();
            final ModuleScript moduleScript = new ModuleScript(cx.compileReader(reader, sourceUri.toString(), 1, moduleSource.getSecurityDomain()), sourceUri, moduleSource.getBase());
            putLoadedModule(moduleId, moduleScript, moduleSource.getValidator());
            return moduleScript;
        }
    } finally {
        reader.close();
    }
}
Also used : Reader(java.io.Reader) ModuleScript(org.mozilla.javascript.commonjs.module.ModuleScript) URI(java.net.URI)

Aggregations

Reader (java.io.Reader)1 URI (java.net.URI)1 ModuleScript (org.mozilla.javascript.commonjs.module.ModuleScript)1