Class AbstractInputStreamJar

  • All Implemented Interfaces:
    java.lang.AutoCloseable, Jar
    Direct Known Subclasses:
    JarFileUrlNestedJar, UrlJar

    public abstract class AbstractInputStreamJar
    extends java.lang.Object
    implements Jar
    Base implementation of Jar for implementations that use a JarInputStream to access the JAR file.
    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractInputStreamJar​(java.net.URL jarFileUrl)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected void closeStream()  
      protected abstract NonClosingJarInputStream createJarInputStream()  
      boolean exists​(java.lang.String name)
      Determine if the given resource in present in the JAR.
      java.io.InputStream getEntryInputStream()
      Obtains the input stream for the current entry.
      java.lang.String getEntryName()
      Obtains the name of the current entry.
      java.io.InputStream getInputStream​(java.lang.String name)
      Obtain an InputStream for a given entry in a JAR.
      java.net.URL getJarFileURL()  
      long getLastModified​(java.lang.String name)
      Obtain the last modified time for the given resource in the JAR.
      java.util.jar.Manifest getManifest()
      Obtain the manifest for the JAR file.
      java.lang.String getURL​(java.lang.String entry)
      Obtain, in String form, the URL for an entry in this JAR.
      void nextEntry()
      Moves the internal pointer to the next entry in the JAR.
      void reset()
      Resets the internal pointer used to track JAR entries to the beginning of the JAR.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.apache.tomcat.Jar

        close
    • Constructor Detail

      • AbstractInputStreamJar

        public AbstractInputStreamJar​(java.net.URL jarFileUrl)
    • Method Detail

      • getJarFileURL

        public java.net.URL getJarFileURL()
        Specified by:
        getJarFileURL in interface Jar
        Returns:
        The URL for accessing the JAR file.
      • nextEntry

        public void nextEntry()
        Description copied from interface: Jar
        Moves the internal pointer to the next entry in the JAR.
        Specified by:
        nextEntry in interface Jar
      • getEntryName

        public java.lang.String getEntryName()
        Description copied from interface: Jar
        Obtains the name of the current entry.
        Specified by:
        getEntryName in interface Jar
        Returns:
        The entry name
      • getEntryInputStream

        public java.io.InputStream getEntryInputStream()
                                                throws java.io.IOException
        Description copied from interface: Jar
        Obtains the input stream for the current entry.
        Specified by:
        getEntryInputStream in interface Jar
        Returns:
        The input stream
        Throws:
        java.io.IOException - If the stream cannot be obtained
      • getInputStream

        public java.io.InputStream getInputStream​(java.lang.String name)
                                           throws java.io.IOException
        Description copied from interface: Jar
        Obtain an InputStream for a given entry in a JAR. The caller is responsible for closing the stream.
        Specified by:
        getInputStream in interface Jar
        Parameters:
        name - Entry to obtain an InputStream for
        Returns:
        An InputStream for the specified entry or null if the entry does not exist
        Throws:
        java.io.IOException - if an I/O error occurs while processing the JAR file
      • getLastModified

        public long getLastModified​(java.lang.String name)
                             throws java.io.IOException
        Description copied from interface: Jar
        Obtain the last modified time for the given resource in the JAR.
        Specified by:
        getLastModified in interface Jar
        Parameters:
        name - Entry to obtain the modification time for
        Returns:
        The time (in the same format as System.currentTimeMillis() that the resource was last modified. Returns -1 if the entry does not exist
        Throws:
        java.io.IOException - if an I/O error occurs while processing the JAR file
      • exists

        public boolean exists​(java.lang.String name)
                       throws java.io.IOException
        Description copied from interface: Jar
        Determine if the given resource in present in the JAR.
        Specified by:
        exists in interface Jar
        Parameters:
        name - Entry to look for
        Returns:
        true if the entry is present in the JAR, otherwise false
        Throws:
        java.io.IOException - if an I/O error occurs while processing the JAR file
      • getURL

        public java.lang.String getURL​(java.lang.String entry)
        Description copied from interface: Jar
        Obtain, in String form, the URL for an entry in this JAR. Note that for JARs nested in WAR files, the Tomcat specific war:file:... form will not be used, rather the jar:jar:file:... form (that the JRE does not understand will be used). Note that this means that any code using these URLs will need to understand the jar:jar:file:... form and use the JarFactory to ensure resources are accessed correctly.
        Specified by:
        getURL in interface Jar
        Parameters:
        entry - The entry to generate the URL for
        Returns:
        a URL for the specified entry in the JAR
      • getManifest

        public java.util.jar.Manifest getManifest()
                                           throws java.io.IOException
        Description copied from interface: Jar
        Obtain the manifest for the JAR file.
        Specified by:
        getManifest in interface Jar
        Returns:
        The manifest for this JAR file.
        Throws:
        java.io.IOException - If an I/O error occurs trying to obtain the manifest
      • reset

        public void reset()
                   throws java.io.IOException
        Description copied from interface: Jar
        Resets the internal pointer used to track JAR entries to the beginning of the JAR.
        Specified by:
        reset in interface Jar
        Throws:
        java.io.IOException - If the pointer cannot be reset
      • closeStream

        protected void closeStream()
      • createJarInputStream

        protected abstract NonClosingJarInputStream createJarInputStream()
                                                                  throws java.io.IOException
        Throws:
        java.io.IOException