Package org.apache.catalina.webresources

## Class AbstractArchiveResourceSet

- java.lang.Object
- - org.apache.catalina.util.LifecycleBase
  - - org.apache.catalina.webresources.AbstractResourceSet
    - - org.apache.catalina.webresources.AbstractArchiveResourceSet

- All Implemented Interfaces:
    `Lifecycle`, `WebResourceSet`
  Direct Known Subclasses:
    `AbstractSingleArchiveResourceSet`, `JarWarResourceSet`

      public abstract class AbstractArchiveResourceSet
      extends AbstractResourceSet

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

      `Lifecycle.SingleUse`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Map<String,​JarEntry>` | `archiveEntries` |
    `protected Object` | `archiveLock` |

    - ### Fields inherited from class org.apache.catalina.webresources.AbstractResourceSet

      `sm`

    - ### Fields inherited from interface org.apache.catalina.Lifecycle

      `AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AbstractArchiveResourceSet()` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `closeJarFile()` |
    `protected abstract WebResource` | `createArchiveResource​(JarEntry jarEntry, String webAppPath, Manifest manifest)` |
    `void` | `gc()` | Implementations may cache some information to improve performance.
    `protected abstract Map<String,​JarEntry>` | `getArchiveEntries​(boolean single)` | Obtain the map of entries in the archive.
    `protected abstract JarEntry` | `getArchiveEntry​(String pathInArchive)` | Obtain a single entry from the archive.
    `URL` | `getBaseUrl()` | Obtain the base URL for this set of resources.
    `protected String` | `getBaseUrlString()` |
    `WebResource` | `getResource​(String path)` | Obtain the object that represents the resource at the given path.
    `protected abstract boolean` | `isMultiRelease()` |
    `boolean` | `isReadOnly()` | Obtains the current value of the read-only setting for this set of resources.
    `String[]` | `list​(String path)` | Obtain the list of the names of all of the files and directories located in the specified directory.
    `Set<String>` | `listWebAppPaths​(String path)` | Obtain the Set of the web applications pathnames of all of the files and directories located in the specified directory.
    `boolean` | `mkdir​(String path)` | Create a new directory at the given path.
    `protected JarFile` | `openJarFile()` |
    `protected void` | `setBaseUrl​(URL baseUrl)` |
    `void` | `setReadOnly​(boolean readOnly)` | Configures whether or not this set of resources is read-only.
    `boolean` | `write​(String path, InputStream is, boolean overwrite)` | Create a new resource at the requested path using the provided InputStream.

    - ### Methods inherited from class org.apache.catalina.webresources.AbstractResourceSet

      `checkPath, destroyInternal, getBase, getClassLoaderOnly, getInternalPath, getManifest, getRoot, getStaticOnly, getWebAppMount, setBase, setClassLoaderOnly, setInternalPath, setManifest, setRoot, setStaticOnly, setWebAppMount, startInternal, stopInternal`

    - ### Methods inherited from class org.apache.catalina.util.LifecycleBase

      `addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, initInternal, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.catalina.Lifecycle

      `addLifecycleListener, destroy, findLifecycleListeners, getState, getStateName, init, removeLifecycleListener, start, stop`

