Class IntrospectorBase
- java.lang.Object
-
- org.apache.commons.jexl2.internal.introspection.IntrospectorBase
-
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.
- Since:
- 1.0
-
-
Field Summary
Fields Modifier and Type Field Description protected org.apache.commons.logging.Logrlogthe logger.
-
Constructor Summary
Constructors Constructor Description IntrospectorBase(org.apache.commons.logging.Log log)Create the introspector.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Class<?>getClassByName(java.lang.String className)Gets a class by name through this introspector class loader.java.lang.reflect.Constructor<?>getConstructor(java.lang.Class<?> c, MethodKey key)Gets the constructor defined by theMethodKey.java.lang.reflect.Constructor<?>getConstructor(MethodKey key)Gets the constructor defined by theMethodKey.java.lang.reflect.FieldgetField(java.lang.Class<?> c, java.lang.String key)Gets the field named bykeyfor the classc.java.lang.String[]getFieldNames(java.lang.Class<?> c)Gets the array of accessible field names known for a given class.java.lang.reflect.MethodgetMethod(java.lang.Class<?> c, MethodKey key)Gets the method defined by theMethodKeyfor the classc.java.lang.String[]getMethodNames(java.lang.Class<?> c)Gets the array of accessible methods names known for a given class.java.lang.reflect.Method[]getMethods(java.lang.Class<?> c, java.lang.String methodName)Gets the array of accessible method known for a given class.voidsetLoader(java.lang.ClassLoader cloader)Sets the class loader used to solve constructors.
-
-
-
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 java.lang.Class<?> getClassByName(java.lang.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 java.lang.reflect.Method getMethod(java.lang.Class<?> c, MethodKey key)
Gets the method defined by theMethodKeyfor the classc.- Parameters:
c- Class in which the method search is taking placekey- 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 java.lang.reflect.Field getField(java.lang.Class<?> c, java.lang.String key)
Gets the field named bykeyfor the classc.- Parameters:
c- Class in which the field search is taking placekey- Name of the field being searched for- Returns:
- the desired field or null if it does not exist or is not accessible
-
getFieldNames
public java.lang.String[] getFieldNames(java.lang.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 java.lang.String[] getMethodNames(java.lang.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 java.lang.reflect.Method[] getMethods(java.lang.Class<?> c, java.lang.String methodName)
Gets the array of accessible method known for a given class.- Parameters:
c- the classmethodName- the method name- Returns:
- the array of methods (null or not empty)
-
setLoader
public void setLoader(java.lang.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 java.lang.reflect.Constructor<?> getConstructor(MethodKey key)
Gets the constructor defined by theMethodKey.- 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 java.lang.reflect.Constructor<?> getConstructor(java.lang.Class<?> c, MethodKey key)
Gets the constructor defined by theMethodKey.- Parameters:
c- the class we want to instantiatekey- Key of the constructor being searched for- Returns:
- The desired constructor object or null if no unambiguous constructor could be found through introspection.
-
-