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, ≈102🔥, 1💬
Popular Posts:
JDK 17 jdk.internal.vm.ci.jmod is the JMOD file for JDK 17 Internal VM CI module. JDK 17 Internal VM...
How to perform XML Schema validation with dom\Writer.java provided in the Apache Xerces package? You...
JDK 17 java.naming.jmod is the JMOD file for JDK 17 Naming module. JDK 17 Naming module compiled cla...
How to download and install Apache ZooKeeper Source Package? Apache ZooKeeper is an open-source serv...
Apache Ant Source Code Files are inside the Apache Ant source package file like apache-ant-1.10.10-s...