    All Packages  Class Hierarchy  This Package  Previous  Next  Index

# Class org.w3c.www.http.HttpMessage

    java.lang.Object
       |
       +----org.w3c.www.http.HttpMessage

public class HttpMessage
extends Object
implements MimeHeaderHolder, Cloneable, HTTP

The basic class for all HTTP messages, as define in the HTTP spec. This class is the base class for a number of other classes, including both the ingoing/outgoing requests and replies.

##

descriptors
EMIT_ALL
EMIT_BODY
EMIT_FOOTERS
EMIT_HEADERS
emitdate
  The date at which this message was last emitted.
factory
  The header value factory.
H_CACHE_CONTROL
H_CONNECTION
H_COOKIE
H_DATE
H_PRAGMA
H_PROTOCOL
H_PROTOCOL_INFO
H_PROTOCOL_QUERY
H_PROTOCOL_REQUEST
H_PROXY_CONNECTION
H_SET_COOKIE
H_TRAILER
H_TRANSFER_ENCODING
H_UPGRADE
H_VIA
headers
  The header value repository.
major
  The major version of this message, according to HTTP specs.
MAX_HEADERS
minor
  The minoir version of this message, according to HTTP specs.
state
  The state dictionary.
values

##

HttpMessage()
HttpMessage(MimeParser)

##

addConnection(String)
  Add the given header name to the `Connection` header.
addNoCache(String)
  Add the given header name to the `no-cache` directive.
addPragma(String)
  Add the given directive to the `Pragma` header.
addProxyConnection(String)
  Add the given header name to the `Proxy-Connection` header.
addVia(String)
  Add a via clause to the via header.
checkNoStore()
  Check the `no-store` directive of the cache control header.
checkOnlyIfCached()
  Check the `only-if-cached` directive.
delState(String)
  State management - Remove a piece of state from this request.
dump(OutputStream)
emit(OutputStream)
  Emit this message to the given output stream.
emit(OutputStream, int)
emitHeaders(OutputStream, int)
endEmit(OutputStream, int)
  This message has been emited.
enumerateHeaderDescriptions()
  Enumerate all the headers defined for that message.
enumerateHeaderDescriptions(boolean)
  Enumerate all the available headers for that message.
getCacheControl()
  Header accessor - get the cache control policy.
getClone()
  Get a clone of this HTTP message.
getConnection()
  Header accessor - get the connection header value.
getCookie()
  Get the cookies attached to that message.
getDate()
  Header accessor - get the date of this message.
getEmitDate()
  Get the date at which this message was last emitted, if ever it was.
getHeaderValue(HeaderDescription)
  Get a header value, keyed by it's header description.
getHeaderValue(int)
  Fast access to header value.
getHeaderValue(String)
  Get a header value by name.
getHeaderValue(String, HeaderValue)
  Get a header value, given its name.
getMajorVersion()
  Get the major version number of this message.
getMaxAge()
  Get the `max-age` value for the current cache control.
getMinorVersion()
  Get the minor version number of this message.
getNoCache()
  Get the `no-cache` directive of the cache control header.
getPragma()
  Header accessor - get the pragmas applicable to this message.
getProtocol()
  Get the set of protocol extensions that have been applied to that that message.
getProtocolInfo()
  Get the protocol extensions informations carried by this message.
getProtocolQuery()
  Get the set of protocol extensions that are queried through this message.
getProtocolRequest()
  Get the set of protocol extensions requested by this message.
getProxyConnection()
  Header accessor - get the proxy connection header value.
getSetCookie()
  Get the value of the SetCookie header.
getState(String)
  State management - Lookup the value of a state on this request.
getTrailer()
  Get this message trailer
getTransferEncoding()
  Header accessor - get the transfer encoding applying to this message.
getUpgrade()
  Header accessor - get the upgrade header of this message.
getValue(HeaderDescription)
  Get a header field value as a String.
getValue(String)
  Get a header field value as a String.
getVersion()
  Get the String identifying the HTTP version used for this message.
getVia()
  Header accessor - get the via header of this message.
hasConnection(String)
  Does the connection header include the given token ?
hasHeader(int)
  Probe this message for a defined header, fast access !
hasHeader(String)
  Probe this message for a defined header.
