Top Description Fields Constructors Methods
io.github.classgraph

pack-priv Class ClasspathElementZip

extends ClasspathElement
Class Inheritance
Imports
java.io.File, .IOError, .IOException, .InputStream, java.net.URI, .URISyntaxException, .URL, java.nio.ByteBuffer, java.nio.file.Path, java.nio.file.attribute.PosixFilePermission, java.util.ArrayList, .Collections, .HashSet, .List, .Map.Entry, .Set, java.util.concurrent.ConcurrentHashMap, java.util.concurrent.atomic.AtomicBoolean, io.github.classgraph.Scanner.ClasspathEntryWorkUnit, nonapi.io.github.classgraph.classloaderhandler.ClassLoaderHandlerRegistry, nonapi.io.github.classgraph.concurrency.SingletonMap.NewInstanceException, .SingletonMap.NullSingletonException, .WorkQueue, nonapi.io.github.classgraph.fastzipfilereader.FastZipEntry, .LogicalZipFile, .NestedJarHandler, .ZipFileSlice, nonapi.io.github.classgraph.fileslice.reader.ClassfileReader, nonapi.io.github.classgraph.scanspec.ScanSpec, .ScanSpec.ScanSpecPathMatch, nonapi.io.github.classgraph.utils.FastPathResolver, .FileUtils, .JarUtils, .LogNode, .URLPathEncoder, .VersionFinder

A zip/jarfile classpath element.

Field Summary

Modifier and TypeField and Description
private String
derivedAutomaticModuleName

The automatic module name, derived from the jarfile filename.

pack-priv LogicalZipFile
logicalZipFile

The logical zipfile for this classpath element.

pack-priv String
moduleNameFromManifestFile

The name of the module from the Automatic-Module-Name manifest attribute, if one is present in the root of the classpath element.

private final NestedJarHandler
nestedJarHandler

The nested jar handler.

private final String
rawPath

The String representation of the path string, URL, URI, or Path for this zipfile.

private final ConcurrentHashMap<String, Resource>
relativePathToResource

A map from relative path to Resource for non-rejected zip entries.

private final Set<String>
strippedAutomaticPackageRootPrefixes

A list of all automatic package root prefixes found as prefixes of paths within this zipfile.

private String
zipFilePath

The normalized path of the jarfile, "!/"-separated if nested, excluding any package root.

Inherited from io.github.classgraph.ClasspathElement:
acceptedClassfileResourcesacceptedResourceschildClasspathElementsclassLoaderclasspathElementIdxclasspathElementIdxWithinParentcontainsSpecificallyAcceptedClasspathElementResourcePathfileToLastModifiedmoduleNameFromModuleDescriptornestedClasspathRootPrefixespackageRootPrefixscannedscanResultscanSpecskipClasspathElement

Constructor Summary

AccessConstructor and Description
pack-priv
ClasspathElementZip(final Scanner.ClasspathEntryWorkUnit
the work unit
workUnit
,
final NestedJarHandler
the nested jar handler
nestedJarHandler
,
final ScanSpec
the scan spec
scanSpec
)

A jarfile classpath element.

Method Summary

Modifier and TypeMethod and Description
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.

pack-priv List<URI>
getAllURIs()

Implements abstract io.github.classgraph.ClasspathElement.getAllURIs.

Return URI for classpath element, plus URIs for any stripped nested automatic package root prefixes, e.g. "!/BOOT-INF/classes".

pack-priv File

Returns:

The File for the outermost zipfile of this classpath element, or null if this file was downloaded from a URL directly to RAM, or if the classpath element was backed by a custom filesystem that supports the Path API put not the File API.
getFile
()

Implements abstract io.github.classgraph.ClasspathElement.getFile.

Get the File for the outermost zipfile of this classpath element.

public String

Returns:

the module name
getModuleName
()

Implements abstract io.github.classgraph.ClasspathElement.getModuleName.

Get module name from module descriptor, or get the automatic module name from the manifest file, or derive an automatic module name from the jar name.

pack-priv Resource

Returns:

The Resource for the given relative path, or null if relativePath does not exist in this classpath element.
getResource
(final String
The relative path of the Resource to return.
relativePath
)

Implements abstract io.github.classgraph.ClasspathElement.getResource.

Get the Resource for a given relative path.

pack-priv URI
getURI()

Implements abstract io.github.classgraph.ClasspathElement.getURI.

Get the URI for this classpath element.

pack-priv String

Returns:

the path of the zipfile, including any package root.
getZipFilePath
()

Get the zipfile path.

public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.

private Resource

Returns:

the resource
newResource
(final FastZipEntry
the zip entry
zipEntry
,
final String
the path relative to package root
pathRelativeToPackageRoot
)

Create a new Resource object for a resource or classfile discovered while scanning paths.

pack-priv void
open(final WorkQueue<Scanner.ClasspathEntryWorkUnit>
the work queue
workQueue
,
final LogNode
the log
log
)

Implements abstract io.github.classgraph.ClasspathElement.open.

Determine if this classpath element is valid.

pack-priv void
scanPaths(final LogNode
the log
log
)

Implements abstract io.github.classgraph.ClasspathElement.scanPaths.

Scan for path matches within jarfile, and record ZipEntry objects of matching files.

public String

Returns:

the string
toString
()

Overrides java.lang.Object.toString.

