public class ClassLoaderInfo extends java.lang.Object implements java.lang.Iterable<ClassInfo>, java.lang.Comparable<ClassLoaderInfo>, java.lang.Cloneable, Restorable<ClassLoaderInfo>
Modifier and Type | Field and Description |
---|---|
protected java.util.Map<java.lang.String,java.lang.Boolean> |
classAssertionStatus |
protected ClassInfo |
classInfo |
protected static Config |
config |
protected ClassPath |
cp |
protected boolean |
defaultAssertionStatus |
protected static SparseIntVector |
globalCLids |
protected int |
id |
protected static java.lang.String |
ID_FIELD |
protected boolean |
isDefaultSet |
protected static java.util.Map<java.lang.String,AnnotationInfo> |
loadedAnnotations
map from annotation class file URLs to AnnotationInfos, which have a separate JPF internal
representation.
|
protected static java.util.Map<java.lang.String,ClassInfo> |
loadedClasses
Map from class file URLs to first ClassInfo that was read from it.
|
protected int |
objRef |
protected java.util.Map<java.lang.String,java.lang.Boolean> |
packageAssertionStatus |
protected ClassLoaderInfo |
parent |
protected java.util.Map<java.lang.String,AnnotationInfo> |
resolvedAnnotations |
protected java.util.Map<java.lang.String,ClassInfo> |
resolvedClasses |
protected boolean |
roundTripRequired |
protected Statics |
statics |
Modifier | Constructor and Description |
---|---|
protected |
ClassLoaderInfo(VM vm)
for use from SystemClassLoaderInfo ctor, which doesn't have a ClassLoader object
yet and has to set cp and id itself
|
protected |
ClassLoaderInfo(VM vm,
int objRef,
ClassPath cp,
ClassLoaderInfo parent)
for all other classloaders, which require an already instantiated ClassLoader object
|
Modifier and Type | Method and Description |
---|---|
void |
addClassPathElement(java.lang.String path) |
protected void |
addResolvedClass(ClassInfo ci) |
void |
clearAssertionStatus() |
int |
compareTo(ClassLoaderInfo that)
Comparison for sorting based on index.
|
protected int |
computeId(int objRef) |
protected ClassFileContainer |
createClassFileContainer(java.lang.String path) |
protected ClassInfo |
createClassInfo(java.lang.String typeName,
ClassFileMatch match,
ClassLoaderInfo definingLoader) |
protected ClassInfo |
createClassInfo(java.lang.String typeName,
java.lang.String url,
byte[] data,
ClassLoaderInfo definingLoader) |
protected Statics |
createStatics(VM vm) |
protected boolean |
desiredAssertionStatus(java.lang.String cname) |
java.lang.String |
findResource(java.lang.String resourceName)
Finds the first Resource in the classpath which has the specified name.
|
java.lang.String[] |
findResources(java.lang.String resourceName)
Finds all resources in the classpath with the given name.
|
protected ClassInfo |
getAlreadyResolvedClassInfo(java.lang.String cname) |
ClassInfo |
getClassInfo()
Returns the type of the corresponding class loader object
|
ClassInfo |
getClassInfo(int id) |
int |
getClassLoaderObjectRef()
Returns the object reference.
|
ClassPath |
getClassPath() |
java.lang.String[] |
getClassPathElements() |
static ClassLoaderInfo |
getCurrentClassLoader() |
static ClassLoaderInfo |
getCurrentClassLoader(ThreadInfo ti) |
static ClassInfo |
getCurrentResolvedClassInfo(java.lang.String clsName) |
static SystemClassLoaderInfo |
getCurrentSystemClassLoader() |
protected ClassInfo |
getDefinedClassInfo(java.lang.String typeName) |
ElementInfo |
getElementInfo(java.lang.String typeName) |
int |
getId()
this is our internal, search global id that is used for the
canonical root set
|
ClassInfo |
getInitializedClassInfo(java.lang.String clsName,
ThreadInfo ti)
this one is for clients that need to synchronously get an initialized classinfo.
|
protected ClassFileMatch |
getMatch(java.lang.String typeName) |
Memento<ClassLoaderInfo> |
getMemento() |
Memento<ClassLoaderInfo> |
getMemento(MementoFactory factory) |
ElementInfo |
getModifiableElementInfo(java.lang.String typeName) |
static int |
getNumberOfLoadedClasses() |
java.util.Map<java.lang.String,ClassLoaderInfo> |
getPackages() |
AnnotationInfo |
getResolvedAnnotationInfo(java.lang.String typeName) |
ClassInfo |
getResolvedAnnotationProxy(ClassInfo ciAnnotation) |
ClassInfo |
getResolvedClassInfo(java.lang.String className)
obtain ClassInfo object for given class name
if the requested class or any of its superclasses and interfaces
is not found this method will throw a ClassInfoException.
|
ClassInfo |
getResolvedClassInfo(java.lang.String className,
byte[] data,
int offset,
int length)
this is for user defined ClassLoaders that explicitly provide the class file data
|
ClassInfo |
getResolvedFuncObjType(int bsIdx,
ClassInfo fiClassInfo,
java.lang.String samUniqueName,
BootstrapMethodInfo bmi,
java.lang.String[] freeVariableTypeNames)
This method returns a type which implements the given functional interface
and contains a method that captures the behavior of the lambda expression.
|
protected java.lang.String |
getResourceURL(java.lang.String path,
java.lang.String resource) |
Statics |
getStatics() |
SystemClassLoaderInfo |
getSystemClassLoader() |
static ClassInfo |
getSystemResolvedClassInfo(java.lang.String clsName) |
protected boolean |
hasResolved(java.lang.String cname) |
boolean |
isAlive()
For now, this always returns true, and it used while the classloader is being
serialized.
|
protected boolean |
isRoundTripRequired()
For optimizing the class loading mechanism, if the class loader class and the
classes of the whole parents hierarchy are descendant of URLClassLoader and
do not override the ClassLoader.loadClass() & URLClassLoader.findClass, resolving
the class is done natively within JPF
|
boolean |
isSystemClassLoader() |
java.util.Iterator<ClassInfo> |
iterator()
Returns an iterator over the classes that are defined (directly loaded) by this classloader.
|
ClassInfo |
loadClass(java.lang.String cname) |
protected ClassInfo |
loadClassOnJPF(java.lang.String typeName) |
protected ClassInfo |
loadClassOnJVM(java.lang.String cname) |
protected ClassInfo |
loadSystemClass(java.lang.String clsName) |
protected void |
pushloadClassFrame(java.lang.String typeName) |
protected void |
setAttributes(ClassInfo ci) |
void |
setClassAssertionStatus(java.lang.String cname,
boolean enabled) |
void |
setDefaultAssertionStatus(boolean enabled) |
void |
setPackageAssertionStatus(java.lang.String pname,
boolean enabled) |
ClassInfo |
tryGetResolvedClassInfo(java.lang.String className)
obtain ClassInfo from context that does not care about resolution, i.e.
|
protected static final java.lang.String ID_FIELD
protected static Config config
protected static SparseIntVector globalCLids
protected static java.util.Map<java.lang.String,ClassInfo> loadedClasses
protected static java.util.Map<java.lang.String,AnnotationInfo> loadedAnnotations
protected java.util.Map<java.lang.String,ClassInfo> resolvedClasses
protected java.util.Map<java.lang.String,AnnotationInfo> resolvedAnnotations
protected ClassPath cp
protected ClassInfo classInfo
protected Statics statics
protected boolean roundTripRequired
protected int id
protected int objRef
protected ClassLoaderInfo parent
protected java.util.Map<java.lang.String,java.lang.Boolean> classAssertionStatus
protected java.util.Map<java.lang.String,java.lang.Boolean> packageAssertionStatus
protected boolean defaultAssertionStatus
protected boolean isDefaultSet
protected ClassLoaderInfo(VM vm)
protected ClassLoaderInfo(VM vm, int objRef, ClassPath cp, ClassLoaderInfo parent)
public static int getNumberOfLoadedClasses()
public static ClassInfo getCurrentResolvedClassInfo(java.lang.String clsName)
public static ClassInfo getSystemResolvedClassInfo(java.lang.String clsName)
public Memento<ClassLoaderInfo> getMemento(MementoFactory factory)
getMemento
in interface Restorable<ClassLoaderInfo>
public Memento<ClassLoaderInfo> getMemento()
public int getId()
public ClassInfo getClassInfo()
public int getClassLoaderObjectRef()
protected int computeId(int objRef)
protected boolean isRoundTripRequired()
public boolean isSystemClassLoader()
public static ClassLoaderInfo getCurrentClassLoader()
public static ClassLoaderInfo getCurrentClassLoader(ThreadInfo ti)
public static SystemClassLoaderInfo getCurrentSystemClassLoader()
public SystemClassLoaderInfo getSystemClassLoader()
protected ClassInfo loadSystemClass(java.lang.String clsName)
protected ClassInfo createClassInfo(java.lang.String typeName, ClassFileMatch match, ClassLoaderInfo definingLoader) throws ClassParseException
ClassParseException
protected ClassInfo createClassInfo(java.lang.String typeName, java.lang.String url, byte[] data, ClassLoaderInfo definingLoader) throws ClassParseException
ClassParseException
protected void setAttributes(ClassInfo ci)
public ClassInfo getResolvedClassInfo(java.lang.String className) throws ClassInfoException
ClassInfoException
public ClassInfo getResolvedClassInfo(java.lang.String className, byte[] data, int offset, int length) throws ClassInfoException
ClassInfoException
public AnnotationInfo getResolvedAnnotationInfo(java.lang.String typeName) throws ClassInfoException
ClassInfoException
public ClassInfo getResolvedFuncObjType(int bsIdx, ClassInfo fiClassInfo, java.lang.String samUniqueName, BootstrapMethodInfo bmi, java.lang.String[] freeVariableTypeNames)
protected ClassInfo getAlreadyResolvedClassInfo(java.lang.String cname)
protected void addResolvedClass(ClassInfo ci)
protected boolean hasResolved(java.lang.String cname)
public ClassInfo getInitializedClassInfo(java.lang.String clsName, ThreadInfo ti)
public ClassInfo tryGetResolvedClassInfo(java.lang.String className)
className
- fully qualified classname to get a ClassInfo forpublic ClassInfo getClassInfo(int id)
public ClassInfo loadClass(java.lang.String cname)
protected ClassInfo loadClassOnJVM(java.lang.String cname)
protected ClassInfo loadClassOnJPF(java.lang.String typeName)
protected void pushloadClassFrame(java.lang.String typeName)
protected ClassInfo getDefinedClassInfo(java.lang.String typeName)
public ElementInfo getElementInfo(java.lang.String typeName)
public ElementInfo getModifiableElementInfo(java.lang.String typeName)
protected ClassFileMatch getMatch(java.lang.String typeName)
public java.lang.String findResource(java.lang.String resourceName)
public java.lang.String[] findResources(java.lang.String resourceName)
protected java.lang.String getResourceURL(java.lang.String path, java.lang.String resource)
public Statics getStatics()
public ClassPath getClassPath()
public java.lang.String[] getClassPathElements()
protected ClassFileContainer createClassFileContainer(java.lang.String path)
public void addClassPathElement(java.lang.String path)
public int compareTo(ClassLoaderInfo that)
compareTo
in interface java.lang.Comparable<ClassLoaderInfo>
public java.util.Iterator<ClassInfo> iterator()
iterator
in interface java.lang.Iterable<ClassInfo>
public boolean isAlive()
public java.util.Map<java.lang.String,ClassLoaderInfo> getPackages()
protected boolean desiredAssertionStatus(java.lang.String cname)
public void setDefaultAssertionStatus(boolean enabled)
public void setClassAssertionStatus(java.lang.String cname, boolean enabled)
public void setPackageAssertionStatus(java.lang.String pname, boolean enabled)
public void clearAssertionStatus()