kmy.jint.util
Class ClassUtilities

java.lang.Object
  |
  +--kmy.jint.util.ClassUtilities

public class ClassUtilities
extends java.lang.Object
implements DefinitionConst


Field Summary
(package private)  java.lang.Object anyClass
           
(package private)  java.lang.Object argListClass
           
(package private) static java.lang.Object[] EMPTY
           
(package private)  java.lang.Object INIT
           
(package private) static int LESS_SPECIFIC
           
(package private) static int MATCH_FAIL
           
(package private) static int MATCH_OK
           
(package private) static int MATCH_PERFECT
           
(package private)  ClassMethods methods
           
(package private) static int MORE_SPECIFIC
           
(package private) static int SAME
           
(package private) static int UNDEFINED
           
 
Fields inherited from interface kmy.jint.constants.DefinitionConst
ABSTRACT_FLAG, ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_MASK, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONST_FLAG, EXPLICIT_FLAG, FINAL_FLAG, INTERFACE_FLAG, METHOD_SCOPE_FLAG, MUST_BE_CLASS_FLAG, NATIVE_FLAG, PACKAGE_PRIVATE_FLAG, PRIVATE_FLAG, PROTECTED_FLAG, PUBLIC_FLAG, SCRIPT_STYLE_FLAG, SELF_USED_FLAG, STATIC_FLAG, STRICT_FLAG, SYNCHRONIZED_FLAG, TRANSIENT_FLAG, VOLATILE_FLAG, WHERE_FLAG, WORLD_FLAG
 
Constructor Summary
ClassUtilities(ClassMethods methods)
           
 
Method Summary
private  int argListMatch(java.lang.Object[] actual, java.lang.Object[] formal)
           
private  int compareClasses(int prev, java.lang.Object c1, java.lang.Object c2)
           
private  int compareClasses(java.lang.Object class1, java.lang.Object class2)
           
private  int compareMethods(java.lang.Object method1, java.lang.Object method2)
           
 java.lang.Object findField(java.lang.Object type0, java.lang.Object name, java.lang.Object accessor)
           
 java.util.Enumeration findMethod(java.lang.Object type, java.lang.Object name, java.lang.Object[] argTypes, java.lang.Object accessor)
           
 java.util.Enumeration findMethod(java.lang.Object type, java.lang.Object name, java.lang.Object[] argTypes, java.lang.Object accessor, java.util.Enumeration extraMethods, boolean thisClassOnly)
          Search for methods that match given name and parameter type list and are accessible from a given class.
private  java.util.Enumeration getMethods(java.lang.Object clazz, java.lang.Object name, int nargs)
           
private  boolean isFieldAccessible(java.lang.Object declaringClass, java.lang.Object field, java.lang.Object accessorClass)
           
private  boolean isMemberAccessible(java.lang.Object clazz, int modifiers, java.lang.Object accessorClass)
           
private  boolean isMethodAccessible(java.lang.Object method, java.lang.Object accessorClass)
           
private  boolean processMethods(java.lang.Object[] argTypes, java.util.Enumeration list, java.util.Vector acc, java.lang.Object accessor)
           
private  boolean samePackage(java.lang.Object clazz1, java.lang.Object clazz2)
           
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

MATCH_PERFECT

static final int MATCH_PERFECT

MATCH_OK

static final int MATCH_OK

MATCH_FAIL

static final int MATCH_FAIL

MORE_SPECIFIC

static final int MORE_SPECIFIC

LESS_SPECIFIC

static final int LESS_SPECIFIC

UNDEFINED

static final int UNDEFINED

SAME

static final int SAME

methods

ClassMethods methods

argListClass

java.lang.Object argListClass

anyClass

java.lang.Object anyClass

INIT

java.lang.Object INIT

EMPTY

static java.lang.Object[] EMPTY
Constructor Detail

ClassUtilities

public ClassUtilities(ClassMethods methods)
Method Detail

samePackage

private boolean samePackage(java.lang.Object clazz1,
                            java.lang.Object clazz2)

isMemberAccessible

private boolean isMemberAccessible(java.lang.Object clazz,
                                   int modifiers,
                                   java.lang.Object accessorClass)

isMethodAccessible

private boolean isMethodAccessible(java.lang.Object method,
                                   java.lang.Object accessorClass)

isFieldAccessible

private boolean isFieldAccessible(java.lang.Object declaringClass,
                                  java.lang.Object field,
                                  java.lang.Object accessorClass)

argListMatch

private int argListMatch(java.lang.Object[] actual,
                         java.lang.Object[] formal)

compareClasses

private int compareClasses(java.lang.Object class1,
                           java.lang.Object class2)

compareClasses

private int compareClasses(int prev,
                           java.lang.Object c1,
                           java.lang.Object c2)

compareMethods

private int compareMethods(java.lang.Object method1,
                           java.lang.Object method2)

processMethods

private boolean processMethods(java.lang.Object[] argTypes,
                               java.util.Enumeration list,
                               java.util.Vector acc,
                               java.lang.Object accessor)

getMethods

private java.util.Enumeration getMethods(java.lang.Object clazz,
                                         java.lang.Object name,
                                         int nargs)

findMethod

public java.util.Enumeration findMethod(java.lang.Object type,
                                        java.lang.Object name,
                                        java.lang.Object[] argTypes,
                                        java.lang.Object accessor)

findMethod

public java.util.Enumeration findMethod(java.lang.Object type,
                                        java.lang.Object name,
                                        java.lang.Object[] argTypes,
                                        java.lang.Object accessor,
                                        java.util.Enumeration extraMethods,
                                        boolean thisClassOnly)
Search for methods that match given name and parameter type list and are accessible from a given class. Also looks in superclasses and implemented interfaces unless thisClassOnly parameter is true.
Parameters:
type - class being searched
name - method name
argTypes - list of parameter types
accessor - accessor class
extraMethods - list of extra methods that should be considered
thisClassOnly - if true only this class, but not its superclasses are searched

findField

public java.lang.Object findField(java.lang.Object type0,
                                  java.lang.Object name,
                                  java.lang.Object accessor)