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/LazilyLoadedCtor.java
/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* 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;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.security.AccessController;
import java.security.PrivilegedAction;
/**
* Avoid loading classes unless they are used.
*
* <p> This improves startup time and average memory usage.
*/
public final class LazilyLoadedCtor implements Serializable {
private static final long serialVersionUID = 1L;
private static final int STATE_BEFORE_INIT = 0;
private static final int STATE_INITIALIZING = 1;
private static final int STATE_WITH_VALUE = 2;
private final ScriptableObject scope;
private final String propertyName;
private final String className;
private final boolean sealed;
private final boolean privileged;
private Object initializedValue;
private int state;
public LazilyLoadedCtor(ScriptableObject scope, String propertyName,
String className, boolean sealed)
{
this(scope, propertyName, className, sealed, false);
}
LazilyLoadedCtor(ScriptableObject scope, String propertyName,
String className, boolean sealed, boolean privileged)
{
this.scope = scope;
this.propertyName = propertyName;
this.className = className;
this.sealed = sealed;
this.privileged = privileged;
this.state = STATE_BEFORE_INIT;
scope.addLazilyInitializedValue(propertyName, 0, this,
ScriptableObject.DONTENUM);
}
void init()
{
synchronized (this) {
if (state == STATE_INITIALIZING)
throw new IllegalStateException(
"Recursive initialization for "+propertyName);
if (state == STATE_BEFORE_INIT) {
state = STATE_INITIALIZING;
// Set value now to have something to set in finally block if
// buildValue throws.
Object value = Scriptable.NOT_FOUND;
try {
value = buildValue();
} finally {
initializedValue = value;
state = STATE_WITH_VALUE;
}
}
}
}
Object getValue()
{
if (state != STATE_WITH_VALUE)
throw new IllegalStateException(propertyName);
return initializedValue;
}
private Object buildValue()
{
if(privileged)
{
return AccessController.doPrivileged(new PrivilegedAction<Object>()
{
@Override
public Object run()
{
return buildValue0();
}
});
}
return buildValue0();
}
private Object buildValue0()
{
Class<? extends Scriptable> cl = cast(Kit.classOrNull(className));
if (cl != null) {
try {
Object value = ScriptableObject.buildClassCtor(scope, cl,
sealed, false);
if (value != null) {
return value;
}
// cl has own static initializer which is expected
// to set the property on its own.
value = scope.get(propertyName, scope);
if (value != Scriptable.NOT_FOUND)
return value;
} catch (InvocationTargetException ex) {
Throwable target = ex.getTargetException();
if (target instanceof RuntimeException) {
throw (RuntimeException)target;
}
} catch (RhinoException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (SecurityException ex) {
}
}
return Scriptable.NOT_FOUND;
}
@SuppressWarnings({"unchecked"})
private static Class<? extends Scriptable> cast(Class<?> cl) {
return (Class<? extends Scriptable>)cl;
}
}
⏎ org/mozilla/javascript/LazilyLoadedCtor.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, ≈160🔥, 1💬
Popular Posts:
JDOM provides a solution for using XML from Java that is as simple as Java itself. There is no compe...
What Is jsse.jar (JDK 6) Java Secure Socket Extension? jsse.jar, Java Secure Socket Extension, is Ja...
Java Architecture for XML Binding (JAXB) is a Java API that allows Java developers to map Java class...
What JAR files are required to run sax\Counter.java provided in the Apache Xerces package? You can f...
Apache Log4j 1.2 Bridge allows applications coded to use Log4j 1.2 API to use Log4j 2 instead. Bytec...