java.lang.Object
edu.internet2.middleware.grouperClientExt.org.apache.commons.jexl2.internal.introspection.IntrospectorBase

public class IntrospectorBase extends Object
This basic function of this class is to return a Method object for a particular class given the name of a method and the parameters to the method in the form of an Object[]

The first time the Introspector sees a class it creates a class method map for the class in question. Basically the class method map is a Hastable where Method objects are keyed by a concatenation of the method name and the names of classes that make up the parameters. For example, a method with the following signature: public void method(String a, StringBuffer b) would be mapped by the key: "method" + "java.lang.String" + "java.lang.StringBuffer" This mapping is performed for all the methods in a class and stored.

Since:
1.0
  • Field Details

    • rlog

      protected final Log rlog
      the logger.
  • Constructor Details

    • IntrospectorBase

      public IntrospectorBase(Log log)
      Create the introspector.
      Parameters:
      log - the logger to use
  • Method Details

    • getClassByName

      public Class<?> getClassByName(String className)
      Gets a class by name through this introspector class loader.
      Parameters:
      className - the class name
      Returns:
      the class instance or null if it could not be found
    • getMethod

      public Method getMethod(Class<?> c, MethodKey key)
      Gets the method defined by the MethodKey for the class c.
      Parameters:
      c - Class in which the method search is taking place
      key - Key of the method being searched for
      Returns:
      The desired method object
      Throws:
      MethodKey.AmbiguousException - if no unambiguous method could be found through introspection
    • getField

      public Field getField(Class<?> c, String key)
      Gets the field named by key for the class c.
      Parameters:
      c - Class in which the field search is taking place
      key - Name of the field being searched for
      Returns:
      the desired field or null if it does not exist or is not accessible
    • getFieldNames

      public String[] getFieldNames(Class<?> c)
      Gets the array of accessible field names known for a given class.
      Parameters:
      c - the class
      Returns:
      the class field names
    • getMethodNames

      public String[] getMethodNames(Class<?> c)
      Gets the array of accessible methods names known for a given class.
      Parameters:
      c - the class
      Returns:
      the class method names
    • getMethods

      public Method[] getMethods(Class<?> c, String methodName)
      Gets the array of accessible method known for a given class.
      Parameters:
      c - the class
      methodName - the method name
      Returns:
      the array of methods (null or not empty)
    • setLoader

      public void setLoader(ClassLoader cloader)
      Sets the class loader used to solve constructors.

      Also cleans the constructors and methods caches.

      Parameters:
      cloader - the class loader; if null, use this instance class loader
    • getConstructor

      public Constructor<?> getConstructor(MethodKey key)
      Gets the constructor defined by the MethodKey.
      Parameters:
      key - Key of the constructor being searched for
      Returns:
      The desired constructor object or null if no unambiguous constructor could be found through introspection.
    • getConstructor

      public Constructor<?> getConstructor(Class<?> c, MethodKey key)
      Gets the constructor defined by the MethodKey.
      Parameters:
      c - the class we want to instantiate
      key - Key of the constructor being searched for
      Returns:
      The desired constructor object or null if no unambiguous constructor could be found through introspection.