org.apache.commons.jexl.util.introspection

## Class IntrospectorBase

- java.lang.Object
- - org.apache.commons.jexl.util.introspection.IntrospectorBase

Direct Known Subclasses:
  Introspector

    public class IntrospectorBase
    extends java.lang.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 for

Since:
  1.0
Version:
  $Id: IntrospectorBase.java 584046 2007-10-12 05:14:37Z proyal $
Author:
  Jason van Zyl, Bob McWhirter, Attila Szegedi, Paulo Gaspar, Henning P. Schmiedehausen

### Field Summary

Fields
`protected java.util.Map` `classMethodMaps` Holds the method maps for the classes we know about, keyed by Class object.

### Constructor Summary

Constructors
Constructor and Description
`IntrospectorBase(org.apache.commons.logging.Log rlog)`

### Method Summary

Methods
`protected void` `clearCache()` Clears the classmap and classname caches.
`protected ClassMap` `createClassMap(java.lang.Class c)` Creates a class map for specific class and registers it in the cache.
`java.lang.reflect.Method` `getMethod(java.lang.Class c, java.lang.String name, java.lang.Object[] params)` Gets the method defined by `name` and `params` for the Class `c`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### classMethodMaps

    protected final java.util.Map classMethodMaps

Holds the method maps for the classes we know about, keyed by Class object.

### Constructor Detail

#### IntrospectorBase

    public IntrospectorBase(org.apache.commons.logging.Log rlog)

### Method Detail

#### getMethod

    public java.lang.reflect.Method getMethod(java.lang.Class c,
                                     java.lang.String name,
                                     java.lang.Object[] params)
                                       throws java.lang.IllegalArgumentException,
                                              MethodMap.AmbiguousException

Gets the method defined by `name` and `params` for the Class `c`.

Parameters:
  `c` - Class in which the method search is taking place
  `name` - Name of the method being searched for
  `params` - An array of Objects (not Classes) that describe the the parameters
Returns:
  The desired Method object.
Throws:
  `java.lang.IllegalArgumentException` - When the parameters passed in can not be used for introspection.
  `MethodMap.AmbiguousException` - When the method map contains more than one match for the requested signature.

#### createClassMap

    protected ClassMap createClassMap(java.lang.Class c)

Creates a class map for specific class and registers it in the cache. Also adds the qualified name to the name->class map for later Classloader change detection.

Parameters:
  `c` - class.
Returns:
  a `ClassMap`

#### clearCache

    protected void clearCache()

Clears the classmap and classname caches.