org.apache.bcel.util
Class SyntheticRepository
java.lang.Object
org.apache.bcel.util.SyntheticRepository
- Repository, java.io.Serializable
public class SyntheticRepository
extends java.lang.Object
This repository is used in situations where a Class is created
outside the realm of a ClassLoader. Classes are loaded from
the file systems using the paths specified in the given
class path. By default, this is the value returned by
ClassPath.getClassPath().
It is designed to be used as a singleton, however it
can also be used with custom classpaths.
/**
Abstract definition of a class repository. Instances may be used
to load classes from different sources and may be used in the
Repository.setRepository method.
$Id: SyntheticRepository.java 386056 2006-03-15 11:31:56Z tcurdt $
DEFAULT_PATH
private static final String DEFAULT_PATH
_instances
private static Map _instances
_loadedClasses
private Map _loadedClasses
SyntheticRepository
private SyntheticRepository(ClassPath path)
clear
public void clear()
Clear all entries from cache.
- clear in interface Repository
findClass
public JavaClass findClass(String className)
Find an already defined (cached) JavaClass object by name.
- findClass in interface Repository
loadClass
public JavaClass loadClass(Class clazz)
throws ClassNotFoundException
Find the JavaClass object for a runtime Class object.
If a class with the same name is already in this Repository,
the Repository version is returned. Otherwise, getResourceAsStream()
is called on the Class object to find the class's representation.
If the representation is found, it is added to the Repository.
- loadClass in interface Repository
clazz
- the runtime Class object
- JavaClass object for given runtime class
loadClass
private JavaClass loadClass(InputStream is,
String className)
throws ClassNotFoundException
loadClass
public JavaClass loadClass(String className)
throws ClassNotFoundException
Find a JavaClass object by name.
If it is already in this Repository, the Repository version
is returned. Otherwise, the Repository's classpath is searched for
the class (and it is added to the Repository if found).
- loadClass in interface Repository
className
- the name of the class