Class FileSystemClassInformationRepository
- java.lang.Object
-
- com.offbynull.coroutines.instrumenter.asm.FileSystemClassInformationRepository
-
- All Implemented Interfaces:
ClassInformationRepository
public final class FileSystemClassInformationRepository extends java.lang.Object implements ClassInformationRepository
Provides information on classes contained within JARs and folders.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,ClassInformation>
hierarchyMap
-
Constructor Summary
Constructors Constructor Description FileSystemClassInformationRepository()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addClasspath(java.util.List<java.io.File> classpath)
Add classes contained within a list of JAR files and folders.private void
addDirectory(java.io.File directory)
void
addIndividual(java.lang.String className, ClassInformation classInformation)
Add a custom class.private void
addJar(java.io.File file)
static FileSystemClassInformationRepository
create(java.util.List<java.io.File> initialClasspath)
Constructs aFileSystemClassInformationRepository
object and loads it up with the classes in a classpath.ClassInformation
getInformation(java.lang.String internalClassName)
Get information for a class.private void
populateSuperClassMapping(java.io.InputStream is)
-
-
-
Field Detail
-
hierarchyMap
private final java.util.Map<java.lang.String,ClassInformation> hierarchyMap
-
-
Method Detail
-
create
public static FileSystemClassInformationRepository create(java.util.List<java.io.File> initialClasspath) throws java.io.IOException
Constructs aFileSystemClassInformationRepository
object and loads it up with the classes in a classpath.- Parameters:
initialClasspath
- classpath to scan for class information (can be JAR files and/or folders)- Returns:
- newly created
FileSystemClassInformationRepository
object - Throws:
java.lang.NullPointerException
- if any argument isnull
or containsnull
elementsjava.io.IOException
- if an IO error occurs
-
getInformation
public ClassInformation getInformation(java.lang.String internalClassName)
Description copied from interface:ClassInformationRepository
Get information for a class.This method returns class information as if it were encountered in a class file. In a class file, if the class is an interface, then its superclass is set to
Object
. Note that this is different from whatClass.getSuperclass()
returns when the class represents an interface (it returnsnull
).- Specified by:
getInformation
in interfaceClassInformationRepository
- Parameters:
internalClassName
- internal class name- Returns:
- information for that class, or
null
if not found
-
addIndividual
public void addIndividual(java.lang.String className, ClassInformation classInformation)
Add a custom class.- Parameters:
className
- name of classclassInformation
- information for class- Throws:
java.lang.NullPointerException
- if any argument isnull
java.lang.IllegalArgumentException
- ifclassName
already exists in this repository
-
addClasspath
public void addClasspath(java.util.List<java.io.File> classpath) throws java.io.IOException
Add classes contained within a list of JAR files and folders. Note that if a duplicate class is encountered, the original is kept.- Parameters:
classpath
- list of JARs and folders to scan- Throws:
java.lang.NullPointerException
- if any argument isnull
or containsnull
elementsjava.io.IOException
- if an IO error occurs
-
addDirectory
private void addDirectory(java.io.File directory) throws java.io.IOException
- Throws:
java.io.IOException
-
addJar
private void addJar(java.io.File file) throws java.io.IOException
- Throws:
java.io.IOException
-
populateSuperClassMapping
private void populateSuperClassMapping(java.io.InputStream is) throws java.io.IOException
- Throws:
java.io.IOException
-
-