org.w3c.www.protocol.http.cache
Class CachedResource

java.lang.Object
  extended by org.w3c.tools.resources.AttributeHolder
      extended by org.w3c.www.protocol.http.cache.CachedResource
All Implemented Interfaces:
java.lang.Cloneable, LRUAble, TeeMonitor
Direct Known Subclasses:
EntityCachedResource

public abstract class CachedResource
extends AttributeHolder
implements TeeMonitor, LRUAble


Field Summary
protected  ArrayDictionary a
           
protected static int ATTR_CONNEG_HEADERS
          Attribute index - The request headers used for content negotiation as set by the reply Vary header.
protected static int ATTR_CONTENT_ENCODING
          Attribute index - The Content Encoding of the resource
protected static int ATTR_CONTENT_LANGUAGE
          Attribute index - The Content Language of the resource
protected static int ATTR_CONTENT_LENGTH
          Attribute index - The resource content length.
protected static int ATTR_CONTENT_MD5
          Attribute index - The Content MD5 of the resource
protected static int ATTR_CURRENT_LENGTH
          Attribute index - The resource current length.
protected static int ATTR_DATE
          Attribute index - The Date of the resource
protected static java.lang.String[] ATTR_DESCR
          The minimal attribute set used to describe a cachedresource without loading it entirely.
protected static int ATTR_ETAG
          Attribute index - The entity tag (if any) associated with the resource.
protected static int ATTR_EXTRA_HEADERS
          Attribute index - The extra headers attribute.
protected static int ATTR_FILE
          Attribute index - The file
protected static int ATTR_IDENTIFIER
          Attribute index - The identifier
protected static int ATTR_LOAD_STATE
          Attribute index - The download state
protected static int ATTR_LOCATION
          Attribute index - The Location of this resource
protected static int ATTR_REPLY_LAST_MODIFIED
          Attribute index - The Last modified of this resource
protected static int ATTR_STATUS
          Attribute index - The reply status.
protected static int ATTR_VARY
          Attribute index - The Vary of this resource
static int COND_FAILED
          Condition check return code - Condition existed but failed.
static int COND_OK
          Condition check return code - Condition existed and succeeded.
protected  CacheFilter filter
           
protected  CacheGeneration generation
           
protected  boolean invalidated
           
protected static java.lang.String NAME_CONTENT_LENGTH
          Attribute name - The resource content length.
protected static java.lang.String NAME_CURRENT_LENGTH
          Attribute name - The resource current length
protected static java.lang.String NAME_FILE
          Attribute name - The identifier
protected static java.lang.String NAME_IDENTIFIER
          Attribute name - The identifier
protected  LRUAble next
          LRU management - next entry.
protected  LRUAble prev
          LRU management - previous entry.
static int STATE_LOAD_COMPLETE
          The download state of the resource, complete content
static int STATE_LOAD_ERROR
          The download state of the resource, erroneous, something weird happened! but at least we know that :)
static int STATE_LOAD_PARTIAL
          The download state of the resource, partial content
static int STATE_LOAD_UNKNOWN
          The download state of the resource, unknown, probably an HTTP/1.0 reply without the Content-Length.
static int STATE_NOT_LOADED
          The download state of the resource, currently not loaded
protected  boolean uploading
           
 
Fields inherited from class org.w3c.tools.resources.AttributeHolder
attributes, values
 
Constructor Summary
CachedResource()
           
 
Method Summary
 long delete()
          Delete this resource (and its associated file).
 ArrayDictionary getConnegHeaders()
          Get the extra headers stored for that resource.
 java.lang.String[] getContentEncoding()
          Get the Content-Encoding associated with that cached entry.
 java.lang.String[] getContentLanguage()
          Get the Content-Language associated with that cached entry.
 int getContentLength()
          Get this cached entry content length.
 java.lang.String getContentMD5()
          Get the Content-MD5 associated with that cached entry.
abstract  MimeType getContentType()
          Get the Content-Type of the cached resource of null if there is no mime type (it should NEVER happen!)
abstract  int getCurrentAge()
          returns the current age of this cached resource
 int getCurrentLength()
          Get this cached entry current content length.
 long getDate()
          Get this date, as a long
 java.lang.String getETag()
          Get the entity tag associated with that cached entry.
 ArrayDictionary getExtraHeaders()
          Get the extra headers stored for that resource.
 java.io.File getFile()
          Get the cached File.
