Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (102)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (322)
Collections:
Other Resources:
Rhino JavaScript Java Library Source Code
Rhino JavaScript Java Library is an open-source implementation of JavaScript
written entirely in Java.
Rhino JavaScript Java Library Source Code files are provided in binary package (rhino-1.7.14.zip).
You can also browse the source code below:
✍: FYIcenter.com
⏎ org/mozilla/javascript/commonjs/module/provider/SoftCachingModuleScriptProvider.java
/* 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.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.SoftReference;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Script;
import org.mozilla.javascript.Scriptable;
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 softly references the loaded modules'
* Rhino {@link 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.
* @author Attila Szegedi
* @version $Id: SoftCachingModuleScriptProvider.java,v 1.3 2011/04/07 20:26:12 hannes%helma.at Exp $
*/
public class SoftCachingModuleScriptProvider extends CachingModuleScriptProviderBase {
private static final long serialVersionUID = 1L;
private transient ReferenceQueue<Script> scriptRefQueue = new ReferenceQueue<Script>();
private transient ConcurrentMap<String, ScriptReference> scripts = new ConcurrentHashMap<String, ScriptReference>(16, .75f, getConcurrencyLevel());
/**
* Creates a new module provider with the specified module source provider.
* @param moduleSourceProvider provider for modules' source code
*/
public SoftCachingModuleScriptProvider(
ModuleSourceProvider moduleSourceProvider)
{
super(moduleSourceProvider);
}
@Override
public ModuleScript getModuleScript(Context cx, String moduleId,
URI uri, URI base, Scriptable paths)
throws Exception
{
// Overridden to clear the reference queue before retrieving the
// script.
for(;;) {
ScriptReference ref = (ScriptReference)scriptRefQueue.poll();
if(ref == null) {
break;
}
scripts.remove(ref.getModuleId(), ref);
}
return super.getModuleScript(cx, moduleId, uri, base, paths);
}
@Override
protected CachedModuleScript getLoadedModule(String moduleId) {
final ScriptReference scriptRef = scripts.get(moduleId);
return scriptRef != null ? scriptRef.getCachedModuleScript() : null;
}
@Override
protected void putLoadedModule(String moduleId, ModuleScript moduleScript,
Object validator)
{
scripts.put(moduleId, new ScriptReference(moduleScript.getScript(),
moduleId, moduleScript.getUri(), moduleScript.getBase(),
validator, scriptRefQueue));
}
private static class ScriptReference extends SoftReference<Script> {
private final String moduleId;
private final URI uri;
private final URI base;
private final Object validator;
ScriptReference(Script script, String moduleId, URI uri, URI base,
Object validator, ReferenceQueue<Script> refQueue) {
super(script, refQueue);
this.moduleId = moduleId;
this.uri = uri;
this.base = base;
this.validator = validator;
}
CachedModuleScript getCachedModuleScript() {
final Script script = get();
if(script == null) {
return null;
}
return new CachedModuleScript(new ModuleScript(script, uri, base),
validator);
}
String getModuleId() {
return moduleId;
}
}
@SuppressWarnings("unchecked")
private void readObject(ObjectInputStream in) throws IOException,
ClassNotFoundException
{
scriptRefQueue = new ReferenceQueue<Script>();
scripts = new ConcurrentHashMap<String, ScriptReference>();
final Map<String, CachedModuleScript> serScripts = (Map)in.readObject();
for(Map.Entry<String, CachedModuleScript> entry: serScripts.entrySet()) {
final CachedModuleScript cachedModuleScript = entry.getValue();
putLoadedModule(entry.getKey(), cachedModuleScript.getModule(),
cachedModuleScript.getValidator());
}
}
private void writeObject(ObjectOutputStream out) throws IOException {
final Map<String, CachedModuleScript> serScripts =
new HashMap<String, CachedModuleScript>();
for(Map.Entry<String, ScriptReference> entry: scripts.entrySet()) {
final CachedModuleScript cachedModuleScript =
entry.getValue().getCachedModuleScript();
if(cachedModuleScript != null) {
serScripts.put(entry.getKey(), cachedModuleScript);
}
}
out.writeObject(serScripts);
}
}⏎ org/mozilla/javascript/commonjs/module/provider/SoftCachingModuleScriptProvider.java
Or download all of them as a single archive file:
File name: rhino-1.7.14-sources.jar File size: 1029165 bytes Release date: 2022-01-06 Download
⇒ Example code to Test rhino-runtime-1.7.14.jar
⇐ Download Rhino JavaScript Binary Package
2022-05-03, ≈209🔥, 1💬
Popular Posts:
What Is in Xerces-J-bin.2.12.2.zip? Xerces-J-bin.2.12.2.zip file is the distribution package ZIP fil...
How to download and install iText7-Core-7.1.4.zip? iText7-Core-7.1.4.zip is the binary package of iT...
What is jxl.jar 2.6.12? jxl.jar 2.6.12 is the JAR file for Java Excel API 2.6.12, which is a Java li...
Jackson is "the Java JSON library" or "the best JSON parser for Java". Or simply as "JSON for Java"....
JRE 5 sunjce_provider.jar is the JAR file for JRE 5 Sun JCE Provider, which provides implementations...