Top Description Fields Constructors Methods
io.github.classgraph

public Class PackageInfo

extends Object
implements Comparable<PackageInfo>, HasName
Class Inheritance
All Implemented Interfaces
io.github.classgraph.HasName, java.lang.Comparable
Imports
java.lang.annotation.Annotation, java.util.Comparator, .HashMap, .HashSet, .LinkedHashSet, .Map, .Set, nonapi.io.github.classgraph.scanspec.ScanSpec, nonapi.io.github.classgraph.utils.Assert, .CollectionUtils

Holds metadata about a package encountered during a scan.

Field Summary

Modifier and TypeField and Description
private AnnotationInfoList
annotationInfo

AnnotationInfo for any annotations on the package-info.class file, if present, else null.

private Set<AnnotationInfo>
annotationInfoSet

Unique AnnotationInfo objects for any annotations on the package-info.class file, if present, else null.

private Set<PackageInfo>
children

The child packages of this package.

private Map<String, ClassInfo>
memberClassNameToClassInfo

Set of classes in the package.

private String
name

Name of the package.

private PackageInfo
parent

The parent package of this package.

Constructor Summary

AccessConstructor and Description
pack-priv
PackageInfo()

Deerialization constructor.

pack-priv
PackageInfo(final String
the package name
packageName
)

Construct a PackageInfo object.

Method Summary

Modifier and TypeMethod and Description
pack-priv void
addAnnotations(final AnnotationInfoList
the package annotations
packageAnnotations
)

Add annotations found in a package descriptor classfile.

pack-priv void
addClassInfo(final ClassInfo
the ClassInfo object to add to the package.
classInfo
)

Merge a ClassInfo object for a package-info.class file into this PackageInfo.

public int
compareTo(final PackageInfo
the object to be compared.
o
)

Implements java.lang.Comparable.compareTo.

Compares this object with the specified object for order.

