org.apache.bcel
Class Repository

java.lang.Object
  extended by org.apache.bcel.Repository

public abstract class Repository
extends Object

The repository maintains informations about class interdependencies, e.g., whether a class is a sub-class of another. Delegates actual class loading to SyntheticRepository with current class path by default.

Version:
$Id: Repository.java 386056 2006-03-15 11:31:56Z tcurdt $
See Also:
Repository, SyntheticRepository

Constructor Summary
Repository()
           
 
Method Summary
static JavaClass addClass(JavaClass clazz)
          Add clazz to repository if there isn't an equally named class already in there.
static void clearCache()
          Clear the repository.
static JavaClass[] getInterfaces(JavaClass clazz)
           
static JavaClass[] getInterfaces(String class_name)
           
static Repository getRepository()
           
static JavaClass[] getSuperClasses(JavaClass clazz)
           
static JavaClass[] getSuperClasses(String class_name)
           
static boolean implementationOf(JavaClass clazz, JavaClass inter)
           
static boolean implementationOf(JavaClass clazz, String inter)
           
static boolean implementationOf(String clazz, JavaClass inter)
           
static boolean implementationOf(String clazz, String inter)
           
static boolean instanceOf(JavaClass clazz, JavaClass super_class)
          Equivalent to runtime "instanceof" operator.
static boolean instanceOf(JavaClass clazz, String super_class)
           
static boolean instanceOf(String clazz, JavaClass super_class)
           
static boolean instanceOf(String clazz, String super_class)
           
static JavaClass lookupClass(Class clazz)
          Try to find class source using the internal repository instance.
static JavaClass lookupClass(String class_name)
          Lookup class somewhere found on your CLASSPATH, or whereever the repository instance looks for it.
static ClassPath.ClassFile lookupClassFile(String class_name)
           
static void removeClass(JavaClass clazz)
          Remove given class from repository.
static void removeClass(String clazz)
          Remove class with given (fully qualified) name from repository.
static void setRepository(Repository rep)
          Set repository instance to be used for class loading
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Repository

public Repository()
Method Detail

getRepository

public static Repository getRepository()
Returns:
currently used repository instance

setRepository

public static void setRepository(Repository rep)
Set repository instance to be used for class loading


lookupClass

public static JavaClass lookupClass(String class_name)
                             throws ClassNotFoundException
Lookup class somewhere found on your CLASSPATH, or whereever the repository instance looks for it.

Returns:
class object for given fully qualified class name
Throws:
ClassNotFoundException - if the class could not be found or parsed correctly

lookupClass

public static JavaClass lookupClass(Class clazz)
                             throws ClassNotFoundException
Try to find class source using the internal repository instance.

Returns:
JavaClass object for given runtime class
Throws:
ClassNotFoundException - if the class could not be found or parsed correctly
See Also:
Class

lookupClassFile

public static ClassPath.ClassFile lookupClassFile(String class_name)
Returns:
class file object for given Java class by looking on the system class path; returns null if the class file can't be found

clearCache

public static void clearCache()
Clear the repository.


addClass

public static JavaClass addClass(JavaClass clazz)
Add clazz to repository if there isn't an equally named class already in there.

Returns:
old entry in repository

removeClass

public static void removeClass(String clazz)
Remove class with given (fully qualified) name from repository.


removeClass

public static void removeClass(JavaClass clazz)
Remove given class from repository.


getSuperClasses

public static JavaClass[] getSuperClasses(JavaClass clazz)
                                   throws ClassNotFoundException
Returns:
list of super classes of clazz in ascending order, i.e., Object is always the last element
Throws:
ClassNotFoundException - if any of the superclasses can't be found

getSuperClasses

public static JavaClass[] getSuperClasses(String class_name)
                                   throws ClassNotFoundException
Returns:
list of super classes of clazz in ascending order, i.e., Object is always the last element.
Throws:
ClassNotFoundException - if the named class or any of its superclasses can't be found

getInterfaces

public static JavaClass[] getInterfaces(JavaClass clazz)
                                 throws ClassNotFoundException
Returns:
all interfaces implemented by class and its super classes and the interfaces that those interfaces extend, and so on. (Some people call this a transitive hull).
Throws:
ClassNotFoundException - if any of the class's superclasses or superinterfaces can't be found

getInterfaces

public static JavaClass[] getInterfaces(String class_name)
                                 throws ClassNotFoundException
Returns:
all interfaces implemented by class and its super classes and the interfaces that extend those interfaces, and so on
Throws:
ClassNotFoundException - if the named class can't be found, or if any of its superclasses or superinterfaces can't be found

instanceOf

public static boolean instanceOf(JavaClass clazz,
                                 JavaClass super_class)
                          throws ClassNotFoundException
Equivalent to runtime "instanceof" operator.

Returns:
true, if clazz is an instance of super_class
Throws:
ClassNotFoundException - if any superclasses or superinterfaces of clazz can't be found

instanceOf

public static boolean instanceOf(String clazz,
                                 String super_class)
                          throws ClassNotFoundException
Returns:
true, if clazz is an instance of super_class
Throws:
ClassNotFoundException - if either clazz or super_class can't be found

instanceOf

public static boolean instanceOf(JavaClass clazz,
                                 String super_class)
                          throws ClassNotFoundException
Returns:
true, if clazz is an instance of super_class
Throws:
ClassNotFoundException - if super_class can't be found

instanceOf

public static boolean instanceOf(String clazz,
                                 JavaClass super_class)
                          throws ClassNotFoundException
Returns:
true, if clazz is an instance of super_class
Throws:
ClassNotFoundException - if clazz can't be found

implementationOf

public static boolean implementationOf(JavaClass clazz,
                                       JavaClass inter)
                                throws ClassNotFoundException
Returns:
true, if clazz is an implementation of interface inter
Throws:
ClassNotFoundException - if any superclasses or superinterfaces of clazz can't be found

implementationOf

public static boolean implementationOf(String clazz,
                                       String inter)
                                throws ClassNotFoundException
Returns:
true, if clazz is an implementation of interface inter
Throws:
ClassNotFoundException - if clazz, inter, or any superclasses or superinterfaces of clazz can't be found

implementationOf

public static boolean implementationOf(JavaClass clazz,
                                       String inter)
                                throws ClassNotFoundException
Returns:
true, if clazz is an implementation of interface inter
Throws:
ClassNotFoundException - if inter or any superclasses or superinterfaces of clazz can't be found

implementationOf

public static boolean implementationOf(String clazz,
                                       JavaClass inter)
                                throws ClassNotFoundException
Returns:
true, if clazz is an implementation of interface inter
Throws:
ClassNotFoundException - if clazz or any superclasses or superinterfaces of clazz can't be found


Copyright © 2002-2006 Apache Software Foundation. All Rights Reserved.