org.mozilla.javascript.commonjs.module.provider.StrongCachingModuleScriptProvider Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rhino-runtime Show documentation
Show all versions of rhino-runtime Show documentation
Rhino JavaScript runtime jar, excludes tools & JSR-223 Script Engine wrapper.
The newest version!
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.javascript.commonjs.module.provider;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.mozilla.javascript.commonjs.module.ModuleScript;
/**
* A module script provider that uses a module source provider to load modules and caches the loaded
* modules. It strongly references the loaded modules, thus a module once loaded will not be
* eligible for garbage collection before the module provider itself becomes eligible.
*
* @author Attila Szegedi
* @version $Id: StrongCachingModuleScriptProvider.java,v 1.3 2011/04/07 20:26:12 hannes%helma.at
* Exp $
*/
public class StrongCachingModuleScriptProvider extends CachingModuleScriptProviderBase {
private static final long serialVersionUID = 1L;
private final Map modules =
new ConcurrentHashMap<>(16, .75f, getConcurrencyLevel());
/**
* Creates a new module provider with the specified module source provider.
*
* @param moduleSourceProvider provider for modules' source code
*/
public StrongCachingModuleScriptProvider(ModuleSourceProvider moduleSourceProvider) {
super(moduleSourceProvider);
}
@Override
protected CachedModuleScript getLoadedModule(String moduleId) {
return modules.get(moduleId);
}
@Override
protected void putLoadedModule(String moduleId, ModuleScript moduleScript, Object validator) {
modules.put(moduleId, new CachedModuleScript(moduleScript, validator));
}
}