Class ClasspathElementZip

    • Field Detail

      • rawPath

        private final java.lang.String rawPath
        The String representation of the path string, URL, URI, or Path 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 to Resource 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 the Automatic-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 unit
        nestedJarHandler - the nested jar handler
        scanSpec - 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. 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.
        Specified by:
        open in class ClasspathElement
        Parameters:
        workQueue - the work queue
        log - 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 new Resource object for a resource or classfile discovered while scanning paths.
        Parameters:
        zipEntry - the zip entry
        pathRelativeToPackageRoot - the path relative to package root
        Returns:
        the resource
      • getResource

        Resource getResource​(java.lang.String relativePath)
        Get the Resource for a given relative path.
        Specified by:
        getResource in class ClasspathElement
        Parameters:
        relativePath - The relative path of the Resource 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 class ClasspathElement
        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 class ClasspathElement
        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 class ClasspathElement
        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 class ClasspathElement
        Returns:
        the URI for the classpath element.
      • getFile

        java.io.File getFile()
        Get the File for the outermost zipfile of this classpath element.
        Specified by:
        getFile in class ClasspathElement
        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.
      • toString

        public java.lang.String toString()
        Return the classpath element path.
        Overrides:
        toString in class java.lang.Object
        Returns:
        the string
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object