AbstractArchiveResourceSet (Apache Tomcat 9.0.120 API Documentation)
Description: declaration: package: org.apache.catalina.webresources, class: AbstractArchiveResourceSet

# 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
Abstract resource set implementation for archive-based resources.

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Lifecycle

  `Lifecycle.SingleUse`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected JarFile`
  `archive`
  The archive JAR file.
  `protected Map<String,JarEntry>`
  `archiveEntries`
  The archive entries.
  `protected final Object`
  `archiveLock`
  The lock for archive operations.
  `protected long`
  `archiveUseCount`
  The archive use count.
  `protected JarContents`
  `jarContents`
  The JAR contents.
  `protected boolean`
  `retainBloomFilterForArchives`
  Whether to retain the bloom filter for archives.

  ### Fields inherited from class AbstractResourceSet

  `sm`

  ### Fields inherited from interface 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
  Modifier
  Constructor
  Description
  `protected`
  `AbstractArchiveResourceSet()`
  Constructs a new abstract archive resource set.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `closeJarFile()`
  Closes the JAR file.
  `protected abstract WebResource`
  `createArchiveResource(JarEntry jarEntry, String webAppPath, Manifest manifest)`
  Creates an archive resource.
  `void`
  `gc()`
  Implementations may cache some information to improve performance.
  `boolean`
  `getAllowLinking()`
  Determine if this `ResourceSet` allows the use of symbolic links.
  `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.
  `final URL`
  `getBaseUrl()`
  Obtain the base URL for this set of resources.
  `protected final String`
  `getBaseUrlString()`
  Returns the base URL string.
  `final WebResource`
  `getResource(String path)`
  Obtain the object that represents the resource at the given path.
  `protected abstract boolean`
  `isMultiRelease()`
  Checks if this is a multi-release JAR.
  `final boolean`
  `isReadOnly()`
  Obtains the current value of the read-only setting for this set of resources.
  `final String[]`
  `list(String path)`
  Obtain the list of the names of all of the files and directories located in the specified directory.
  `final 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.
  `final boolean`
  `mkdir(String path)`
  Create a new directory at the given path.
  `protected JarFile`
  `openJarFile()`
  `void`
  `setAllowLinking(boolean allowLinking)`
  Configure if this `ResourceSet` allows the use of symbolic links.
  `protected final void`
  `setBaseUrl(URL baseUrl)`
  Sets the base URL.
  `void`
  `setReadOnly(boolean readOnly)`
  Configures whether or not this set of resources is read-only.
  `final boolean`
  `write(String path, InputStream is, boolean overwrite)`
  Create a new resource at the requested path using the provided InputStream.

  ### Methods inherited from class AbstractResourceSet

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

  ### Methods inherited from class LifecycleBase

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

  ### Methods inherited from class Object

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

  ### Methods inherited from interface Lifecycle

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

- ## Field Details

  - ### archive

    protected JarFile archive
    The archive JAR file.

  - ### archiveEntries

    protected Map<String,JarEntry> archiveEntries
    The archive entries.

  - ### archiveLock

    protected final Object archiveLock
    The lock for archive operations.

  - ### archiveUseCount

    protected long archiveUseCount
    The archive use count.

  - ### jarContents

    protected JarContents jarContents
    The JAR contents.

  - ### retainBloomFilterForArchives

    protected boolean retainBloomFilterForArchives
    Whether to retain the bloom filter for archives.

- ## Constructor Details

  - ### AbstractArchiveResourceSet

    protected AbstractArchiveResourceSet()
    Constructs a new abstract archive resource set.

- ## Method Details

  - ### setBaseUrl

    protected final void setBaseUrl(URL baseUrl)
    Sets the base URL.
    Parameters:
      `baseUrl` - The base URL

  - ### 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()
    Returns the base URL string.
    Returns:
      the base URL string

  - ### 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()
    Checks if this is a multi-release JAR.
    Returns:
      true if this is a multi-release JAR, false otherwise

  - ### createArchiveResource

    protected abstract WebResource createArchiveResource(JarEntry jarEntry, String webAppPath, Manifest manifest)
    Creates an archive resource.
    Parameters:
      `jarEntry` - The JAR entry
      `webAppPath` - The web application path
      `manifest` - The manifest
    Returns:
      the archive resource

  - ### 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

  - ### setAllowLinking

    public void setAllowLinking(boolean allowLinking)
    Configure if this `ResourceSet` allows the use of symbolic links.

    Calls to this method will be ignored as archives do not allow linking.

    Parameters:
      `allowLinking` - `true` if symbolic links are allowed.

  - ### getAllowLinking

    public boolean getAllowLinking()
    Determine if this `ResourceSet` allows the use of symbolic links. If `WebResourceSet.setAllowLinking(boolean)` has not been called for this instance, the value of `WebResourceRoot.getAllowLinking()` is returned.

    Calls to this method always return `false` as archives do not allow linking.

    Returns:
      `true` if symbolic links are allowed

  - ### openJarFile

    protected JarFile openJarFile() throws IOException
    Throws:
      `IOException`

  - ### closeJarFile

    protected void closeJarFile()
    Closes the JAR file.

  - ### 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.