org.apache.velocity.util.introspection
Class ClassMap
java.lang.Object
org.apache.velocity.util.introspection.ClassMap
public class ClassMap
extends java.lang.Object
A cache of introspection information for a specific class instance.
Keys java.lang.Method
objects by a concatenation of the
method name and the names of classes that make up the parameters.
$Id: ClassMap.java,v 1.20.8.1 2004/03/03 23:23:08 geirm Exp $
Method | findMethod(String name, Object[] params) - Find a Method using the methodKey
provided.
|
private static Method[] | getAccessibleMethods(Class clazz) - Retrieves public methods for a class.
|
private static int | getAccessibleMethods(Class clazz, ClassMap.MethodInfo[] methodInfos, int upcastCount) - Recursively finds a match for each method, starting with the class, and then
searching the superclass and interfaces.
|
(package private) Class | getCachedClass()
|
private static Method | getPublicMethod(Class clazz, String name, Class[] paramTypes) - Looks up the method with specified name and signature in the first public
superclass or implemented interface of the class.
|
static Method | getPublicMethod(Method method) - For a given method, retrieves its publicly accessible counterpart.
|
private String | makeMethodKey(Method method) - Make a methodKey for the given method using
the concatenation of the name and the
types of the method parameters.
|
private static String | makeMethodKey(String method, Object[] params)
|
private void | populateMethodCache() - Populate the Map of direct hits.
|
OBJECT
private static final Object OBJECT
clazz
private Class clazz
Class passed into the constructor used to as
the basis for the Method map.
methodCache
private Map methodCache
Cache of Methods, or CACHE_MISS, keyed by method
name and actual arguments used to find it.
ClassMap
private ClassMap()
ClassMap
public ClassMap(Class clazz)
Standard constructor
findMethod
public Method findMethod(String name,
Object[] params)
throws MethodMap.AmbiguousException
Find a Method using the methodKey
provided.
Look in the methodMap for an entry. If found,
it'll either be a CACHE_MISS, in which case we
simply give up, or it'll be a Method, in which
case, we return it.
If nothing is found, then we must actually go
and introspect the method from the MethodMap.
getAccessibleMethods
private static Method[] getAccessibleMethods(Class clazz)
Retrieves public methods for a class. In case the class is not
public, retrieves methods with same signature as its public methods
from public superclasses and interfaces (if they exist). Basically
upcasts every method to the nearest acccessible method.
getAccessibleMethods
private static int getAccessibleMethods(Class clazz,
ClassMap.MethodInfo[] methodInfos,
int upcastCount)
Recursively finds a match for each method, starting with the class, and then
searching the superclass and interfaces.
clazz
- Class to checkmethodInfos
- array of methods we are searching to matchupcastCount
- current number of methods we have matched
getCachedClass
(package private) Class getCachedClass()
- the class object whose methods are cached by this map.
getPublicMethod
private static Method getPublicMethod(Class clazz,
String name,
Class[] paramTypes)
Looks up the method with specified name and signature in the first public
superclass or implemented interface of the class.
name
- the name of the methodparamTypes
- the classes of method parameters
getPublicMethod
public static Method getPublicMethod(Method method)
For a given method, retrieves its publicly accessible counterpart.
This method will look for a method with same name
and signature declared in a public superclass or implemented interface of this
method's declaring class. This counterpart method is publicly callable.
method
- a method whose publicly callable counterpart is requested.
- the publicly callable counterpart method. Note that if the parameter
method is itself declared by a public class, this method is an identity
function.
makeMethodKey
private String makeMethodKey(Method method)
Make a methodKey for the given method using
the concatenation of the name and the
types of the method parameters.
makeMethodKey
private static String makeMethodKey(String method,
Object[] params)
populateMethodCache
private void populateMethodCache()
Populate the Map of direct hits. These
are taken from all the public methods
that our class provides.
Copyright B) 2002 Apache Software Foundation. All Rights Reserved.