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/JavaMembers_jdk11.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.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Map;
/** Version of {@link JavaMembers} for modular JDKs. */
class JavaMembers_jdk11 extends JavaMembers {
JavaMembers_jdk11(Scriptable scope, Class<?> cl, boolean includeProtected) {
super(scope, cl, includeProtected);
}
@Override
void discoverPublicMethods(Class<?> clazz, Map<MethodSignature, Method> map) {
if (isExportedClass(clazz)) {
super.discoverPublicMethods(clazz, map);
} else {
Method[] methods = clazz.getMethods();
for (Method method : methods) {
method = findAccessibleMethod(method);
registerMethod(map, method);
}
}
}
private static boolean isExportedClass(Class<?> clazz) {
/*
* We are going to invoke, using reflection, the approximate equivalent
* to the following Java 9 code:
*
* return clazz.getModule().isExported(clazz.getPackageName());
*/
// First, determine the package name
String pname;
Package pkg = clazz.getPackage();
if (pkg == null) {
// Primitive types, arrays, proxy classes
if (!Proxy.isProxyClass(clazz)) {
// Should be a primitive type or array
return true;
}
String clName = clazz.getName();
pname = clName.substring(0, clName.lastIndexOf('.'));
} else {
pname = pkg.getName();
}
// Obtain the module
Method getmodule;
Class<?> cl = clazz.getClass();
try {
getmodule = cl.getMethod("getModule");
} catch (NoSuchMethodException e) {
// We are on non-modular Java
return true;
}
Object module;
try {
module = getmodule.invoke(clazz);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
return false;
}
Class<?> moduleClass = module.getClass();
// Execute isExported()
boolean exported;
try {
Method isexported = moduleClass.getMethod("isExported", String.class);
exported = (boolean) isexported.invoke(module, pname);
} catch (NoSuchMethodException
| IllegalAccessException
| IllegalArgumentException
| InvocationTargetException e) {
// If we reached this part of the code, this cannot happen
exported = false;
}
return exported;
}
private static Method findAccessibleMethod(Method method) {
Class<?> cl = method.getDeclaringClass();
final String methodName = method.getName();
final Class<?>[] methodTypes = method.getParameterTypes();
topLoop:
do {
for (Class<?> intface : cl.getInterfaces()) {
try {
method = intface.getMethod(methodName, methodTypes);
break topLoop;
} catch (NoSuchMethodException e) {
}
}
cl = cl.getSuperclass();
if (cl == null) {
break;
}
if (isExportedClass(cl)) {
try {
method = cl.getMethod(methodName, methodTypes);
break;
} catch (NoSuchMethodException e) {
}
}
} while (true);
return method;
}
}
⏎ org/mozilla/javascript/JavaMembers_jdk11.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:
JDK 17 jdk.internal.JVM Stat.jmod is the JMOD file for JDK 17 Internal Jvmstat module. JDK 17 Intern...
Where Can I see Java Source Code files for Xerces Java 2.11.2? Here are Java Source Code files for X...
How to download and install Apache ZooKeeper Source Package? Apache ZooKeeper is an open-source serv...
JDK 11 java.xml.crypto.jmod is the JMOD file for JDK 11 XML (eXtensible Markup Language) Crypto modu...
How to compare performances of various XML parsers with the jaxp\SourceValidator.jav aprovided in th...