abstract  int getFreshnessLifetime()
          returns the current freshness lifetime of this resource
 java.lang.String getIdentifier()
          Get this cached entry identifier
 long getLastModified()
          Get this Cached Resource last modification time.
 int getLoadState()
          Get the load state value
 LRUAble getNext()
          LRU management - Get next node.
 LRUAble getPrev()
          LRU management - Get previous node.
 int getStatus()
          Get the HTTP status of that cached entry.
 java.lang.String[] getVary()
          Get the Vary associated with that cached entry.
 boolean getWillRevalidate()
          Get state of the resource, did someone ask for revalidation for the next request?
 CachedResource lookupResource(Request request)
          This methods return the CachedResource matching this request it allows lookup in the cache for alternatives
 void notifyTeeFailure(int size)
          Called when the Tee stream fails, it allows you to notify a listener of an error in the stream.
 void notifyTeeSuccess(int size)
          Called when the tee succeed, it allows you to notify a listener of the Tee that the download completed succesfully with a specific size
abstract  Reply perform(Request request)
          This cached entry has been checked valid, perform given request.
 void setConnegHeaders(ArrayDictionary a)
          Set a new set of extra headers for that resource.
 void setContentEncoding(java.lang.String[] sum)
          Associate a Content-Encoding with that cached enrty.
 void setContentLanguage(java.lang.String[] language)
          Associate a Content-Language with that cached enrty.
 void setContentLength(int length)
          Set the content length of that cached entry.
 void setContentMD5(java.lang.String sum)
          Associate a Content-MD5 with that cached enrty.
abstract  void setContentType(MimeType type)
          Set the Content-Type of this cached resource
 void setCurrentLength(int length)
          Set the current length of that cached entry.
 void setDate(long date)
          Set the content length of that cached entry.
 void setETag(java.lang.String etag)
          Associate an entity tag with that cached enrty.
 void setExtraHeaders(ArrayDictionary a)
          Set a new set of extra headers for that resource.
 void setFile(java.io.File file)
          Set the cached file
 void setLastModified(long lastmodified)
          Set the last modified time of that cached entry.
 void setLoadState(int state)
          Set the loading state of this resource
 void setNext(LRUAble next)
          LRU management - Set next node.
 void setPrev(LRUAble prev)
          LRU management - Set previous node.
abstract  Request setRequestRevalidation(Request request)
          This cached entry needs revalidation, it will modify the request to do that.
 void setStatus(int status)
          Set the reply status for that entry.
 void setValue(int idx, java.lang.Object value)
          overrides the default setValue to invalidate the ETag
 void setVary(java.lang.String[] vary)
          Associate a Vary with that cached enrty.
 void setWillRevalidate(boolean invalidated)
          Set this cached entry revalidate-on-next-request flag
 
Methods inherited from class org.w3c.tools.resources.AttributeHolder
definesAttribute, definesAttribute, getAttributes, getBoolean, getChar, getClone, getClone, getClone, getDouble, getFloat, getInt, getLong, getString, getValue, getValue, initialize, initialize, lookupAttribute, pickleValues, print, setBoolean, setChar, setDouble, setFloat, setInt, setLong, setString, setValue, unsafeDefinesAttribute, unsafeGetDouble, unsafeGetString, unsafeGetValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

COND_FAILED

public static final int COND_FAILED
Condition check return code - Condition existed but failed.

See Also:
Constant Field Values

COND_OK

public static final int COND_OK
Condition check return code - Condition existed and succeeded.

See Also:
Constant Field Values

STATE_NOT_LOADED

public static final int STATE_NOT_LOADED
The download state of the resource, currently not loaded

See Also:
Constant Field Values

STATE_LOAD_COMPLETE

public static final int STATE_LOAD_COMPLETE
The download state of the resource, complete content

See Also:
Constant Field Values

STATE_LOAD_PARTIAL

public static final int STATE_LOAD_PARTIAL
The download state of the resource, partial content

See Also:
Constant Field Values

STATE_LOAD_UNKNOWN

public static final int STATE_LOAD_UNKNOWN
The download state of the resource, unknown, probably an HTTP/1.0 reply without the Content-Length.

See Also:
Constant Field Values

STATE_LOAD_ERROR

public static final int STATE_LOAD_ERROR
The download state of the resource, erroneous, something weird happened! but at least we know that :)

See Also:
Constant Field Values

ATTR_IDENTIFIER

protected static int ATTR_IDENTIFIER
Attribute index - The identifier


ATTR_CONTENT_LENGTH

protected static int ATTR_CONTENT_LENGTH
Attribute index - The resource content length.


ATTR_CURRENT_LENGTH

protected static int ATTR_CURRENT_LENGTH
Attribute index - The resource current length.


ATTR_FILE

protected static int ATTR_FILE
Attribute index - The file


NAME_CONTENT_LENGTH

protected static final java.lang.String NAME_CONTENT_LENGTH
Attribute name - The resource content length.

See Also:
Constant Field Values

NAME_CURRENT_LENGTH

protected static final java.lang.String NAME_CURRENT_LENGTH
Attribute name - The resource current length

See Also:
Constant Field Values

NAME_IDENTIFIER

