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.

Since:
1.0

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
 Class<?> getClassByName(String className)
          Gets a class by name through this introspector class loader.
 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.
 Method[] getMethods(Class<?> c, String methodName)
          Gets the array of accessible method 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

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.


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