Class JarLibraryInfo

    • Field Detail

      • jarFile

        private java.io.File jarFile
      • bulkCreateJar

        private java.util.jar.JarFile bulkCreateJar
    • Constructor Detail

      • JarLibraryInfo

        public JarLibraryInfo​(java.lang.String jarFile)
      • JarLibraryInfo

        public JarLibraryInfo​(java.io.File jarFile)
      • JarLibraryInfo

        public JarLibraryInfo​(java.io.File jarFile,
                              SourceLocation sourceLoc)
    • Method Detail

      • compareTo

        public int compareTo​(LibraryInfo info)
        Compares this LibraryInfo to another one. Two instances of this class are only considered equal if they represent the same class file location. Source attachment is irrelevant.
        Returns:
        The sort order of these two library infos.
      • createClassFile

        public ClassFile createClassFile​(java.lang.String entryName)
                                  throws java.io.IOException
        Description copied from class: LibraryInfo
        Returns the class file information for the specified class. Instances of JarReader can call this method to lazily load information on individual classes and shove it into their package maps.

        If many class files will be fetched at a time, you should prefer using LibraryInfo.bulkClassFileCreationStart() and LibraryInfo.createClassFileBulk(String) over this method, for performance reasons.

        Specified by:
        createClassFile in class LibraryInfo
        Parameters:
        entryName - The fully qualified name of the class file.
        Returns:
        The class file, or null if it isn't found in this library.
        Throws:
        java.io.IOException - If an IO error occurs.
        See Also:
        LibraryInfo.createClassFileBulk(String)
      • createClassFileBulk

        public ClassFile createClassFileBulk​(java.lang.String entryName)
                                      throws java.io.IOException
        Description copied from class: LibraryInfo
        Returns the class file information for the specified class. Instances of JarReader can call this method to lazily load information on individual classes and shove it into their package maps.

        This method should be used when multiple classes will be fetched from this library at the same time. It should only be called after a call to LibraryInfo.bulkClassFileCreationStart(). If only a single class file is being fetched, it is simpler to call LibraryInfo.createClassFile(String).

        Specified by:
        createClassFileBulk in class LibraryInfo
        Parameters:
        entryName - The fully qualified name of the class file.
        Returns:
        The class file, or null if it isn't found in this library.
        Throws:
        java.io.IOException - If an IO error occurs.
        See Also:
        LibraryInfo.createClassFile(String)
      • createClassFileImpl

        private static ClassFile createClassFileImpl​(java.util.jar.JarFile jar,
                                                     java.lang.String entryName)
                                              throws java.io.IOException
        Throws:
        java.io.IOException
      • createPackageMap

        public PackageMapNode createPackageMap()
                                        throws java.io.IOException
        Description copied from class: LibraryInfo
        Creates and returns a map of maps representing the hierarchical package structure in this library.
        Specified by:
        createPackageMap in class LibraryInfo
        Returns:
        The package structure in this library.
        Throws:
        java.io.IOException - If an IO error occurs.
      • getLastModified

        public long getLastModified()
        Description copied from class: LibraryInfo
        Returns the time this library was last modified. For jar files, this would be the modified date of the file. For directories, this would be the time a file in the directory was most recently modified. This information is used to determine whether callers should clear their cached package map information and load it anew.

        This API may change in the future.

        Specified by:
        getLastModified in class LibraryInfo
        Returns:
        The last time this library was modified.
      • getLocationAsString

        public java.lang.String getLocationAsString()
        Description copied from class: LibraryInfo
        Returns the location of this library, as a string. If this library is contained in a single jar file, this will be the full path to that jar. If it is a directory containing classes, it will be the full path of the directory. Otherwise, this value will be null.
        Specified by:
        getLocationAsString in class LibraryInfo
        Returns:
        The location of this library.
      • getJarFile

        public java.io.File getJarFile()
        Returns the jar file this instance is wrapping.
        Returns:
        The jar file.
      • hashCodeImpl

        public int hashCodeImpl()
        Description copied from class: LibraryInfo
        Subclasses should override this method since LibraryInfo.equals(Object) is overridden. Instances of LibraryInfo aren't typically stored in maps, so the hash value isn't necessarily important to RSTALanguageSupport.
        Specified by:
        hashCodeImpl in class LibraryInfo
        Returns:
        The hash code for this library.
      • setJarFile

        private void setJarFile​(java.io.File jarFile)
        Sets the jar file location.
        Parameters:
        jarFile - The jar file location. This cannot be null.
      • toString

        public java.lang.String toString()
        Returns a string representation of this jar information. Useful for debugging.
        Overrides:
        toString in class java.lang.Object
        Returns:
        A string representation of this object.