hasPragma(String)
  Header accessor - Check for a given pragma.
hasProxyConnection(String)
  Does the proxy connection header defines the given token.
hasState(String)
  State management - Is the given state defined for the message ?
hasTransferEncoding(String)
  Header accessor - Check for a given transfer encoding.
notifyBeginParsing(MimeParser)
  MimeHeaderHolder implementation - HTTP message about to be parsed.
notifyEndParsing(MimeParser)
  MimeHeaderHolder implementation - HTTP message parsing done.
notifyHeader(String, byte[], int, int)
  MimeHeaderHolder implementation - The MIME parser callback.
registerHeader(String, String)
registerHeader(String, String, int)
removeHeader(int)
  Remove a header, by address.
removeHeader(String)
  Remove a header, by name.
setCacheControl(HttpCacheControl)
  Header accessor - set the cache control associated with the message.
setConnection(String[])
  Header accessor - set the connection header value.
setCookie(HttpCookieList)
  Set the cookies attached to this message.
setDate(long)
  Header accessor - set the date of this message.
setHeaderValue(HeaderDescription, HeaderValue)
  Set a header value, keyed by it's header description.
setHeaderValue(int, HeaderValue)
  Fast write accessor to headers.
setHeaderValue(String, HeaderValue)
  Set a header value.
setMaxAge(int)
  Set the `max-age` value of the associated cache control.
setNoCache()
  Set the `no-cache` directive globally.
setNoCache(String[])
  Set the `no-cache` directive of the cache control header.
setNoStore(boolean)
  Set the `no-store` directive.
setOnlyIfCached(boolean)
  Set the `only-if-cached` directive.
setPragma(String[])
  Header accessor - set the pragmas applicable to this message.
setProtocol(HttpBag)
  Set the protocol extensions applied to that message.
setProtocolInfo(HttpBag)
  Attach protocol extensions informations to that message.
setProtocolQuery(HttpBag)
  Set the protocol extensions queried by that message.
setProtocolRequest(HttpBag)
  Set the protocol extensions required by this message.
setProxyConnection(String[])
  Header accessor - set the proxy connection header value.
setSetCookie(HttpSetCookieList)
  Set the value of the Set-Cookie header.
setState(String, Object)
  State management - Add a piece of state to this request.
setTrailer(String[])
  Set this message trailer
setTransferEncoding(String[])
  Header accessor - set the transfer encoding for this message.
setUpgrade(String[])
  Header accessor - set the upgrade header of this message.
setValue(String, String)
  Define a new header field.
setVia(String[])
  Header accessor - set the Via header of this message.
startEmit(OutputStream, int)
  This message is about to be emited.

##

EMIT_HEADERS

     public static final int EMIT_HEADERS

EMIT_BODY

     public static final int EMIT_BODY

EMIT_FOOTERS

     public static final int EMIT_FOOTERS

EMIT_ALL

     public static final int EMIT_ALL

H_CACHE_CONTROL

     public static int H_CACHE_CONTROL

H_CONNECTION

     public static int H_CONNECTION

H_PROXY_CONNECTION

     public static int H_PROXY_CONNECTION

H_DATE

     public static int H_DATE

H_PRAGMA

     public static int H_PRAGMA

H_TRANSFER_ENCODING

     public static int H_TRANSFER_ENCODING

H_UPGRADE

     public static int H_UPGRADE

H_VIA

     public static int H_VIA

H_PROTOCOL

     public static int H_PROTOCOL

H_PROTOCOL_REQUEST

     public static int H_PROTOCOL_REQUEST

H_PROTOCOL_INFO

     public static int H_PROTOCOL_INFO

H_PROTOCOL_QUERY

     public static int H_PROTOCOL_QUERY

H_SET_COOKIE

     public static int H_SET_COOKIE

H_COOKIE

     public static int H_COOKIE

H_TRAILER

     public static int H_TRAILER

MAX_HEADERS

     public static int MAX_HEADERS

factory

     protected static Hashtable factory

  The header value factory.

headers

     protected Dictionary headers

  The header value repository. At this time, I am using this quite inefficient scheme, but the API have been carefully designed to enable a more efficient implementation.

major

     protected short major

  The major version of this message, according to HTTP specs.

minor

     protected short minor

  The minoir version of this message, according to HTTP specs.

emitdate

     protected long emitdate

  The date at which this message was last emitted.

state

     protected ArrayDictionary state

  The state dictionary.

values

     protected HeaderValue values[]

descriptors

     protected static HeaderDescription descriptors[]

##

HttpMessage

     public HttpMessage(MimeParser parser)

HttpMessage

     public HttpMessage()

##

registerHeader

     protected static final void registerHeader(String name,
                                                String cls)

registerHeader

     protected static final void registerHeader(String name,
                                                String c,
                                                int i)

getHeaderValue

     public HeaderValue getHeaderValue(String name,
                                       HeaderValue def)

  Get a header value, given its name.

  Parameters:
    name - The name of the field whose value is to be fetched.
    def - The default value if the field is undefined.

getHeaderValue

     public final HeaderValue getHeaderValue(String name)

  Get a header value by name.

  Parameters:
    name - The header's name.
  Returns:
    The value of the header, as a String, or null if undefined.

getHeaderValue

     public final HeaderValue getHeaderValue(int idx)

  Fast access to header value.

  This method provides a very fast access to pre-defined header values. You can use it on all headers that have an access token.

  Parameters:
    idx - The token of the header to access.
  Returns:
    An instance of `HeaderValue` or null if undefined.

setHeaderValue

     public void setHeaderValue(String name,
                                HeaderValue value)

  Set a header value.

  Parameters:
    name - The name of the header to define.
    value - It's HeaderValue.

getHeaderValue

     public HeaderValue getHeaderValue(HeaderDescription d)

  Get a header value, keyed by it's header description. This is usefull when enumerating headers, by the mean of `enumerateHeaderDescriptions`.

  Parameters:
    d - The header description.
  Returns:
    A HeaderValue instance, if the header is defined, null otherwise.

setHeaderValue

     public void setHeaderValue(HeaderDescription d,
                                HeaderValue v)

  Set a header value, keyed by it's header description.

  Parameters:
    d - The header description.
    v - The HeaderValue instance, or null to reset the header value.

setHeaderValue

     public final void setHeaderValue(int idx,
                                      HeaderValue value)

  Fast write accessor to headers.

  This method provides a very fast write access to header values. It can be used with any of the headers that have a pre-defined access token.

  Parameters:
    idx - The access token of the header's to write to.
    value - The new header value.

removeHeader

     public void removeHeader(String name)

  Remove a header, by name.

  Parameters:
    name - The name of the header to remove.

removeHeader

     public final void removeHeader(int idx)

  Remove a header, by address. A fast version of the above.

  Parameters:
    idx - The index of the header to remove.

enumerateHeaderDescriptions

     public Enumeration enumerateHeaderDescriptions(boolean all)

  Enumerate all the available headers for that message. This method returns an enumeration of HeaderDescription instances, which you can then use to access most efficiently header values.

  Parameters:
    all - If true the enumeration will cover all headers (even the ones that are not defined for that message) otherwise, it will cover only defined headers.
  Returns:
    An enumeration.

enumerateHeaderDescriptions

     public Enumeration enumerateHeaderDescriptions()

  Enumerate all the headers defined for that message. This method returns an enumeration of HeaderDescription instances, which you can then use to access most efficiently header values.

  Returns:
    An enumeration.

setState

     public void setState(String name,
                          Object value)

  State management - Add a piece of state to this request. If the piece of state already exists, it is overriden by the new value.

  Parameters:
    name - The name of the piece of state to define.
    value - It's corresponding value, or null to reset the value.

getState

     public Object getState(String name)

  State management - Lookup the value of a state on this request.

  Parameters:
    name - The name of the piece of state to look for.
  Returns:
    An object, if the piece of state is defined, null otherwise.

delState

     public void delState(String name)

  State management - Remove a piece of state from this request.

  Parameters:
    name - The name of the piece of state to remove.

hasState

     public boolean hasState(String name)

  State management - Is the given state defined for the message ?

  Returns:
    A boolean true if the state is defined, false otherwise.

getClone

     public HttpMessage getClone()

  Get a clone of this HTTP message.

  Returns:
    An HttpMessage, of the class of the message receiver.