Return the classpath element path.

Inherited from io.github.classgraph.ClasspathElement:
addAcceptedResourcecheckResourcePathAcceptRejectcompareTofinishScanPathsgetClassLoadergetNumClassfileMatchesloglogmaskClassfilessetScanResult

Field Detail

derivedAutomaticModuleNameback to summary
private String derivedAutomaticModuleName

The automatic module name, derived from the jarfile filename.

logicalZipFileback to summary
pack-priv LogicalZipFile logicalZipFile

The logical zipfile for this classpath element.

moduleNameFromManifestFileback to summary
pack-priv String moduleNameFromManifestFile

The name of the module from the Automatic-Module-Name manifest attribute, if one is present in the root of the classpath element.

nestedJarHandlerback to summary
private final NestedJarHandler nestedJarHandler

The nested jar handler.

rawPathback to summary
private final String rawPath

The String representation of the path string, URL, URI, or Path for this zipfile.

relativePathToResourceback to summary
private final ConcurrentHashMap<String, Resource> relativePathToResource

A map from relative path to Resource for non-rejected zip entries.

strippedAutomaticPackageRootPrefixesback to summary
private final Set<String> strippedAutomaticPackageRootPrefixes

A list of all automatic package root prefixes found as prefixes of paths within this zipfile.

zipFilePathback to summary
private String zipFilePath

The normalized path of the jarfile, "!/"-separated if nested, excluding any package root.

Constructor Detail

ClasspathElementZipback to summary
pack-priv ClasspathElementZip(final Scanner.ClasspathEntryWorkUnit workUnit, final NestedJarHandler nestedJarHandler, final ScanSpec scanSpec)

A jarfile classpath element.

Parameters
workUnit:Scanner.ClasspathEntryWorkUnit

the work unit

nestedJarHandler:NestedJarHandler

the nested jar handler

scanSpec:ScanSpec

the scan spec

Method Detail

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
getAllURIsback to summary
pack-priv List<URI> getAllURIs()

Implements abstract io.github.classgraph.ClasspathElement.getAllURIs.

Return URI for classpath element, plus URIs for any stripped nested automatic package root prefixes, e.g. "!/BOOT-INF/classes".

Returns:List<URI>

Doc from io.github.classgraph.ClasspathElement.getAllURIs.

the URI for the classpath element.

Annotations
@Override
getFileback to summary
pack-priv File getFile()

Implements abstract io.github.classgraph.ClasspathElement.getFile.

Get the File for the outermost zipfile of this classpath element.

Returns:File

The File for the outermost zipfile of this classpath element, or null if this file was downloaded from a URL directly to RAM, or if the classpath element was backed by a custom filesystem that supports the Path API put not the File API.

Annotations
@Override
getModuleNameback to summary
public String getModuleName()

Implements abstract io.github.classgraph.ClasspathElement.getModuleName.

Get module name from module descriptor, or get the automatic module name from the manifest file, or derive an automatic module name from the jar name.

Returns:String

the module name

Annotations
@Override
getResourceback to summary
pack-priv Resource getResource(final String relativePath)

Implements abstract io.github.classgraph.ClasspathElement.getResource.

Get the Resource for a given relative path.

Parameters
relativePath:String

The relative path of the Resource to return.

Returns:Resource

The Resource for the given relative path, or null if relativePath does not exist in this classpath element.

Annotations
@Override
getURIback to summary
pack-priv URI getURI()

Implements abstract io.github.classgraph.ClasspathElement.getURI.

Doc from io.github.classgraph.ClasspathElement.getURI.

Get the URI for this classpath element.

Returns:URI

the URI for the classpath element.

Annotations
@Override
getZipFilePathback to summary
pack-priv String getZipFilePath()

Get the zipfile path.

Returns:String

the path of the zipfile, including any package root.

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
newResourceback to summary
private Resource newResource(final FastZipEntry zipEntry, final String pathRelativeToPackageRoot)

Create a new Resource object for a resource or classfile discovered while scanning paths.

Parameters
zipEntry:FastZipEntry

the zip entry

pathRelativeToPackageRoot:String

the path relative to package root

Returns:Resource

the resource

openback to summary
pack-priv void open(final WorkQueue<Scanner.ClasspathEntryWorkUnit> workQueue, final LogNode log) throws InterruptedException

Implements abstract io.github.classgraph.ClasspathElement.open.

Doc from io.github.classgraph.ClasspathElement.open.

Determine if this classpath element is valid. If it is not valid, sets skipClasspathElement. For ClasspathElementZip, may also open or extract inner jars, and also causes jarfile manifests to be read to look for Class-Path entries. If nested jars or Class-Path entries are found, they are added to the work queue. This method is only run once per classpath element, from a single thread.

Parameters
workQueue:WorkQueue<Scanner.ClasspathEntryWorkUnit>

the work queue

log:LogNode

the log

Annotations
@Override
Exceptions
InterruptedException:
if the thread was interrupted while trying to open the classpath element.
scanPathsback to summary
pack-priv void scanPaths(final LogNode log)

Implements abstract io.github.classgraph.ClasspathElement.scanPaths.

Scan for path matches within jarfile, and record ZipEntry objects of matching files.

Parameters
log:LogNode

the log

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Return the classpath element path.

Returns:String

the string

Annotations
@Override