to.etc.util
Class ClassUtil

java.lang.Object
  extended by to.etc.util.ClassUtil

public final class ClassUtil
extends java.lang.Object


Method Summary
static void appendClassHierarchy(java.util.List<java.lang.Class<?>> res, java.lang.Class<?> clzin)
           
static java.util.List<PropertyInfo> calculateProperties(java.lang.Class<?> cl)
          DO NOT USE - uncached calculation of a class's properties.
static java.lang.Object callMethod(java.lang.Object on, java.lang.String name, java.lang.Object... param)
          Calls the given method with the given parameters in a given class instance.
static java.lang.Object callObjectMethod(java.lang.Object src, java.lang.String name, java.lang.Class<?>[] types, java.lang.Object... parameters)
          Generic caller of a method using reflection.
static
<T extends java.lang.annotation.Annotation>
T
findAnnotation(java.lang.annotation.Annotation[] ar, java.lang.Class<T> clz)
          Locates an annotation in an array of 'm, returns null if not found.
static java.lang.Class<?> findCollectionType(java.lang.reflect.Type genericType)
          This tries to determine the value class for a property defined as some kind of Collection<T> or T[].
static java.lang.reflect.Method findMethod(java.lang.Class<?> clz, java.lang.String name, java.lang.Class<?>[] param)
           
static java.lang.reflect.Method findMethod(java.lang.Class<?> clz, java.lang.String name, java.lang.Object[] param)
          Tries to find a method that can be called using the specified parameters.
static PropertyInfo findPropertyInfo(java.lang.Class<?> clz, java.lang.String property)
           
static java.net.URL[] findUrlsFor(java.lang.ClassLoader loader)
          Scan the classloader hierarchy and find all urls.
static java.util.List<java.lang.Class<?>> getClassHierarchy(java.lang.Class<?> clzin)
           
static ClassInfo getClassInfo(java.lang.Class<?> clz)
          Get introspected bean information for the class.
static java.lang.String getMethodName(java.lang.String prefix, java.lang.String property)
           
static java.util.List<PropertyInfo> getProperties(java.lang.Class<?> cl)
           
static boolean isCollectionOrArrayType(java.lang.Class<?> clz)
           
static java.lang.Class<?> loadClass(java.lang.ClassLoader cl, java.lang.String cname)
           
static java.lang.String propertyNameToJava(java.lang.String in)
           
static void propertyNameToJava(java.lang.StringBuilder sb, java.lang.String in)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

callMethod

public static java.lang.Object callMethod(java.lang.Object on,
                                          java.lang.String name,
                                          java.lang.Object... param)
                                   throws java.lang.Exception
Calls the given method with the given parameters in a given class instance. Used to access classes whose definition are not to be linked to the code.

Parameters:
on -
name -
objects -
Returns:
Throws:
java.lang.NoSuchMethodException - if no suitable method can be found in the object.
java.lang.Exception

findMethod

public static java.lang.reflect.Method findMethod(java.lang.Class<?> clz,
                                                  java.lang.String name,
                                                  java.lang.Class<?>[] param)

findMethod

public static java.lang.reflect.Method findMethod(java.lang.Class<?> clz,
                                                  java.lang.String name,
                                                  java.lang.Object[] param)
Tries to find a method that can be called using the specified parameters.

Parameters:
clz -
name -
param -
Returns:

getClassInfo

public static ClassInfo getClassInfo(java.lang.Class<?> clz)
Get introspected bean information for the class. This info is cached so access will be fast after the 1st try.

Parameters:
clz -
Returns:

findPropertyInfo

public static PropertyInfo findPropertyInfo(java.lang.Class<?> clz,
                                            java.lang.String property)

getProperties

public static java.util.List<PropertyInfo> getProperties(java.lang.Class<?> cl)

calculateProperties

public static java.util.List<PropertyInfo> calculateProperties(java.lang.Class<?> cl)
DO NOT USE - uncached calculation of a class's properties.

Parameters:
cl -
Returns:

getMethodName

public static java.lang.String getMethodName(java.lang.String prefix,
                                             java.lang.String property)

callObjectMethod

public static java.lang.Object callObjectMethod(java.lang.Object src,
                                                java.lang.String name,
                                                java.lang.Class<?>[] types,
                                                java.lang.Object... parameters)
                                         throws java.sql.SQLException
Generic caller of a method using reflection. This prevents us from having to link to the stupid Oracle driver.

Parameters:
src -
name -
Returns:
Throws:
java.lang.Exception
java.sql.SQLException

loadClass

public static final java.lang.Class<?> loadClass(java.lang.ClassLoader cl,
                                                 java.lang.String cname)

findAnnotation

public static <T extends java.lang.annotation.Annotation> T findAnnotation(java.lang.annotation.Annotation[] ar,
                                                                           java.lang.Class<T> clz)
Locates an annotation in an array of 'm, returns null if not found.

Type Parameters:
T -
Parameters:
ar -
clz -

propertyNameToJava

public static void propertyNameToJava(java.lang.StringBuilder sb,
                                      java.lang.String in)

propertyNameToJava

public static java.lang.String propertyNameToJava(java.lang.String in)

findCollectionType

public static java.lang.Class<?> findCollectionType(java.lang.reflect.Type genericType)
This tries to determine the value class for a property defined as some kind of Collection<T> or T[]. If the type cannot be determined this returns null.

Parameters:
genericType -
Returns:

isCollectionOrArrayType

public static boolean isCollectionOrArrayType(java.lang.Class<?> clz)

getClassHierarchy

public static java.util.List<java.lang.Class<?>> getClassHierarchy(java.lang.Class<?> clzin)

appendClassHierarchy

public static void appendClassHierarchy(java.util.List<java.lang.Class<?>> res,
                                        java.lang.Class<?> clzin)

findUrlsFor

public static java.net.URL[] findUrlsFor(java.lang.ClassLoader loader)
Scan the classloader hierarchy and find all urls.

Parameters:
loader -
Returns: