Package org.apache.catalina.webresources

## Class CachedResource

- java.lang.Object
- - org.apache.catalina.webresources.CachedResource

All Implemented Interfaces:
  `WebResource`

    public class CachedResource
    extends Object
    implements WebResource

This class is designed to wrap a 'raw' WebResource and providing caching for expensive operations. Inexpensive operations may be passed through to the underlying resource.

### Constructor Summary

Constructors
`CachedResource​(Cache cache, StandardRoot root, String path, long ttl, int objectMaxSizeBytes, boolean usesClassLoaderResources)`

### Method Summary

All Methods Instance Methods Concrete Methods
`boolean` `canRead()`
`boolean` `delete()`
`boolean` `exists()`
`String` `getCanonicalPath()`
`Certificate[]` `getCertificates()`
`URL` `getCodeBase()`
`byte[]` `getContent()`
`long` `getContentLength()`
`long` `getCreation()`
`String` `getETag()` Return the strong ETag if available (currently not supported) else return the weak ETag calculated from the content length and last modified.
`InputStream` `getInputStream()` Obtain an InputStream based on the contents of this resource.
`long` `getLastModified()`
`String` `getLastModifiedHttp()`
`Manifest` `getManifest()`
`String` `getMimeType()`
`String` `getName()`
`protected long` `getNextCheck()`
`URL` `getURL()`
`String` `getWebappPath()`
`WebResourceRoot` `getWebResourceRoot()`
`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`.
`void` `setMimeType​(String mimeType)` Set the MIME type for this Resource.
`protected boolean` `validateResource​(boolean useClassLoaderResources)`
`protected boolean` `validateResources​(boolean useClassLoaderResources)`

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

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

### Constructor Detail

#### CachedResource

    public CachedResource​(Cache cache,
                          StandardRoot root,
                          String path,
                          long ttl,
                          int objectMaxSizeBytes,
                          boolean usesClassLoaderResources)

### Method Detail

#### validateResource

    protected boolean validateResource​(boolean useClassLoaderResources)

#### validateResources

    protected boolean validateResources​(boolean useClassLoaderResources)

#### getNextCheck

    protected long getNextCheck()

#### getLastModified

    public long getLastModified()

Specified by:
  `getLastModified` in interface `WebResource`
Returns:
  `File.lastModified()`.

#### getLastModifiedHttp

    public String getLastModifiedHttp()

Specified by:
  `getLastModifiedHttp` in interface `WebResource`
Returns:
  the last modified time of this resource in the correct format for the HTTP Last-Modified header as specified by RFC 2616.

#### exists

    public boolean exists()

Specified by:
  `exists` in interface `WebResource`
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.

Specified by:
  `isVirtual` in interface `WebResource`
Returns:
  `true` for a virtual resource

#### isDirectory

    public boolean isDirectory()

Specified by:
  `isDirectory` in interface `WebResource`
Returns:
  `File.isDirectory()`.

#### isFile

    public boolean isFile()

Specified by:
  `isFile` in interface `WebResource`
Returns:
  `File.isFile()`.

#### delete

    public boolean delete()

Specified by:
  `delete` in interface `WebResource`
Returns:
  `File.delete()`.

#### getName

    public String getName()

Specified by:
  `getName` in interface `WebResource`
Returns:
  `File.getName()`.

#### getContentLength

    public long getContentLength()

Specified by:
  `getContentLength` in interface `WebResource`
Returns:
  `File.length()`.

#### getCanonicalPath

    public String getCanonicalPath()

Specified by:
  `getCanonicalPath` in interface `WebResource`
Returns:
  `File.getCanonicalPath()`.

#### canRead

    public boolean canRead()

Specified by:
  `canRead` in interface `WebResource`
Returns:
  `File.canRead()`.

#### getWebappPath

    public String getWebappPath()

Specified by:
  `getWebappPath` in interface `WebResource`
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

    public String getETag()

Description copied from interface: `WebResource`
Return the strong ETag if available (currently not supported) else return the weak ETag calculated from the content length and last modified.

Specified by:
  `getETag` in interface `WebResource`
Returns:
  The ETag for this resource

#### setMimeType

    public void setMimeType​(String mimeType)

Description copied from interface: `WebResource`
Set the MIME type for this Resource.

Specified by:
  `setMimeType` in interface `WebResource`
Parameters:
  `mimeType` - The mime type that will be associated with the resource

#### getMimeType

    public String getMimeType()

Specified by:
  `getMimeType` in interface `WebResource`
Returns:
  the MIME type for this Resource.

#### getInputStream

    public InputStream getInputStream()

Description copied from interface: `WebResource`
Obtain an InputStream based on the contents of this resource.

Specified by:
  `getInputStream` in interface `WebResource`
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

    public byte[] getContent()

Specified by:
  `getContent` in interface `WebResource`
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

    public long getCreation()

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

#### getURL

    public URL getURL()

Specified by:
  `getURL` in interface `WebResource`
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()

Specified by:
  `getCodeBase` in interface `WebResource`
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.

#### getCertificates

    public Certificate[] getCertificates()

Specified by:
  `getCertificates` in interface `WebResource`
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()

Specified by:
  `getManifest` in interface `WebResource`
Returns:
  the manifest associated with this resource or @null if none.
See Also:
  `JarFile.getManifest()`

#### getWebResourceRoot

    public WebResourceRoot getWebResourceRoot()

Specified by:
  `getWebResourceRoot` in interface `WebResource`
Returns:
  a reference to the WebResourceRoot of which this WebResource is a part.