org.apache.geronimo.kernel
Class ClassLoading

java.lang.Object
  extended by org.apache.geronimo.kernel.ClassLoading

public class ClassLoading
extends Object

Utility class for loading classes by a variety of name variations.

Supported names types are:

1) Fully qualified class name (e.g., "java.lang.String", "org.apache.geronimo.kernel.ClassLoading" 2) Method signature encoding ("Ljava.lang.String;", "J", "I", etc.) 3) Primitive type names ("int", "boolean", etc.) 4) Method array signature strings ("[I", "[Ljava.lang.String") 5) Arrays using Java code format ("int[]", "java.lang.String[][]")

The classes are loaded using the provided class loader. For the basic types, the primitive reflection types are returned.


Constructor Summary
ClassLoading()
           
 
Method Summary
static Set getAllTypes(Class type)
           
static String getClassName(Class type)
          Map a class object back to a class name.
static Class loadClass(String className, ClassLoader classLoader)
          Load a class that matches the requested name, using the provided class loader context.
static Class[] reduceInterfaces(Class[] source)
          If there are multiple interfaces, and some of them extend each other, eliminate the superclass in favor of the subclasses that extend them.
static Set reduceInterfaces(Set source)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClassLoading

public ClassLoading()
Method Detail

loadClass

public static Class loadClass(String className,
                              ClassLoader classLoader)
                       throws ClassNotFoundException
Load a class that matches the requested name, using the provided class loader context.

The class name may be a standard class name, the name of a primitive type Java reflection class (e.g., "boolean" or "int"), or a type in method type signature encoding. Array classes in either encoding form are also processed.

Parameters:
className - The name of the required class.
classLoader - The class loader used to resolve the class object.
Returns:
The Class object resolved from "className".
Throws:
ClassNotFoundException - When unable to resolve the class object.
IllegalArgumentException - If either argument is null.

getClassName

public static String getClassName(Class type)
Map a class object back to a class name. The returned class object must be "round trippable", which means

type == ClassLoading.loadClass(ClassLoading.getClassName(type), classLoader)

must be true. To ensure this, the class name is always returned in method signature format.

Parameters:
type - The class object we convert into name form.
Returns:
A string representation of the class name, in method signature format.

getAllTypes

public static Set getAllTypes(Class type)

reduceInterfaces

public static Set reduceInterfaces(Set source)

reduceInterfaces

public static Class[] reduceInterfaces(Class[] source)
If there are multiple interfaces, and some of them extend each other, eliminate the superclass in favor of the subclasses that extend them. If one of the entries is a class (not an interface), make sure it's the first one in the array. If more than one of the entries is a class, throws an IllegalArgumentException

Parameters:
source - the original list of interfaces
Returns:
the equal or smaller list of interfaces


Copyright © 2006 Apache Software Foundation. All Rights Reserved.