# 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
Constructor
Description
`CachedResource(Cache cache, StandardRoot root, String path, long ttl, int objectMaxSizeBytes, boolean usesClassLoaderResources)`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`canRead()`
`boolean`
`delete()`
`boolean`
`exists()`
`String`
`getCanonicalPath()`
`Certificate[]`
`getCertificates()`
`URL`
`getCodeBase()`
Returns the code base for this resource.
`byte[]`
`getContent()`
`long`
`getContentLength()`
`long`
`getCreation()`
`String`
`getETag()`
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()`
`String`
`getStrongETag()`
Return the strong ETag if available else return the weak ETag calculated from the content length and last modified.
`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 Object

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

## Constructor Details

### CachedResource

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

## Method Details

### 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 weak ETag calculated from the content length and last modified.

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

### getStrongETag

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

Specified by:
  `getStrongETag` 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()
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.

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.