protected static final java.lang.String NAME_IDENTIFIER
Attribute name - The identifier

See Also:
Constant Field Values

NAME_FILE

protected static final java.lang.String NAME_FILE
Attribute name - The identifier

See Also:
Constant Field Values

ATTR_LOAD_STATE

protected static int ATTR_LOAD_STATE
Attribute index - The download state


ATTR_ETAG

protected static int ATTR_ETAG
Attribute index - The entity tag (if any) associated with the resource.


ATTR_STATUS

protected static int ATTR_STATUS
Attribute index - The reply status.


ATTR_REPLY_LAST_MODIFIED

protected static int ATTR_REPLY_LAST_MODIFIED
Attribute index - The Last modified of this resource


ATTR_DATE

protected static int ATTR_DATE
Attribute index - The Date of the resource


ATTR_CONTENT_MD5

protected static int ATTR_CONTENT_MD5
Attribute index - The Content MD5 of the resource


ATTR_CONTENT_ENCODING

protected static int ATTR_CONTENT_ENCODING
Attribute index - The Content Encoding of the resource


ATTR_CONTENT_LANGUAGE

protected static int ATTR_CONTENT_LANGUAGE
Attribute index - The Content Language of the resource


ATTR_LOCATION

protected static int ATTR_LOCATION
Attribute index - The Location of this resource


ATTR_VARY

protected static int ATTR_VARY
Attribute index - The Vary of this resource


ATTR_EXTRA_HEADERS

protected static int ATTR_EXTRA_HEADERS
Attribute index - The extra headers attribute.


ATTR_CONNEG_HEADERS

protected static int ATTR_CONNEG_HEADERS
Attribute index - The request headers used for content negotiation as set by the reply Vary header.


ATTR_DESCR

protected static java.lang.String[] ATTR_DESCR
The minimal attribute set used to describe a cachedresource without loading it entirely.


invalidated

protected boolean invalidated

generation

protected CacheGeneration generation

a

protected ArrayDictionary a

uploading

protected boolean uploading

filter

protected CacheFilter filter

prev

protected LRUAble prev
LRU management - previous entry.


next

protected LRUAble next
LRU management - next entry.

Constructor Detail

CachedResource

public CachedResource()
Method Detail

notifyTeeFailure

public void notifyTeeFailure(int size)
Description copied from interface: TeeMonitor
Called when the Tee stream fails, it allows you to notify a listener of an error in the stream.

Specified by:
notifyTeeFailure in interface TeeMonitor

notifyTeeSuccess

public void notifyTeeSuccess(int size)
Description copied from interface: TeeMonitor
Called when the tee succeed, it allows you to notify a listener of the Tee that the download completed succesfully with a specific size

Specified by:
notifyTeeSuccess in interface TeeMonitor

getNext

public LRUAble getNext()
LRU management - Get next node.

Specified by:
getNext in interface LRUAble
Returns:
A CvsDirectory instance.

getPrev

public LRUAble getPrev()
LRU management - Get previous node.

Specified by:
getPrev in interface LRUAble
Returns:
A CvsDirectory instance.

setNext

public void setNext(LRUAble next)
LRU management - Set next node.

Specified by:
setNext in interface LRUAble

setPrev

public void setPrev(LRUAble prev)
LRU management - Set previous node.

Specified by:
setPrev in interface LRUAble

setValue

public void setValue(int idx,
                     java.lang.Object value)
overrides the default setValue to invalidate the ETag

Overrides:
setValue in class AttributeHolder
Parameters:
idx - The attribute index, in the list of attributes advertized by the resource.
value - The new value for this attribute.

getCurrentAge

public abstract int getCurrentAge()
returns the current age of this cached resource

Returns:
an integer, the current age in seconds

getFreshnessLifetime

public abstract int getFreshnessLifetime()
returns the current freshness lifetime of this resource

Returns:
a long, the freshness lifetime, in seconds

lookupResource

public CachedResource lookupResource(Request request)
This methods return the CachedResource matching this request it allows lookup in the cache for alternatives

Returns:
a CachedResource depending on the request

getIdentifier

public java.lang.String getIdentifier()
Get this cached entry identifier

Returns:
a String, usually the URL of the resource

getContentLength

public int getContentLength()
Get this cached entry content length.

Returns:
An integer, giving the content length, or -1 if undefined.

setContentLength

public void setContentLength(int length)
Set the content length of that cached entry.

Parameters:
length - The new content length of that entry.

getCurrentLength

public int getCurrentLength()
Get this cached entry current content length.

Returns:
An integer, giving the current content length, or -1 if undefined

setCurrentLength

public void setCurrentLength(int length)
Set the current length of that cached entry.

Parameters:
length - The current length of that entry.

getLoadState

public int getLoadState()
Get the load state value