- - ### Field Detail

    - #### archiveEntries

          protected Map<String,​JarEntry> archiveEntries

    - #### archiveLock

          protected final Object archiveLock

  - ### Constructor Detail

    - #### AbstractArchiveResourceSet

          public AbstractArchiveResourceSet()

  - ### Method Detail

    - #### setBaseUrl

          protected final void setBaseUrl​(URL baseUrl)

    - #### getBaseUrl

          public final URL getBaseUrl()

      Description copied from interface: `WebResourceSet`
      Obtain the base URL for this set of resources. One of the uses of this is to grant read permissions to the resources when running under a security manager.
      Returns:
        The base URL for this set of resources

    - #### getBaseUrlString

          protected final String getBaseUrlString()

    - #### list

          public final String[] list​(String path)

      Description copied from interface: `WebResourceSet`
      Obtain the list of the names of all of the files and directories located in the specified directory.
      Parameters:
        `path` - The path for the resource of interest relative to the root of the web application. It must start with '/'.
      Returns:
        The list of resources. If path does not refer to a directory then a zero length array will be returned.

    - #### listWebAppPaths

          public final Set<String> listWebAppPaths​(String path)

      Description copied from interface: `WebResourceSet`
      Obtain the Set of the web applications pathnames of all of the files and directories located in the specified directory. Paths representing directories will end with a "/" character.
      Parameters:
        `path` - The path for the resource of interest relative to the root of the web application. It must start with '/'.
      Returns:
        The Set of resources. If path does not refer to a directory then an empty set will be returned.

    - #### getArchiveEntries

          protected abstract Map<String,​JarEntry> getArchiveEntries​(boolean single)

      Obtain the map of entries in the archive. May return null in which case `getArchiveEntry(String)` should be used.
      Parameters:
        `single` - Is this request being make to support a single lookup? If false, a map will always be returned. If true, implementations may use this as a hint in determining the optimum way to respond.
      Returns:
        The archives entries mapped to their names or null if `getArchiveEntry(String)` should be used.

    - #### getArchiveEntry

          protected abstract JarEntry getArchiveEntry​(String pathInArchive)

      Obtain a single entry from the archive. For performance reasons, `getArchiveEntries(boolean)` should always be called first and the archive entry looked up in the map if one is returned. Only if that call returns null should this method be used.
      Parameters:
        `pathInArchive` - The path in the archive of the entry required
      Returns:
        The specified archive entry or null if it does not exist

    - #### mkdir

          public final boolean mkdir​(String path)

      Description copied from interface: `WebResourceSet`
      Create a new directory at the given path.
      Parameters:
        `path` - The path for the new resource to create relative to the root of the web application. It must start with '/'.
      Returns:
        `true` if the directory was created, otherwise `false`

    - #### write

          public final boolean write​(String path,
                                     InputStream is,
                                     boolean overwrite)

      Description copied from interface: `WebResourceSet`
      Create a new resource at the requested path using the provided InputStream.
      Parameters:
        `path` - The path to be used for the new Resource. It is relative to the root of the web application and must start with '/'.
        `is` - The InputStream that will provide the content for the new Resource.
        `overwrite` - If `true` and the resource already exists it will be overwritten. If `false` and the resource already exists the write will fail.
      Returns:
        `true` if and only if the new Resource is written

    - #### getResource

          public final WebResource getResource​(String path)

      Description copied from interface: `WebResourceSet`
      Obtain the object that represents the resource at the given path. Note the resource at that path may not exist.
      Parameters:
        `path` - The path for the resource of interest relative to the root of the web application. It must start with '/'.
      Returns:
        The object that represents the resource at the given path

    - #### isMultiRelease

          protected abstract boolean isMultiRelease()

    - #### createArchiveResource

          protected abstract WebResource createArchiveResource​(JarEntry jarEntry,
                                                               String webAppPath,
                                                               Manifest manifest)

    - #### isReadOnly

          public final boolean isReadOnly()

      Description copied from interface: `WebResourceSet`
      Obtains the current value of the read-only setting for this set of resources.
      Returns:
        `true` if this set of resources is configured to be read-only, otherwise `false`

    - #### setReadOnly

          public void setReadOnly​(boolean readOnly)

      Description copied from interface: `WebResourceSet`
      Configures whether or not this set of resources is read-only.
      Parameters:
        `readOnly` - `true` if this set of resources should be configured to be read-only

    - #### openJarFile

          protected JarFile openJarFile()
                                 throws IOException

      Throws:
        `IOException`

    - #### closeJarFile

          protected void closeJarFile()

    - #### gc

          public void gc()

      Description copied from interface: `WebResourceSet`
      Implementations may cache some information to improve performance. This method triggers the clean-up of those resources.