getValue

     public String getValue(String name)

  Get a header field value as a String.

  Parameters:
    name - The name of the header.
  Returns:
    A String giving the header value, or null if undefined.

getValue

     public String getValue(HeaderDescription d)

  Get a header field value as a String.

  Parameters:
    d - The header description.
  Returns:
    The String value for the given header, or null if undefined.

setValue

     public void setValue(String name,
                          String strval)

  Define a new header field.

  Parameters:
    name - The name of the header to be defined or reset.
    value - It's String value, or null to reset the value.

hasHeader

     public boolean hasHeader(String name)

  Probe this message for a defined header.

  Parameters:
    name - The name of the header to check.
  Returns:
    true if the header is defined, false otherwise.

hasHeader

     public boolean hasHeader(int idx)

  Probe this message for a defined header, fast access !

  Parameters:
    idx - The index of the well-known header to check.
  Returns:
    true if the header is defined, false otherwise.

notifyHeader

     public void notifyHeader(String name,
                              byte buf[],
                              int off,
                              int len)

  MimeHeaderHolder implementation - The MIME parser callback. This method is called if the HttpMessage is created by parsing an input stream. Each time the MIME parser detects a new header field, it calls back this method.

  Parameters:
    name - The name of the header that has been encountered.
    buf - The buffer containing the header value.
    off - The offset of the header value in the above buffer.
    len - The length of the header value in the above buffer.

notifyBeginParsing

     public boolean notifyBeginParsing(MimeParser parser) throws HttpParserException, IOException

  MimeHeaderHolder implementation - HTTP message about to be parsed. No further action is required at this point (we do not distinguish between request or reply here). The MIME parsing is to continue normally so we return false.

  Returns:
    Always false to conotinue the MIME parsing.

notifyEndParsing

     public void notifyEndParsing(MimeParser parser) throws HttpParserException, IOException

  MimeHeaderHolder implementation - HTTP message parsing done. Nothing special to be done here, return straight.

startEmit

     protected void startEmit(OutputStream out,
                              int what) throws IOException

  This message is about to be emited. Take any appropriate actions.

endEmit

     protected void endEmit(OutputStream out,
                            int what) throws IOException

  This message has been emited. Take any appropriate action.

emitHeaders

     protected void emitHeaders(OutputStream out,
                                int what) throws IOException

dump

     public void dump(OutputStream out)

emit

     public void emit(OutputStream out) throws IOException

  Emit this message to the given output stream. This methods emits the given message to the stream, after invoking the `startEmit` method. Once the whole message has been emited, the `endEmit` method is called back.

  Parameters:
    out - The output stream to emit the message to.
  Throws: IOException
    If the message couldn't be emited to the given stream, due to IO errors.

emit

     public void emit(OutputStream out,
                      int what) throws IOException

setCacheControl

     public void setCacheControl(HttpCacheControl control)

  Header accessor - set the cache control associated with the message. This method should not be used in general, it's much more preferable to use the various cache control accessors available.

  Parameters:
    control - The cache control policy, or null to reset the value.

getCacheControl

     public HttpCacheControl getCacheControl()

  Header accessor - get the cache control policy.

  Returns:
    The current cache control policy, or null if undefined.

setMaxAge

     public void setMaxAge(int maxage)

  Set the `max-age` value of the associated cache control. This method hides as much as possible, the difference between HTTP/1.1 max-age, and HTTP/1.0 expires headers. It will set only the appropriate one.

  Parameters:
    maxage - The max-age value, or -1 to reset the value.

getMaxAge

     public int getMaxAge()

  Get the `max-age` value for the current cache control.

  Returns:
    The max age value, as an integer, or -1 if undefined.

getNoCache

     public String[] getNoCache()

  Get the `no-cache` directive of the cache control header.

  Returns:
    A list of token (potentially empty) encoded as an array of String (with 0 length if empty), or null if undefined.

setNoCache

     public void setNoCache(String nocache[])

  Set the `no-cache` directive of the cache control header.

  Parameters:
    nocache - A list of headers name encoded as an array of String (of length possibly 0), or null to reset the value.

setNoCache

     public void setNoCache()

  Set the `no-cache` directive globally.