Returns:
an integer, as defined in CachedResource
See Also:
The default is STATE_NOT_LOADED

setLoadState

public void setLoadState(int state)
Set the loading state of this resource

Parameters:
an - integer, one of the state defined in CachedResource
See Also:
CachedResource

getStatus

public int getStatus()
Get the HTTP status of that cached entry.

Returns:
An integer HTTP status code, or -1 if undefined.

setStatus

public void setStatus(int status)
Set the reply status for that entry.

Parameters:
status - The HTTP status code of that entry, or -1 to undefine the previous setting.

getLastModified

public long getLastModified()
Get this Cached Resource last modification time.

Returns:
A long giving the date of the last modification time, or -1 if undefined.

setLastModified

public void setLastModified(long lastmodified)
Set the last modified time of that cached entry.

Parameters:
lastmodified - The last modification date as a number of milliseconds since Java epoch, or -1 to undefine previous setting.

getContentType

public abstract MimeType getContentType()
Get the Content-Type of the cached resource of null if there is no mime type (it should NEVER happen!)

Returns:
a MimeType

setContentType

public abstract void setContentType(MimeType type)
Set the Content-Type of this cached resource

Parameters:
a - MimeType, the mime type of this resource

getWillRevalidate

public boolean getWillRevalidate()
Get state of the resource, did someone ask for revalidation for the next request?

Returns:
a boolean, true if it will. -1 if undefined.

setWillRevalidate

public void setWillRevalidate(boolean invalidated)
Set this cached entry revalidate-on-next-request flag

Parameters:
validate, - a boolean, true if it will be revalidated next time.

getDate

public long getDate()
Get this date, as a long

Returns:
a long, the date if undefined.

setDate

public void setDate(long date)
Set the content length of that cached entry.

Parameters:
length - The new content length of that entry.

setFile

public void setFile(java.io.File file)
Set the cached file

Parameters:
file -

getFile

public java.io.File getFile()
Get the cached File.

Returns:
a File instance

getETag

public java.lang.String getETag()
Get the entity tag associated with that cached entry.

Returns:
The String encoded entity tag, or null if undefined.

setETag

public void setETag(java.lang.String etag)
Associate an entity tag with that cached enrty.

Parameters:
etag - The entity tag of the entry, or null to reset the value.

getContentMD5

public java.lang.String getContentMD5()
Get the Content-MD5 associated with that cached entry.

Returns:
The String encoded Content-MD5, or null if undefined.

setContentMD5

public void setContentMD5(java.lang.String sum)
Associate a Content-MD5 with that cached enrty.

Parameters:
sum, - the md5 sum as a string, see RFC2616, or null to reset the value.

getContentEncoding

public java.lang.String[] getContentEncoding()
Get the Content-Encoding associated with that cached entry.

Returns:
The String Content-Encoding, or null if undefined.

setContentEncoding

public void setContentEncoding(java.lang.String[] sum)
Associate a Content-Encoding with that cached enrty.

Parameters:
sum, - the encoding as a string, or null to reset the value.

getContentLanguage

public java.lang.String[] getContentLanguage()
Get the Content-Language associated with that cached entry.

Returns:
The String Content-Language, or null if undefined.

setContentLanguage

public void setContentLanguage(java.lang.String[] language)
Associate a Content-Language with that cached enrty.

Parameters:
sum, - the encoding as a string, or null to reset the value.

getVary

public java.lang.String[] getVary()
Get the Vary associated with that cached entry.

Returns:
The String array of Vary, or null if undefined.

setVary

public void setVary(java.lang.String[] vary)
Associate a Vary with that cached enrty.

Parameters:
sum, - the header involved in the variant check as a string array, or null to reset the value.

getExtraHeaders

public ArrayDictionary getExtraHeaders()
Get the extra headers stored for that resource.

Returns:
An ArrayDictionary with the extra headers, or null if undefined.

setExtraHeaders

public void setExtraHeaders(ArrayDictionary a)
Set a new set of extra headers for that resource.

Parameters:
headers - The new set of headers.

getConnegHeaders

public ArrayDictionary getConnegHeaders()
Get the extra headers stored for that resource.

Returns:
An ArrayDictionary with the extra headers, or null if undefined.

setConnegHeaders

public void setConnegHeaders(ArrayDictionary a)
Set a new set of extra headers for that resource.

Parameters:
headers - The new set of headers.

delete

public long delete()
Delete this resource (and its associated file).

Returns:
the number of bytes saved.

perform

public abstract Reply perform(Request request)
                       throws HttpException
This cached entry has been checked valid, perform given request.

Parameters:
request - The request to perform.
Returns:
An Reply instance.
Throws:
HttpException - If something went wrong.

setRequestRevalidation

public abstract Request setRequestRevalidation(Request request)
This cached entry needs revalidation, it will modify the request to do that.