Package io.github.classgraph
Class PackageInfo
- java.lang.Object
-
- io.github.classgraph.PackageInfo
-
- All Implemented Interfaces:
HasName
,java.lang.Comparable<PackageInfo>
public class PackageInfo extends java.lang.Object implements java.lang.Comparable<PackageInfo>, HasName
Holds metadata about a package encountered during a scan.
-
-
Field Summary
Fields Modifier and Type Field Description private AnnotationInfoList
annotationInfo
AnnotationInfo
for any annotations on the package-info.class file, if present, else null.private java.util.Set<AnnotationInfo>
annotationInfoSet
UniqueAnnotationInfo
objects for any annotations on the package-info.class file, if present, else null.private java.util.Set<PackageInfo>
children
The child packages of this package.private java.util.Map<java.lang.String,ClassInfo>
memberClassNameToClassInfo
Set of classes in the package.private java.lang.String
name
Name of the package.private PackageInfo
parent
The parent package of this package.
-
Constructor Summary
Constructors Constructor Description PackageInfo()
Deerialization constructor.PackageInfo(java.lang.String packageName)
Construct a PackageInfo object.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
addAnnotations(AnnotationInfoList packageAnnotations)
Add annotations found in a package descriptor classfile.(package private) void
addClassInfo(ClassInfo classInfo)
Merge aClassInfo
object for a package-info.class file into this PackageInfo.int
compareTo(PackageInfo o)
boolean
equals(java.lang.Object obj)
AnnotationInfoList
getAnnotationInfo()
Get any annotations on thepackage-info.class
file.AnnotationInfo
getAnnotationInfo(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
Get a the annotation on this package, or null if the package does not have the annotation.AnnotationInfo
getAnnotationInfo(java.lang.String annotationName)
Get a the named annotation on this package, or null if the package does not have the named annotation.PackageInfoList
getChildren()
The child packages of this package, or the empty list if none.ClassInfoList
getClassInfo()
Get theClassInfo
objects for all classes that are members of this package.ClassInfo
getClassInfo(java.lang.String className)
Get theClassInfo
object for the named class in this package, or null if the class was not found in this package.ClassInfoList
getClassInfoRecursive()
Get theClassInfo
objects for all classes that are members of this package or a sub-package.java.lang.String
getName()
The package name ("" for the root package).(package private) static PackageInfo
getOrCreatePackage(java.lang.String packageName, java.util.Map<java.lang.String,PackageInfo> packageNameToPackageInfo, ScanSpec scanSpec)
Get thePackageInfo
object for the named package, creating it if it doesn't exist, and also creatingPackageInfo
objects for any needed parent packages for which aPackageInfo
has not yet been created.PackageInfo
getParent()
The parent package of this package, or null if this is the root package.(package private) static java.lang.String
getParentPackageName(java.lang.String packageOrClassName)
Get the name of the parent package of a parent, or the package of the named class.boolean
hasAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
Check if the package has the annotation.boolean
hasAnnotation(java.lang.String annotationName)
Check if the package has the named annotation.int
hashCode()
private void
obtainClassInfoRecursive(java.util.Set<ClassInfo> reachableClassInfo)
Get theClassInfo
objects within this package recursively.java.lang.String
toString()
-
-
-
Field Detail
-
name
private java.lang.String name
Name of the package.
-
annotationInfoSet
private java.util.Set<AnnotationInfo> annotationInfoSet
UniqueAnnotationInfo
objects for any annotations on the package-info.class file, if present, else null.
-
annotationInfo
private AnnotationInfoList annotationInfo
AnnotationInfo
for any annotations on the package-info.class file, if present, else null.
-
parent
private PackageInfo parent
The parent package of this package.
-
children
private java.util.Set<PackageInfo> children
The child packages of this package.
-
memberClassNameToClassInfo
private java.util.Map<java.lang.String,ClassInfo> memberClassNameToClassInfo
Set of classes in the package.
-
-
Method Detail
-
getName
public java.lang.String getName()
The package name ("" for the root package).
-
addAnnotations
void addAnnotations(AnnotationInfoList packageAnnotations)
Add annotations found in a package descriptor classfile.- Parameters:
packageAnnotations
- the package annotations
-
addClassInfo
void addClassInfo(ClassInfo classInfo)
Merge aClassInfo
object for a package-info.class file into this PackageInfo. (The same package-info.class file may be present in multiple definitions of the package in different modules.)- Parameters:
classInfo
- theClassInfo
object to add to the package.
-
getAnnotationInfo
public AnnotationInfo getAnnotationInfo(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
Get a the annotation on this package, or null if the package does not have the annotation.- Parameters:
annotation
- The annotation.- Returns:
- An
AnnotationInfo
object representing the annotation on this package, or null if the package does not have the annotation.
-
getAnnotationInfo
public AnnotationInfo getAnnotationInfo(java.lang.String annotationName)
Get a the named annotation on this package, or null if the package does not have the named annotation.- Parameters:
annotationName
- The annotation name.- Returns:
- An
AnnotationInfo
object representing the named annotation on this package, or null if the package does not have the named annotation.
-
getAnnotationInfo
public AnnotationInfoList getAnnotationInfo()
Get any annotations on thepackage-info.class
file.- Returns:
- the annotations on the
package-info.class
file.
-
hasAnnotation
public boolean hasAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
Check if the package has the annotation.- Parameters:
annotation
- The annotation.- Returns:
- true if this package has the annotation.
-
hasAnnotation
public boolean hasAnnotation(java.lang.String annotationName)
Check if the package has the named annotation.- Parameters:
annotationName
- The name of an annotation.- Returns:
- true if this package has the named annotation.
-
getParent
public PackageInfo getParent()
The parent package of this package, or null if this is the root package.- Returns:
- the parent package, or null if this is the root package.
-
getChildren
public PackageInfoList getChildren()
The child packages of this package, or the empty list if none.- Returns:
- the child packages, or the empty list if none.
-
getClassInfo
public ClassInfo getClassInfo(java.lang.String className)
Get theClassInfo
object for the named class in this package, or null if the class was not found in this package.- Parameters:
className
- the class name- Returns:
- the
ClassInfo
object for the named class in this package, or null if the class was not found in this package.
-
getClassInfo
public ClassInfoList getClassInfo()
Get theClassInfo
objects for all classes that are members of this package.- Returns:
- the
ClassInfo
objects for all classes that are members of this package.
-
obtainClassInfoRecursive
private void obtainClassInfoRecursive(java.util.Set<ClassInfo> reachableClassInfo)
Get theClassInfo
objects within this package recursively.- Parameters:
reachableClassInfo
- the reachable class info
-
getClassInfoRecursive
public ClassInfoList getClassInfoRecursive()
Get theClassInfo
objects for all classes that are members of this package or a sub-package.- Returns:
- the the
ClassInfo
objects for all classes that are members of this package or a sub-package.
-
getParentPackageName
static java.lang.String getParentPackageName(java.lang.String packageOrClassName)
Get the name of the parent package of a parent, or the package of the named class.- Parameters:
packageOrClassName
- The package or class name.- Returns:
- the parent package, or the package of the named class, or null if packageOrClassName is the root package ("").
-
getOrCreatePackage
static PackageInfo getOrCreatePackage(java.lang.String packageName, java.util.Map<java.lang.String,PackageInfo> packageNameToPackageInfo, ScanSpec scanSpec)
Get thePackageInfo
object for the named package, creating it if it doesn't exist, and also creatingPackageInfo
objects for any needed parent packages for which aPackageInfo
has not yet been created.- Parameters:
packageName
- the package namepackageNameToPackageInfo
- a map from package name to package infoscanSpec
- the ScanSpec.- Returns:
- the
PackageInfo
for the named package.
-
compareTo
public int compareTo(PackageInfo o)
- Specified by:
compareTo
in interfacejava.lang.Comparable<PackageInfo>
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-