addNoCache

     public void addNoCache(String name)

  Add the given header name to the `no-cache` directive.

  Parameters:
    name - The header name to add there.

checkNoStore

     public boolean checkNoStore()

  Check the `no-store` directive of the cache control header.

  Returns:
    A boolean true if set, false otherwise.

setNoStore

     public void setNoStore(boolean onoff)

  Set the `no-store` directive.

  Parameters:
    onoff - Turn it on or off.

checkOnlyIfCached

     public boolean checkOnlyIfCached()

  Check the `only-if-cached` directive.

  Returns:
    A boolean, true if the directive is set, false otherwise.

setOnlyIfCached

     public void setOnlyIfCached(boolean onoff)

  Set the `only-if-cached` directive.

  Parameters:
    onoff - Turn it on or off.

setConnection

     public void setConnection(String tokens[])

  Header accessor - set the connection header value.

  Parameters:
    tokens - The connection tokens as a String array, or null to reset the value.

getConnection

     public String[] getConnection()

  Header accessor - get the connection header value.

  Returns:
    The tokens of the connection header, as a String array, or null if undefined.

addConnection

     public void addConnection(String name)

  Add the given header name to the `Connection` header.

  Parameters:
    name - The name of the header to add to the `Connection` header.

hasConnection

     public boolean hasConnection(String tok)

  Does the connection header include the given token ?

  Returns:
    A boolean.

setProxyConnection

     public void setProxyConnection(String tokens[])

  Header accessor - set the proxy connection header value.

  Parameters:
    tokens - The connection tokens as a String array, or null to reset the value.

addProxyConnection

     public void addProxyConnection(String name)

  Add the given header name to the `Proxy-Connection` header.

  Parameters:
    name - The name of the header to add to the `Proxy-Connection` header.

getProxyConnection

     public String[] getProxyConnection()

  Header accessor - get the proxy connection header value.

  Returns:
    The tokens of the connection header, as a String array, or null if undefined.

hasProxyConnection

     public boolean hasProxyConnection(String tok)

  Does the proxy connection header defines the given token.

  Parameters:
    tok - The token to check for.
  Returns:
    A boolean.

setDate

     public void setDate(long date)

  Header accessor - set the date of this message.

  Parameters:
    date - The date of the message, following Java runtime conventions (number of milliseconds since epoch), or -1 to reset the value.

getDate

     public long getDate()

  Header accessor - get the date of this message.

  Returns:
    A long giving the date of this message, following the Java runtime convention (milliseconds since epoch), or -1 if undefined.

setPragma

     public void setPragma(String tokens[])

  Header accessor - set the pragmas applicable to this message.

  Parameters:
    tokens - The pragma tokens as a String array, or null to reset the value.

getPragma

     public String[] getPragma()

  Header accessor - get the pragmas applicable to this message.

  Returns:
    The pragma tokens applicable to this message, encoded as a String array, or null if undefined.

hasPragma

     public boolean hasPragma(String pragma)

  Header accessor - Check for a given pragma.

  Parameters:
    pragma - The pragma to check for.
  Returns:
    A boolean true if this pragma is set, false otherwise.

addPragma

     public void addPragma(String name)

  Add the given directive to the `Pragma` header.

  Parameters:
    name - The name of the directive to add to the `Pragma` header.

setTransferEncoding

     public void setTransferEncoding(String tokens[])

  Header accessor - set the transfer encoding for this message. This just sets the transfer encoding, it is up to the rest of the application to make sure that the encoding is actually applied at emiting time.

  Parameters:
    tokens - The transfer encoding tokens as a String array, or null to reset the value.

getTransferEncoding

     public String[] getTransferEncoding()

  Header accessor - get the transfer encoding applying to this message.

  Returns:
    The list of encoding tokens, as a String array, or null if undefined.

hasTransferEncoding

     public boolean hasTransferEncoding(String encoding)

  Header accessor - Check for a given transfer encoding.

  Parameters:
    encoding - The pragma to check for.
  Returns:
    A boolean true if this encoding is set, false otherwise.

setUpgrade

     public void setUpgrade(String products[])

  Header accessor - set the upgrade header of this message.

  Parameters:
    products - An array of products you want this message to carry or null to reset the value.

