# Class AbstractArchiveResource

java.lang.Object
org.apache.catalina.webresources.AbstractResource
org.apache.catalina.webresources.AbstractArchiveResource

All Implemented Interfaces:
  `WebResource`

Direct Known Subclasses:
  `AbstractSingleArchiveResource`, `JarWarResource`

public abstract class AbstractArchiveResource extends AbstractResource

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `protected class`
  `AbstractArchiveResource.JarInputStreamWrapper`
  This wrapper assumes that the InputStream was created from a JarFile obtained from a call to getArchiveResourceSet().openJarFile().

- ## Field Summary

  ### Fields inherited from class org.apache.catalina.webresources.AbstractResource

  `sm`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AbstractArchiveResource(AbstractArchiveResourceSet archiveResourceSet, String webAppPath, String baseUrl, JarEntry jarEntry)`
  Deprecated.
  `protected`
  `AbstractArchiveResource(AbstractArchiveResourceSet archiveResourceSet, String webAppPath, String baseUrl, JarEntry jarEntry, String codeBaseUrl)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `canRead()`
  `boolean`
  `delete()`
  `protected final InputStream`
  `doGetInputStream()`
  `boolean`
  `exists()`
  `protected AbstractArchiveResourceSet`
  `getArchiveResourceSet()`
  `protected final String`
  `getBase()`
  `protected final String`
  `getBaseUrl()`
  `String`
  `getCanonicalPath()`
  `Certificate[]`
  `getCertificates()`
  `URL`
  `getCodeBase()`
  Returns the code base for this resource.
  `final byte[]`
  `getContent()`
  `long`
  `getContentLength()`
  `long`
  `getCreation()`
  `protected abstract AbstractArchiveResource.JarInputStreamWrapper`
  `getJarInputStreamWrapper()`
  `long`
  `getLastModified()`
  `Manifest`
  `getManifest()`
  `String`
  `getName()`
  `protected final JarEntry`
  `getResource()`
  `URL`
  `getURL()`
  `boolean`
  `isDirectory()`
  `boolean`
  `isFile()`
  `boolean`
  `isVirtual()`
  Indicates if this resource is required for applications to correctly scan the file structure but that does not exist in either the main or any additional `WebResourceSet`.

  ### Methods inherited from class org.apache.catalina.webresources.AbstractResource

  `getETag, getInputStream, getLastModifiedHttp, getLog, getMimeType, getStrongETag, getWebappPath, getWebResourceRoot, setMimeType`

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

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

- ## Constructor Details

  - ### AbstractArchiveResource

    @Deprecated protected AbstractArchiveResource(AbstractArchiveResourceSet archiveResourceSet, String webAppPath, String baseUrl, JarEntry jarEntry)
    Deprecated.

  - ### AbstractArchiveResource

    protected AbstractArchiveResource(AbstractArchiveResourceSet archiveResourceSet, String webAppPath, String baseUrl, JarEntry jarEntry, String codeBaseUrl)

- ## Method Details

  - ### getArchiveResourceSet

    protected AbstractArchiveResourceSet getArchiveResourceSet()

  - ### getBase

    protected final String getBase()

  - ### getBaseUrl

    protected final String getBaseUrl()

  - ### getResource

    protected final JarEntry getResource()

  - ### getLastModified

    public long getLastModified()
    Returns:
      `File.lastModified()`.

  - ### exists

    public boolean exists()
    Returns:
      `File.exists()`.

  - ### isVirtual

    public boolean isVirtual()
    Description copied from interface: `WebResource`
    Indicates if this resource is required for applications to correctly scan the file structure but that does not exist in either the main or any additional `WebResourceSet`. For example, if an external directory is mapped to /WEB-INF/lib in an otherwise empty web application, /WEB-INF will be represented as a virtual resource.
    Returns:
      `true` for a virtual resource

  - ### isDirectory

    public boolean isDirectory()
    Returns:
      `File.isDirectory()`.

  - ### isFile

    public boolean isFile()
    Returns:
      `File.isFile()`.

  - ### delete

    public boolean delete()
    Returns:
      `File.delete()`.

  - ### getName

    public String getName()
    Returns:
      `File.getName()`.

  - ### getContentLength

    public long getContentLength()
    Returns:
      `File.length()`.

  - ### getCanonicalPath

    public String getCanonicalPath()
    Returns:
      `File.getCanonicalPath()`.

  - ### canRead

    public boolean canRead()
    Returns:
      `File.canRead()`.

  - ### getCreation

    public long getCreation()
    Returns:
      The time the file was created. If not available, the result of `WebResource.getLastModified()` will be returned.

  - ### getURL

    public URL getURL()
    Returns:
      a URL to access the resource or `null` if no such URL is available or if the resource does not exist.

  - ### getCodeBase

    public URL getCodeBase()
    Description copied from interface: `WebResource`
    Returns the code base for this resource.

    The expectation is that this will be deprecated and then removed once the SecurityManager has been fully removed from the JRE, and it has been confirmed that the JRE no longer depends on code base.

    Returns:
      the code base for this resource that will be used when looking up the assigned permissions for the code base in the security policy file when running under a security manager.

  - ### getContent

    public final byte[] getContent()
    Returns:
      the binary content of this resource or `null` if it is not available in a byte[] because, for example, it is too big.

  - ### getCertificates

    public Certificate[] getCertificates()
    Returns:
      the certificates that were used to sign this resource to verify it or @null if none.
    See Also:
      - `JarEntry.getCertificates()`

  - ### getManifest

    public Manifest getManifest()
    Returns:
      the manifest associated with this resource or @null if none.
    See Also:
      - `JarFile.getManifest()`

  - ### doGetInputStream

    protected final InputStream doGetInputStream()
    Specified by:
      `doGetInputStream` in class `AbstractResource`

  - ### getJarInputStreamWrapper

    protected abstract AbstractArchiveResource.JarInputStreamWrapper getJarInputStreamWrapper()