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, ≈102🔥, 1💬
Popular Posts:
JDK 11 java.naming.jmod is the JMOD file for JDK 11 Naming module. JDK 11 Naming module compiled cla...
Java Architecture for XML Binding (JAXB) is a Java API that allows Java developers to map Java class...
JRE 8 deploy.jar is the JAR file for JRE 8 Java Control Panel and other deploy tools. JRE (Java Runt...
jlGui is a music player for the Java platform. It is based on Java Sound 1.0 (i.e. JDK 1.3+). It sup...
Apache ZooKeeper is an open-source server which enables highly reliable distributed coordination. Ap...