getUpgrade

     public String[] getUpgrade()

  Header accessor - get the upgrade header of this message.

  Returns:
    A list of products, encoded as an array of String or null if undefined.

setVia

     public void setVia(String vias[])

  Header accessor - set the Via header of this message.

  Parameters:
    vias - The hops to be placed in the `Via` header, or null to reset the value.

getVia

     public String[] getVia()

  Header accessor - get the via header of this message.

  Returns:
    A Via array describing each hop of the message, or null if undefined.

addVia

     public void addVia(String via)

  Add a via clause to the via header.

  Parameters:
    via - The new via clause.

getProtocol

     public HttpBag getProtocol()

  Get the set of protocol extensions that have been applied to that that message.

  Returns:
    A bag containing the description of the protocol extensions applied to that message, or null.

setProtocol

     public void setProtocol(HttpBag bag)

  Set the protocol extensions applied to that message.

  Parameters:
    protocols - A bag instance, describing the protocol extensions applied to the message, or null to reset previous value.

getProtocolRequest

     public HttpBag getProtocolRequest()

  Get the set of protocol extensions requested by this message.

  Returns:
    A bag containing the description of the protocol extensions requested by this message, or null.

setProtocolRequest

     public void setProtocolRequest(HttpBag bag)

  Set the protocol extensions required by this message.

  Parameters:
    protocols - A bag instance, describing the protocol extensions required by the message, or null to reset previous value.

getProtocolInfo

     public HttpBag getProtocolInfo()

  Get the protocol extensions informations carried by this message.

  Returns:
    A bag containing the description of the protocol extensions informations carried by that message, or null.

setProtocolInfo

     public void setProtocolInfo(HttpBag bag)

  Attach protocol extensions informations to that message.

  Parameters:
    protocols - A bag instance, describing the protocol extensions informations to attach to the message, or null to reset previous value.

getProtocolQuery

     public HttpBag getProtocolQuery()

  Get the set of protocol extensions that are queried through this message.

  Returns:
    A bag containing the description of the protocol extensions queried by that message, or null.

setProtocolQuery

     public void setProtocolQuery(HttpBag bag)

  Set the protocol extensions queried by that message.

  Parameters:
    protocols - A bag instance, describing the protocol extensions queried by the message, or null to reset previous value.

getTrailer

     public String[] getTrailer()

  Get this message trailer

  Returns:
    A list of encoding tokens, encoded as a String array, or null if undefined.

setTrailer

     public void setTrailer(String trailers[])

  Set this message trailer

  Parameters:
    encodings - A list of encoding tokens, encoded as a String array or null to reset the value.

getSetCookie

     public HttpSetCookieList getSetCookie()

  Get the value of the SetCookie header.

  Returns:
    AN HttpSetCookie instance, or null if undefined.

setSetCookie

     public void setSetCookie(HttpSetCookieList setcookie)

  Set the value of the Set-Cookie header.

  Parameters:
    setcookies - The HttpSetCookie value.

getCookie

     public HttpCookieList getCookie()

  Get the cookies attached to that message.

  Returns:
    An instance of HttpCookie holding the list of available cookies, or null if undefined.

setCookie

     public void setCookie(HttpCookieList cookie)

  Set the cookies attached to this message.

  Parameters:
    cookies - The HttpCookie instance describing the cookies, or null to reset value.

getVersion

     public String getVersion()

  Get the String identifying the HTTP version used for this message.

  Returns:
    A String identifying the protocol version.

getMajorVersion

     public short getMajorVersion()

  Get the major version number of this message. This method returns the major version that the caller should use to drive message processing. It may not match the version number actually emitted on the wire, which is computed by the API itself.

  Returns:
    A ninteger giving the major version number.

getMinorVersion

     public short getMinorVersion()

  Get the minor version number of this message. This method returns the minor version that the caller should use to drive message processing. It may not match the minor version number emitted on the wire, which is computed by the API itself.

  Returns:
    An integer giving the minor version number.

getEmitDate

     public long getEmitDate()

  Get the date at which this message was last emitted, if ever it was.

  Returns:
    The date, in milliseconds since Java epoch at which this message was emitted, or -1 if the message was never emitted.

    All Packages  Class Hierarchy  This Package  Previous  Next  Index