public boolean
equals(final Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

public AnnotationInfo

Returns:

An AnnotationInfo object representing the annotation on this package, or null if the package does not have the annotation.
getAnnotationInfo
(final Class<? extends Annotation>
The annotation.
annotation
)

Get a the annotation on this package, or null if the package does not have the annotation.

public AnnotationInfo

Returns:

An AnnotationInfo object representing the named annotation on this package, or null if the package does not have the named annotation.
getAnnotationInfo
(final String
The annotation name.
annotationName
)

Get a the named annotation on this package, or null if the package does not have the named annotation.

public AnnotationInfoList

Returns:

the annotations on the package-info.class file.
getAnnotationInfo
()

Get any annotations on the package-info.class file.

public PackageInfoList

Returns:

the child packages, or the empty list if none.
getChildren
()

The child packages of this package, or the empty list if none.

public ClassInfo

Returns:

the ClassInfo object for the named class in this package, or null if the class was not found in this package.
getClassInfo
(final String
the class name
className
)

Get the ClassInfo object for the named class in this package, or null if the class was not found in this package.

public ClassInfoList

Returns:

the ClassInfo objects for all classes that are members of this package.
getClassInfo
()

Get the ClassInfo objects for all classes that are members of this package.

public ClassInfoList

Returns:

the the ClassInfo objects for all classes that are members of this package or a sub-package.
getClassInfoRecursive
()

Get the ClassInfo objects for all classes that are members of this package or a sub-package.

public String

Returns:

the name
getName
()

Implements io.github.classgraph.HasName.getName.

The package name ("" for the root package).

pack-priv static PackageInfo

Returns:

the PackageInfo for the named package.
getOrCreatePackage
(final String
the package name
packageName
,
final Map<String, PackageInfo>
a map from package name to package info
packageNameToPackageInfo
,
final ScanSpec
the ScanSpec.
scanSpec
)

Get the PackageInfo object for the named package, creating it if it doesn't exist, and also creating PackageInfo objects for any needed parent packages for which a PackageInfo has not yet been created.

public PackageInfo

Returns:

the parent package, or null if this is the root package.
getParent
()

The parent package of this package, or null if this is the root package.

pack-priv static String

Returns:

the parent package, or the package of the named class, or null if packageOrClassName is the root package ("").
getParentPackageName
(final String
The package or class name.
packageOrClassName
)

Get the name of the parent package of a parent, or the package of the named class.

public boolean

Returns:

true if this package has the annotation.
hasAnnotation
(final Class<? extends Annotation>
The annotation.
annotation
)

Check if the package has the annotation.

public boolean

Returns:

true if this package has the named annotation.
hasAnnotation
(final String
The name of an annotation.
annotationName
)

Check if the package has the named annotation.

public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.

private void
obtainClassInfoRecursive(final Set<ClassInfo>
the reachable class info
reachableClassInfo
)

Get the ClassInfo objects within this package recursively.

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

annotationInfoback to summary
private AnnotationInfoList annotationInfo

AnnotationInfo for any annotations on the package-info.class file, if present, else null.

annotationInfoSetback to summary
private Set<AnnotationInfo> annotationInfoSet

Unique AnnotationInfo objects for any annotations on the package-info.class file, if present, else null.

childrenback to summary
private Set<PackageInfo> children

The child packages of this package.

memberClassNameToClassInfoback to summary
private Map<String, ClassInfo> memberClassNameToClassInfo

Set of classes in the package.

nameback to summary
private String name

Name of the package.

parentback to summary
private PackageInfo parent

The parent package of this package.

Constructor Detail

PackageInfoback to summary
pack-priv PackageInfo()

Deerialization constructor.

PackageInfoback to summary
pack-priv PackageInfo(final String packageName)

Construct a PackageInfo object.

Parameters
packageName:String

the package name

Method Detail

addAnnotationsback to summary
pack-priv void addAnnotations(final AnnotationInfoList packageAnnotations)

Add annotations found in a package descriptor classfile.

Parameters
packageAnnotations:AnnotationInfoList

the package annotations

addClassInfoback to summary
pack-priv void addClassInfo(final ClassInfo classInfo)

Merge a ClassInfo 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:ClassInfo

the ClassInfo object to add to the package.

compareToback to summary
public int compareTo(final PackageInfo o)

Implements java.lang.Comparable.compareTo.

Doc from java.lang.Comparable.compareTo.

Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

The implementor must ensure signum(x.compareTo(y)) == -signum(y.compareTo(x)) for all x and y. (This implies that x.compareTo(y) must throw an exception if and only if y.compareTo(x) throws an exception.)

The implementor must also ensure that the relation is transitive: (x.compareTo(y) > 0 && y.compareTo(z) > 0) implies x.compareTo(z) > 0.

Finally, the implementor must ensure that x.compareTo(y)==0 implies that signum(x.compareTo(z)) == signum(y.compareTo(z)), for all z.

Parameters
o:PackageInfo

the object to be compared.

Returns:int

a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

Annotations
@Override
equalsback to summary
public boolean equals(final Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
getAnnotationInfoback to summary
public AnnotationInfo getAnnotationInfo(final Class<? extends Annotation> annotation)

Get a the annotation on this package, or null if the package does not have the annotation.

Parameters
annotation:Class<? extends Annotation>

The annotation.

Returns:AnnotationInfo

An AnnotationInfo object representing the annotation on this package, or null if the package does not have the annotation.

getAnnotationInfoback to summary
public AnnotationInfo getAnnotationInfo(final String annotationName)

Get a the named annotation on this package, or null if the package does not have the named annotation.

Parameters
annotationName:String

The annotation name.

Returns:AnnotationInfo

An AnnotationInfo object representing the named annotation on this package, or null if the package does not have the named annotation.

getAnnotationInfoback to summary
public AnnotationInfoList getAnnotationInfo()

Get any annotations on the package-info.class file.

Returns:AnnotationInfoList

the annotations on the package-info.class file.

getChildrenback to summary
public PackageInfoList getChildren()

The child packages of this package, or the empty list if none.

Returns:PackageInfoList

the child packages, or the empty list if none.

getClassInfoback to summary
public ClassInfo getClassInfo(final String className)

Get the ClassInfo object for the named class in this package, or null if the class was not found in this package.

Parameters
className:String

the class name

Returns:ClassInfo

the ClassInfo object for the named class in this package, or null if the class was not found in this package.

getClassInfoback to summary
public ClassInfoList getClassInfo()

Get the ClassInfo objects for all classes that are members of this package.

Returns:ClassInfoList

the ClassInfo objects for all classes that are members of this package.

getClassInfoRecursiveback to summary
public ClassInfoList getClassInfoRecursive()

Get the ClassInfo objects for all classes that are members of this package or a sub-package.

Returns:ClassInfoList

the the ClassInfo objects for all classes that are members of this package or a sub-package.

getNameback to summary
public String getName()

Implements io.github.classgraph.HasName.getName.

The package name ("" for the root package).

Returns:String

the name

Annotations
@Override
getOrCreatePackageback to summary
pack-priv static PackageInfo getOrCreatePackage(final String packageName, final Map<String, PackageInfo> packageNameToPackageInfo, final ScanSpec scanSpec)

Get the PackageInfo object for the named package, creating it if it doesn't exist, and also creating PackageInfo objects for any needed parent packages for which a PackageInfo has not yet been created.

Parameters
packageName:String

the package name

packageNameToPackageInfo:Map<String, PackageInfo>

a map from package name to package info

scanSpec:ScanSpec

the ScanSpec.

Returns:PackageInfo

the PackageInfo for the named package.

getParentback to summary
public PackageInfo getParent()

The parent package of this package, or null if this is the root package.

Returns:PackageInfo

the parent package, or null if this is the root package.

getParentPackageNameback to summary
pack-priv static String getParentPackageName(final String packageOrClassName)

Get the name of the parent package of a parent, or the package of the named class.

Parameters
packageOrClassName:String

The package or class name.

Returns:String

the parent package, or the package of the named class, or null if packageOrClassName is the root package ("").

hasAnnotationback to summary
public boolean hasAnnotation(final Class<? extends Annotation> annotation)

Check if the package has the annotation.

Parameters
annotation:Class<? extends Annotation>

The annotation.

Returns:boolean

true if this package has the annotation.

hasAnnotationback to summary
public boolean hasAnnotation(final String annotationName)

Check if the package has the named annotation.

Parameters
annotationName:String

The name of an annotation.

Returns:boolean

true if this package has the named annotation.

hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for this object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object

Annotations
@Override
obtainClassInfoRecursiveback to summary
private void obtainClassInfoRecursive(final Set<ClassInfo> reachableClassInfo)

Get the ClassInfo objects within this package recursively.

Parameters
reachableClassInfo:Set<ClassInfo>

the reachable class info

toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override