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/SpecialRef.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;
class SpecialRef extends Ref {
private static final long serialVersionUID = -7521596632456797847L;
private static final int SPECIAL_NONE = 0;
private static final int SPECIAL_PROTO = 1;
private static final int SPECIAL_PARENT = 2;
private Scriptable target;
private int type;
private String name;
private SpecialRef(Scriptable target, int type, String name) {
this.target = target;
this.type = type;
this.name = name;
}
static Ref createSpecial(Context cx, Scriptable scope, Object object, String name) {
Scriptable target = ScriptRuntime.toObjectOrNull(cx, object, scope);
if (target == null) {
throw ScriptRuntime.undefReadError(object, name);
}
int type;
if (name.equals("__proto__")) {
type = SPECIAL_PROTO;
} else if (name.equals("__parent__")) {
type = SPECIAL_PARENT;
} else {
throw new IllegalArgumentException(name);
}
if (!cx.hasFeature(Context.FEATURE_PARENT_PROTO_PROPERTIES)) {
// Clear special after checking for valid name!
type = SPECIAL_NONE;
}
return new SpecialRef(target, type, name);
}
@Override
public Object get(Context cx) {
switch (type) {
case SPECIAL_NONE:
return ScriptRuntime.getObjectProp(target, name, cx);
case SPECIAL_PROTO:
return target.getPrototype();
case SPECIAL_PARENT:
return target.getParentScope();
default:
throw Kit.codeBug();
}
}
@Override
@Deprecated
public Object set(Context cx, Object value) {
throw new IllegalStateException();
}
@Override
public Object set(Context cx, Scriptable scope, Object value) {
switch (type) {
case SPECIAL_NONE:
return ScriptRuntime.setObjectProp(target, name, value, cx);
case SPECIAL_PROTO:
case SPECIAL_PARENT:
{
Scriptable obj = ScriptRuntime.toObjectOrNull(cx, value, scope);
if (obj != null) {
// Check that obj does not contain on its prototype/scope
// chain to prevent cycles
Scriptable search = obj;
do {
if (search == target) {
throw Context.reportRuntimeErrorById("msg.cyclic.value", name);
}
if (type == SPECIAL_PROTO) {
search = search.getPrototype();
} else {
search = search.getParentScope();
}
} while (search != null);
}
if (type == SPECIAL_PROTO) {
if (target instanceof ScriptableObject
&& !((ScriptableObject) target).isExtensible()
&& cx.getLanguageVersion() >= Context.VERSION_1_8) {
throw ScriptRuntime.typeErrorById("msg.not.extensible");
}
if (cx.getLanguageVersion() >= Context.VERSION_ES6) {
final String typeOfTarget = ScriptRuntime.typeof(target);
if ("function".equals(typeOfTarget)) {
if (value == null) {
target.setPrototype(Undefined.SCRIPTABLE_UNDEFINED);
return value;
}
final String typeOfValue = ScriptRuntime.typeof(value);
if ("object".equals(typeOfValue)
|| "function".equals(typeOfValue)) {
target.setPrototype(obj);
}
return value;
}
final String typeOfValue = ScriptRuntime.typeof(value);
if ((value != null && !"object".equals(typeOfValue))
|| !"object".equals(typeOfTarget)) {
return Undefined.instance;
}
target.setPrototype(obj);
} else {
target.setPrototype(obj);
}
} else {
target.setParentScope(obj);
}
return obj;
}
default:
throw Kit.codeBug();
}
}
@Override
public boolean has(Context cx) {
if (type == SPECIAL_NONE) {
return ScriptRuntime.hasObjectElem(target, name, cx);
}
return true;
}
@Override
public boolean delete(Context cx) {
if (type == SPECIAL_NONE) {
return ScriptRuntime.deleteObjectElem(target, name, cx);
}
return false;
}
}
⏎ org/mozilla/javascript/SpecialRef.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, ≈208🔥, 1💬
Popular Posts:
Apache Log4j IOStreams is a Log4j API extension that provides numerous classes from java.io that can...
How to download and install ojdbc14.jar for Oracle 10g R2? ojdbc14.jar for Oracle 10g R2 is a Java 1...
Apache ZooKeeper is an open-source server which enables highly reliable distributed coordination. Ap...
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...
JDK 11 java.security.sasl.jmod is the JMOD file for JDK 11 Security SASL (Simple Authentication and ...