Class ReferenceCountedJar

  • All Implemented Interfaces:
    java.lang.AutoCloseable, Jar

    public class ReferenceCountedJar
    extends java.lang.Object
    implements Jar
    This class provides a wrapper around Jar that uses reference counting to close and re-create the wrapped Jar instance as required.
    • Constructor Summary

      Constructors 
      Constructor Description
      ReferenceCountedJar​(java.net.URL url)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Close any resources associated with this JAR.
      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
    • Constructor Detail

      • ReferenceCountedJar

        public ReferenceCountedJar​(java.net.URL url)
                            throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • close

        public void close()
        Description copied from interface: Jar
        Close any resources associated with this JAR.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface Jar
      • getJarFileURL

        public java.net.URL getJarFileURL()
        Specified by:
        getJarFileURL in interface Jar
        Returns:
        The URL for accessing the JAR file.
      • 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
      • 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
      • 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