Package io.github.classgraph
Class ClasspathElementZip
- java.lang.Object
-
- io.github.classgraph.ClasspathElement
-
- io.github.classgraph.ClasspathElementZip
-
- All Implemented Interfaces:
java.lang.Comparable<ClasspathElement>
class ClasspathElementZip extends ClasspathElement
A zip/jarfile classpath element.
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
derivedAutomaticModuleName
The automatic module name, derived from the jarfile filename.(package private) LogicalZipFile
logicalZipFile
The logical zipfile for this classpath element.(package private) java.lang.String
moduleNameFromManifestFile
The name of the module from theAutomatic-Module-Name
manifest attribute, if one is present in the root of the classpath element.private NestedJarHandler
nestedJarHandler
The nested jar handler.private java.lang.String
rawPath
TheString
representation of the path string,URL
,URI
, orPath
for this zipfile.private java.util.concurrent.ConcurrentHashMap<java.lang.String,Resource>
relativePathToResource
A map from relative path toResource
for non-rejected zip entries.private java.util.Set<java.lang.String>
strippedAutomaticPackageRootPrefixes
A list of all automatic package root prefixes found as prefixes of paths within this zipfile.private java.lang.String
zipFilePath
The normalized path of the jarfile, "!/"-separated if nested, excluding any package root.-
Fields inherited from class io.github.classgraph.ClasspathElement
acceptedClassfileResources, acceptedResources, childClasspathElements, classLoader, classpathElementIdx, classpathElementIdxWithinParent, containsSpecificallyAcceptedClasspathElementResourcePath, fileToLastModified, moduleNameFromModuleDescriptor, nestedClasspathRootPrefixes, packageRootPrefix, scanned, scanSpec, skipClasspathElement
-
-
Constructor Summary
Constructors Constructor Description ClasspathElementZip(Scanner.ClasspathEntryWorkUnit workUnit, NestedJarHandler nestedJarHandler, ScanSpec scanSpec)
A jarfile classpath element.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object obj)
(package private) java.util.List<java.net.URI>
getAllURIs()
Return URI for classpath element, plus URIs for any stripped nested automatic package root prefixes, e.g.(package private) java.io.File
getFile()
Get theFile
for the outermost zipfile of this classpath element.java.lang.String
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.(package private) Resource
getResource(java.lang.String relativePath)
Get theResource
for a given relative path.(package private) java.net.URI
getURI()
Get the URI for this classpath element.(package private) java.lang.String
getZipFilePath()
Get the zipfile path.int
hashCode()
private Resource
newResource(FastZipEntry zipEntry, java.lang.String pathRelativeToPackageRoot)
Create a newResource
object for a resource or classfile discovered while scanning paths.(package private) void
open(WorkQueue<Scanner.ClasspathEntryWorkUnit> workQueue, LogNode log)
Determine if this classpath element is valid.(package private) void
scanPaths(LogNode log)
Scan for path matches within jarfile, and record ZipEntry objects of matching files.java.lang.String
toString()
Return the classpath element path.-
Methods inherited from class io.github.classgraph.ClasspathElement
addAcceptedResource, checkResourcePathAcceptReject, compareTo, finishScanPaths, getClassLoader, getNumClassfileMatches, log, log, maskClassfiles
-
-
-
-
Field Detail
-
rawPath
private final java.lang.String rawPath
TheString
representation of the path string,URL
,URI
, orPath
for this zipfile.
-
logicalZipFile
LogicalZipFile logicalZipFile
The logical zipfile for this classpath element.
-
zipFilePath
private java.lang.String zipFilePath
The normalized path of the jarfile, "!/"-separated if nested, excluding any package root.
-
relativePathToResource
private final java.util.concurrent.ConcurrentHashMap<java.lang.String,Resource> relativePathToResource
A map from relative path toResource
for non-rejected zip entries.
-
strippedAutomaticPackageRootPrefixes
private final java.util.Set<java.lang.String> strippedAutomaticPackageRootPrefixes
A list of all automatic package root prefixes found as prefixes of paths within this zipfile.
-
nestedJarHandler
private final NestedJarHandler nestedJarHandler
The nested jar handler.
-
moduleNameFromManifestFile
java.lang.String moduleNameFromManifestFile
The name of the module from theAutomatic-Module-Name
manifest attribute, if one is present in the root of the classpath element.
-
derivedAutomaticModuleName
private java.lang.String derivedAutomaticModuleName
The automatic module name, derived from the jarfile filename.
-
-
Constructor Detail
-
ClasspathElementZip
ClasspathElementZip(Scanner.ClasspathEntryWorkUnit workUnit, NestedJarHandler nestedJarHandler, ScanSpec scanSpec)
A jarfile classpath element.- Parameters:
workUnit
- the work unitnestedJarHandler
- the nested jar handlerscanSpec
- the scan spec
-
-
Method Detail
-
open
void open(WorkQueue<Scanner.ClasspathEntryWorkUnit> workQueue, LogNode log) throws java.lang.InterruptedException
Description copied from class:ClasspathElement
Determine if this classpath element is valid. If it is not valid, sets skipClasspathElement. ForClasspathElementZip
, 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.- Specified by:
open
in classClasspathElement
- Parameters:
workQueue
- the work queuelog
- the log- Throws:
java.lang.InterruptedException
- if the thread was interrupted while trying to open the classpath element.
-
newResource
private Resource newResource(FastZipEntry zipEntry, java.lang.String pathRelativeToPackageRoot)
Create a newResource
object for a resource or classfile discovered while scanning paths.- Parameters:
zipEntry
- the zip entrypathRelativeToPackageRoot
- the path relative to package root- Returns:
- the resource
-
getResource
Resource getResource(java.lang.String relativePath)
Get theResource
for a given relative path.- Specified by:
getResource
in classClasspathElement
- Parameters:
relativePath
- The relative path of theResource
to return.- Returns:
- The
Resource
for the given relative path, or null if relativePath does not exist in this classpath element.
-
scanPaths
void scanPaths(LogNode log)
Scan for path matches within jarfile, and record ZipEntry objects of matching files.- Specified by:
scanPaths
in classClasspathElement
- Parameters:
log
- the log
-
getModuleName
public java.lang.String 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.- Specified by:
getModuleName
in classClasspathElement
- Returns:
- the module name
-
getZipFilePath
java.lang.String getZipFilePath()
Get the zipfile path.- Returns:
- the path of the zipfile, including any package root.
-
getURI
java.net.URI getURI()
Description copied from class:ClasspathElement
Get the URI for this classpath element.- Specified by:
getURI
in classClasspathElement
- Returns:
- the URI for the classpath element.
-
getAllURIs
java.util.List<java.net.URI> getAllURIs()
Return URI for classpath element, plus URIs for any stripped nested automatic package root prefixes, e.g. "!/BOOT-INF/classes".- Specified by:
getAllURIs
in classClasspathElement
- Returns:
- the URI for the classpath element.
-
getFile
java.io.File getFile()
Get theFile
for the outermost zipfile of this classpath element.- Specified by:
getFile
in classClasspathElement
- 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 thePath
API put not theFile
API.
-
toString
public java.lang.String toString()
Return the classpath element path.- Overrides:
toString
in classjava.lang.Object
- Returns:
- the string
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
-