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
`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
`AbstractArchiveResourceSet()`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`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.