Class JavaMembers

    • 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
    • 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)
      • extractGetMethod

        private static MemberBox extractGetMethod​(MemberBox[] methods,
                                                  boolean isStatic)
      • extractSetMethod

        private static MemberBox extractSetMethod​(java.lang.Class<?> type,
                                                  MemberBox[] methods,
                                                  boolean isStatic)
      • extractSetMethod

        private static MemberBox extractSetMethod​(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)