Package org.htmlunit.corejs.javascript
Class JavaMembers
- java.lang.Object
-
- org.htmlunit.corejs.javascript.JavaMembers
-
- Direct Known Subclasses:
JavaMembers_jdk11
class JavaMembers extends java.lang.Object
- See Also:
NativeJavaObject
,NativeJavaClass
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
JavaMembers.MethodSignature
-
Field Summary
Fields Modifier and Type Field Description private static java.security.Permission
allPermission
private java.lang.Class<?>
cl
(package private) NativeJavaMethod
ctors
private java.util.Map<java.lang.String,FieldAndMethods>
fieldAndMethods
private java.util.Map<java.lang.String,java.lang.Object>
members
private java.util.Map<java.lang.String,FieldAndMethods>
staticFieldAndMethods
private java.util.Map<java.lang.String,java.lang.Object>
staticMembers
private static boolean
STRICT_REFLECTIVE_ACCESS
-
Constructor Summary
Constructors Constructor Description JavaMembers(Scriptable scope, java.lang.Class<?> cl)
JavaMembers(Scriptable scope, java.lang.Class<?> cl, boolean includeProtected)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static JavaMembers
createJavaMembers(Scriptable associatedScope, java.lang.Class<?> cl, boolean includeProtected)
private java.lang.reflect.Method[]
discoverAccessibleMethods(java.lang.Class<?> clazz, boolean includeProtected, boolean includePrivate)
Retrieves mapping of methods to accessible methods for a class.private void
discoverAccessibleMethods(java.lang.Class<?> clazz, java.util.Map<JavaMembers.MethodSignature,java.lang.reflect.Method> map, boolean includeProtected, boolean includePrivate)
(package private) void
discoverPublicMethods(java.lang.Class<?> clazz, java.util.Map<JavaMembers.MethodSignature,java.lang.reflect.Method> map)
private static MemberBox
extractGetMethod(MemberBox[] methods, boolean isStatic)
private static MemberBox
extractSetMethod(java.lang.Class<?> type, MemberBox[] methods, boolean isStatic)
private static MemberBox
extractSetMethod(MemberBox[] methods, boolean isStatic)
private MemberBox
findExplicitFunction(java.lang.String name, boolean isStatic)
private static MemberBox
findGetter(boolean isStatic, java.util.Map<java.lang.String,java.lang.Object> ht, java.lang.String prefix, java.lang.String propertyName)
(package private) java.lang.Object
get(Scriptable scope, java.lang.String name, java.lang.Object javaObject, boolean isStatic)
private java.lang.reflect.Constructor<?>[]
getAccessibleConstructors(boolean includePrivate)
private java.lang.reflect.Field[]
getAccessibleFields(boolean includeProtected, boolean includePrivate)
private java.lang.Object
getExplicitFunction(Scriptable scope, java.lang.String name, java.lang.Object javaObject, boolean isStatic)
(package private) java.util.Map<java.lang.String,FieldAndMethods>
getFieldAndMethodsObjects(Scriptable scope, java.lang.Object javaObject, boolean isStatic)
(package private) java.lang.Object[]
getIds(boolean isStatic)
private static java.lang.Object
getSecurityContext()
(package private) boolean
has(java.lang.String name, boolean isStatic)
private static boolean
isModularJava()
This method returns true if we are on a "modular" version of Java (Java 11 or up).(package private) static java.lang.String
javaSignature(java.lang.Class<?> type)
(package private) static java.lang.String
liveConnectSignature(java.lang.Class<?>[] argTypes)
(package private) static JavaMembers
lookupClass(Scriptable scope, java.lang.Class<?> dynamicType, java.lang.Class<?> staticType, boolean includeProtected)
(package private) void
put(Scriptable scope, java.lang.String name, java.lang.Object javaObject, java.lang.Object value, boolean isStatic)
private void
reflect(Context cx, Scriptable scope, boolean includeProtected, boolean includePrivate)
(package private) static void
registerMethod(java.util.Map<JavaMembers.MethodSignature,java.lang.reflect.Method> map, java.lang.reflect.Method method)
(package private) java.lang.RuntimeException
reportMemberNotFound(java.lang.String memberName)
-
-
-
Field Detail
-
STRICT_REFLECTIVE_ACCESS
private static final boolean STRICT_REFLECTIVE_ACCESS
-
allPermission
private static final java.security.Permission allPermission
-
cl
private java.lang.Class<?> cl
-
members
private java.util.Map<java.lang.String,java.lang.Object> members
-
fieldAndMethods
private java.util.Map<java.lang.String,FieldAndMethods> fieldAndMethods
-
staticMembers
private java.util.Map<java.lang.String,java.lang.Object> staticMembers
-
staticFieldAndMethods
private java.util.Map<java.lang.String,FieldAndMethods> staticFieldAndMethods
-
ctors
NativeJavaMethod ctors
-
-
Constructor Detail
-
JavaMembers
JavaMembers(Scriptable scope, java.lang.Class<?> cl)
-
JavaMembers
JavaMembers(Scriptable scope, java.lang.Class<?> cl, boolean includeProtected)
-
-
Method Detail
-
isModularJava
private static boolean isModularJava()
This method returns true if we are on a "modular" version of Java (Java 11 or up). It does not use the SourceVersion class because this is not present on Android.
-
has
boolean has(java.lang.String name, boolean isStatic)
-
get
java.lang.Object get(Scriptable scope, java.lang.String name, java.lang.Object javaObject, boolean isStatic)
-
put
void put(Scriptable scope, java.lang.String name, java.lang.Object javaObject, java.lang.Object value, boolean isStatic)
-
getIds
java.lang.Object[] getIds(boolean isStatic)
-
javaSignature
static java.lang.String javaSignature(java.lang.Class<?> type)
-
liveConnectSignature
static java.lang.String liveConnectSignature(java.lang.Class<?>[] argTypes)
-
findExplicitFunction
private MemberBox findExplicitFunction(java.lang.String name, boolean isStatic)
-
getExplicitFunction
private java.lang.Object getExplicitFunction(Scriptable scope, java.lang.String name, java.lang.Object javaObject, boolean isStatic)
-
discoverAccessibleMethods
private java.lang.reflect.Method[] discoverAccessibleMethods(java.lang.Class<?> clazz, boolean includeProtected, boolean includePrivate)
Retrieves mapping of methods to accessible methods for a class. In case the class is not public, retrieves methods with same signature as its public methods from public superclasses and interfaces (if they exist). Basically upcasts every method to the nearest accessible method.
-
discoverAccessibleMethods
private void discoverAccessibleMethods(java.lang.Class<?> clazz, java.util.Map<JavaMembers.MethodSignature,java.lang.reflect.Method> map, boolean includeProtected, boolean includePrivate)
-
discoverPublicMethods
void discoverPublicMethods(java.lang.Class<?> clazz, java.util.Map<JavaMembers.MethodSignature,java.lang.reflect.Method> map)
-
registerMethod
static void registerMethod(java.util.Map<JavaMembers.MethodSignature,java.lang.reflect.Method> map, java.lang.reflect.Method method)
-
reflect
private void reflect(Context cx, Scriptable scope, boolean includeProtected, boolean includePrivate)
-
getAccessibleConstructors
private java.lang.reflect.Constructor<?>[] getAccessibleConstructors(boolean includePrivate)
-
getAccessibleFields
private java.lang.reflect.Field[] getAccessibleFields(boolean includeProtected, boolean includePrivate)
-
findGetter
private static MemberBox findGetter(boolean isStatic, java.util.Map<java.lang.String,java.lang.Object> ht, java.lang.String prefix, java.lang.String propertyName)
-
extractSetMethod
private static MemberBox extractSetMethod(java.lang.Class<?> type, MemberBox[] methods, boolean isStatic)
-
getFieldAndMethodsObjects
java.util.Map<java.lang.String,FieldAndMethods> getFieldAndMethodsObjects(Scriptable scope, java.lang.Object javaObject, boolean isStatic)
-
lookupClass
static JavaMembers lookupClass(Scriptable scope, java.lang.Class<?> dynamicType, java.lang.Class<?> staticType, boolean includeProtected)
-
createJavaMembers
private static JavaMembers createJavaMembers(Scriptable associatedScope, java.lang.Class<?> cl, boolean includeProtected)
-
getSecurityContext
private static java.lang.Object getSecurityContext()
-
reportMemberNotFound
java.lang.RuntimeException reportMemberNotFound(java.lang.String memberName)
-
-