# Interface WebResource

All Known Implementing Classes:
  `AbstractArchiveResource, AbstractResource, AbstractSingleArchiveResource, CachedResource, EmptyResource, FileResource, JarResource, JarResourceRoot, JarWarResource, VirtualResource, WarResource`

public interface WebResource
Represents a file or directory within a web application. It borrows heavily from `File`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `canRead()`
  Checks if this resource can be read.
  `boolean`
  `delete()`
  Deletes this resource.
  `boolean`
  `exists()`
  Checks if this resource exists.
  `String`
  `getCanonicalPath()`
  Returns the canonical path of this resource.
  `Certificate[]`
  `getCertificates()`
  Returns the certificates that were used to sign this resource to verify it.
  `default URL`
  `getCodeBase()`
  Returns the code base for this resource.
  `byte[]`
  `getContent()`
  Returns the binary content of this resource.
  `long`
  `getContentLength()`
  Returns the content length of this resource.
  `long`
  `getCreation()`
  Returns the creation time of this resource.
  `String`
  `getETag()`
  Returns the weak ETag calculated from the content length and last modified.
  `InputStream`
  `getInputStream()`
  Obtains an InputStream based on the contents of this resource.
  `long`
  `getLastModified()`
  Returns the last modified time.
  `String`
  `getLastModifiedHttp()`
  Returns the last modified time in HTTP format.
  `Manifest`
  `getManifest()`
  Returns the manifest associated with this resource.
  `String`
  `getMimeType()`
  Returns the MIME type for this Resource.
  `String`
  `getName()`
  Returns the name of this resource.
  `default String`
  `getStrongETag()`
  Return the strong ETag if available else return the weak ETag calculated from the content length and last modified.
  `URL`
  `getURL()`
  Returns a URL to access this resource.
  `String`
  `getWebappPath()`
  Returns the webapp path of this resource.
  `WebResourceRoot`
  `getWebResourceRoot()`
  Returns a reference to the WebResourceRoot of which this WebResource is a part.
  `boolean`
  `isDirectory()`
  Checks if this resource is a directory.
  `boolean`
  `isFile()`
  Checks if this resource is a file.
  `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`.
  `void`
  `setMimeType(String mimeType)`
  Set the MIME type for this Resource.

- ## Method Details

  - ### getLastModified

    long getLastModified()
    Returns the last modified time.
    Returns:
      `File.lastModified()`.

  - ### getLastModifiedHttp

    String getLastModifiedHttp()
    Returns the last modified time in HTTP format.
    Returns:
      the last modified time of this resource in the correct format for the HTTP Last-Modified header as specified by RFC 2616.

  - ### exists

    boolean exists()
    Checks if this resource exists.
    Returns:
      `File.exists()`.

  - ### isVirtual

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

    boolean isDirectory()
    Checks if this resource is a directory.
    Returns:
      `File.isDirectory()`.

  - ### isFile

    boolean isFile()
    Checks if this resource is a file.
    Returns:
      `File.isFile()`.

  - ### delete

    boolean delete()
    Deletes this resource.
    Returns:
      `File.delete()`.

  - ### getName

    String getName()
    Returns the name of this resource.
    Returns:
      `File.getName()`.

  - ### getContentLength

    long getContentLength()
    Returns the content length of this resource.
    Returns:
      `File.length()`.

  - ### getCanonicalPath

    String getCanonicalPath()
    Returns the canonical path of this resource.
    Returns:
      `File.getCanonicalPath()`.

  - ### canRead

    boolean canRead()
    Checks if this resource can be read.
    Returns:
      `File.canRead()`.

  - ### getWebappPath

    String getWebappPath()
    Returns the webapp path of this resource.
    Returns:
      The path of this resource relative to the web application root. If the resource is a directory, the return value will end in '/'.

  - ### getETag

    String getETag()
    Returns the weak ETag calculated from the content length and last modified.
    Returns:
      The ETag for this resource

  - ### getStrongETag

    default String getStrongETag()
    Return the strong ETag if available else return the weak ETag calculated from the content length and last modified.
    Returns:
      The ETag for this resource

  - ### setMimeType

    void setMimeType(String mimeType)
    Set the MIME type for this Resource.
    Parameters:
      `mimeType` - The mime type that will be associated with the resource

  - ### getMimeType

    String getMimeType()
    Returns the MIME type for this Resource.
    Returns:
      the MIME type for this Resource.

  - ### getInputStream

    InputStream getInputStream()
    Obtains an InputStream based on the contents of this resource.
    Returns:
      An InputStream based on the contents of this resource or `null` if the resource does not exist or does not represent a file

  - ### getContent

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

  - ### getCreation

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

  - ### getURL

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

  - ### getCodeBase

    default URL getCodeBase()
    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.

  - ### getWebResourceRoot

    WebResourceRoot getWebResourceRoot()
    Returns a reference to the WebResourceRoot of which this WebResource is a part.
    Returns:
      a reference to the WebResourceRoot of which this WebResource is a part.

  - ### getCertificates

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

  - ### getManifest

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