org.apache.commons.jexl2.internal.introspection
Class IntrospectorBase

java.lang.Object
  extended by 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 for

Since:
1.0
Version:
$Id: IntrospectorBase.java 896952 2010-01-07 18:21:29Z henrib $
Author:
Jason van Zyl, Bob McWhirter, Attila Szegedi, Paulo Gaspar, Henning P. Schmiedehausen

Field Summary
protected  org.apache.commons.logging.Log rlog
          the logger.
 
Constructor Summary
IntrospectorBase(org.apache.commons.logging.Log log)
          Create the introspector.
 
Method Summary
 Constructor<?> getConstructor(Class<?> c, MethodKey key)
          Gets the constructor defined by the MethodKey.
 Constructor<?> getConstructor(MethodKey key)
          Gets the constructor defined by the MethodKey.
 Field getField(Class<?> c, String key)
          Gets the field named by key for the class c.
 String[] getFieldNames(Class<?> c)
          Gets the array of accessible field names known for a given class.
 Method getMethod(Class<?> c, MethodKey key)
          Gets the method defined by the MethodKey for the class c.
 String[] getMethodNames(Class<?> c)
          Gets the array of accessible methods names known for a given class.
 void setLoader(ClassLoader cloader)
          Sets the class loader used to solve constructors.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rlog

protected final org.apache.commons.logging.Log rlog
the logger.

Constructor Detail

IntrospectorBase

public IntrospectorBase(org.apache.commons.logging.Log log)
Create the introspector.

Parameters:
log - the logger to use
Method Detail

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:
IllegalArgumentException - When the parameters passed in can not be used for 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

setLoader

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

Also cleans the constructors cache.

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.
Throws:
IllegalArgumentException - When the parameters passed in can not be used for 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.
Throws:
IllegalArgumentException - When the parameters passed in can not be used for introspection.


Copyright © 2001-2010 The Apache Software Foundation. All Rights Reserved.